hook逆向安卓app提供签名api
前言
好久没写博客了,最近研究了nacos写了一点项目,本想写上博客了,实在是太懒了,最近,研究了怎么破解某电商app,因为用的工具和方法实在不熟悉,所以还是写上记录上吧!
准备环境
安装frida
frida是hook用的超吊的工具类,不过是python工具包,怎么安装python的就不演示了,直接安装
1 | pip install frida |
安装frida工具包
1 | pip install frida-tools |
查看版本,验证是否安装成功,记住这个版本非常重要
1 | C:\Users\12736>frida --version |
好了,工具安装完成,接下来需要安装安卓frida驱动
安装安卓环境
因为,我们是hook安卓手机,所以安卓手机需要安装一个驱动,并执行,主要安卓手机必须root。我们去githup下载–>
https://github.com/frida/frida/releases,网页搜索server,注意,看到版本没,这里的版本要和你python安装的版本一致
找到自己的安装手机架构下载解压,使用adb push到安卓手机/data/local/tmp
路径下,没有adb自己下载
1 | E:\apk\frida-server-15.1.12-android-arm64>adb push ./frida-server-15.1.12-android-arm64 /data/local/tmp |
进入adb shell,执行su获取root权限,改名并给权限,改名是为了防止app检测
1 | E:\apk\frida-server-15.1.12-android-arm64>adb shell |
启动fs,并设定一个端口号,这一步还是为了防止app检测
1 | cepheus:/data/local/tmp # ./fs -l 127.0.0.1:9999 |
执行可能报错,不慌查看当前shell模式
1 | getenforce |
如果是Enforcing,执行
1 | setenforce 0 |
再次查看就是Permissive,再次执行frida脚本即可,手机部分另开一个cmd,开始进行实际的hook操作
开始hook
基础准备
环境准备完毕,另开一个cmd,开始做准备工作。因为我们是连接手机hook,所以需要转发端口,可以理解为开端口,端口就是你手机fs启动时设置的
1 | adb forward tcp:9999 tcp:9999 |
接下来可以使用frida-ps看包名,找到我们想要hook的包
1 | frida-ps -H 127.0.0.1:9999 |
能执行上面的命令说明fs启动成功,并可以hook。frida支持shell hook,我们还是直接使用代码比较方面。
不过,想要hook app,我们首先要明确,要hook的位置,就是哪个类、哪个方法、参数是什么。这个才是最难的地方,一言两语无法说清,抽时间在写吧。
代码hook
其实代码是很公式的,直接放出来解释,是python脚本
1 | import frida, sys |
先不看jscode脚本,先看python代码,调重要的说
第一步 、连接fs,并指定包名
这个其实没什么好说的。ip端口是你手机启动fs设置的,包名则是你想要hook的app包名。可以使用frida-ps -H 127.0.0.1:9999
找到
1 | session = frida.get_device_manager().add_remote_device('127.0.0.1:9999').attach('包名') |
第二步、设置需要hook的类
这里的是全路径名
1 | var checkHookG = Java.use('package+类'); |
第三步、hook方法
这里填你要hook的方法名称,注意参数一定要写
1 | checkHookG.方法名.implementation = function (参数) { |
第四步、hook的动作
其实没什么好说的,其实就是打印参数,然后还可以执行方法,查看方法返回值,是不是我们想要的。
rpc调用
有时间在学写