安装Python
安装Frida
1 | pip install frida |
转发端口
1 | adb forward tcp:27042 tcp:27042 |
查看手机安装的应用
1 | frida-ps -aU |
附加进程
1 | frida -U -f com.kuaiduizuoye.scan --no-pause |
Java
构造函数
方法
成员变量
Native
Native分两种情况
- 导出函数
- 未导出函数
若为导出函数可直接使用函数名作为Hook的参数
若为未导出函数,则需要用到地址。
每次加载So到内存,虚拟机都会为其分配个地址,为基地址。
地址为:基地址+相对地址(不同平台不同)
在Frida中有两种计算方式
- 手动
- Frida自动
手动方法如下
查看进程pid(第二个数字)1
ps | grep com.kuaiduizuoye.scan
查看基地址1
cat /proc/2275/maps |grep libanti_spam.so
自动方法如下
Module.findBaseAddress(“libanti_spam.so”).add(0x00001ddc)
可参考的模板代码
1 |
|
附可用的虚拟机
- Genymotion
- samsung s8 8.0 arm
- nexus5 5.1 x86
逍遥模拟器
可以使用的真机
- 小米Note (4.4.4版本不行,升级最新版本的开发板即可,armeabi-v7a)
逍遥模拟器对apk中的so好像不支持。。。其他的话,貌似都是可以了。
Genymotion的话,有限制apk得安装x86的框架才能安装没有x86架构的apk。
来自Frida的解释点我
https://github.com/frida/frida/issues/295
https://github.com/frida/frida/issues/192
常见BUG
- 不适配或者系统不适合的机型,一附加会导致手机或虚拟机重启
- 最新版本的frida(12.5.6)native层经常hook失败或者卡死~~~
tips
鉴于大家进来看这篇文章都是从知乎引流过来的,那么给个提示,那就是:一样的。你懂得