电脑和模拟器安装frida
github直达: https://github.com/frida/frida,该方式依赖于python环境,所以首先你得确保自己有python执行环境
电脑端(我的是Mac):
pip3 install frida-tools
pip3 install frida
查看电脑端安装的frida版本,到时模拟器要安装对应的server版本
pip3 show frida
�显示的我的版本:
Name: frida
Version: 15.2.2
安卓模拟器(记得在模拟器里开启root,我的mac用的mumu模拟器)安装server:
下载直达地址:https://github.com/frida/frida/releases下载
与电脑端对应版本的server, 并解压,得到releasesfrida-server-15.2.2-android-x86_64文件
模拟器一般架构是x86_64,可在设置关于手机里看到
手机端安装并启动server:
Mumu模拟器的device名字
adb connect localhost:5555 (也有可能是adb connect localhost:22471) () //连接模拟器
adb devices //查看你连接后的设置列表,我的是emulator-5554
adb -s emulator-5554 push /yourpath/releasesfrida-server-15.2.2-android-x86_64 /data/local/tmp //将文件推到模拟器安卓里
adb -s emulator-5554 shell //终端进入安卓shell环境
chmod 777 /data/local/tmp/releasesfrida-server-15.2.2-android-x86 //设置执行权限
/data/local/tmp/server文件 //安卓端启动server,启动完后其它操作均在新开的终端里执行
打开另一个终端(windows上叫命令提示符)
adb -s emulator-5554 forward tcp:27042 tcp:27042 //设置转发,必须
此时准备工作做完了,检查一下连通性,电脑端终端里输入:
frida-ps -R //检查是否连接上,如果连接上了会显示安卓里的应用信息
应用一:脱壳
安装frida-dexdump https://github.com/hluwa/frida-dexdump,这是别人写的基于frida的自动脱壳的脚本:
pip3 install frida-dexdump
在模拟器中安装你要脱壳的Apk
frida-ps -Uai //电脑终端 检查并列出包名,查看你要脱壳的包名
然后在终端里执行,如果不出错,即脱壳成功:
frida-dexdump -U -f com.app.pkgname
应用二:插桩
新建js文件,假设我知道我要hook的包名为com.myapp我知道他有一个类叫LoginActivity,我要hook它的loginSuccess方法,加上我的一些执行逻辑
Java.perform(function(){
var cls = Java.use('com.myapp.module.account.ui.activity.LoginActivity'); // package名:com.myapp.module.account.ui.activity 类名:LoginActivity
// loginSuccess 为方法名 implementation是固定写法,function为js代码
cls.loginSuccess.implementation = function (a,b) {
console.log('checkout',a,b);
console.log(this.loginSuccess);
var value = this.loginSuccess(a,b);
};
});
在模拟器打开有hook的app,开始插桩(可用上面脱壳中提到的检查连通性方法看看有没有连通):
frida -U -l /Users/tanjingning/Desktop/上面的js com.myapp