HOOK
配置frida和一些前期准备工作:
⼀、Frida安装
环境:具有python环境
设备:需要ROOT
⼯具:frida(⽬前版本最稳定的为16.1.10,其他版本有的会报各种错误)
服务端安装(PC)
⾸先进⾏安装Frida,需要⼤家有Python3环境即可。
pip install frida==16.1.10 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install frida-tools==12.1.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
客户端安装(Android)
安装完之后确认⼿机架构,这⾥使⽤模拟器来操作。
可以注意到如果没有直接进行root用可以进行外部进行root即:
adb root
然后执行命令:
getprop ro.product.cpu.abi
执行 getprop ro.product.cpu.abi
命令的意义是获取设备 CPU 的应用程序二进制接口(ABI)类型
如图为x86_64架构
在官网下载好对应的版本后进行push
F:\tools\adb>adb push frida-server-16.1.0-android-x86_64.xz /storage/emulated/0/
frida-server-16.1.0-android-x86_64.xz: 1 file pushed, 0 skipped. 27.4 MB/s (31602724 bytes in 1.100s)
F:\tools\adb>
导⼊到⼿机之后要添加权限并且运⾏(这⾥要记得更换⼀个⽬录去运⾏)。
unxz frida-server-16.1.0-android-x86_64.xz
然后进行运行
⼆、Frida使⽤
新开一个终端窗口,执行:
adb forward tcp:27042 tcp:27042 # 端口转发
frida-ps -U # 列出设备进程
三、HOOK基础操作
抓包:
找出对应程序的代码:
先pull:
随后将脱下来的apk进行反编译并寻找关键词:
尝试进⾏hook对应的APP操作:
frida -U -f "com.nd.android.pandareader" -l "xxxx01.js"
xxxx01.js:
Java.perform(function () {
let k = Java.use("com.baidu.shucheng91.download.k");
k["b"].overload('java.lang.String', 'java.util.Map').implementation = function (str, map) {
console.log(`k.b is called: str=${str}, map=${map}`);
let result = this["b"](str, map);
console.log(`k.b result=${result}`);
return result;
};
});
随后在cmd中运行即可:
hook概念:
即在程序中插入代码块进行调试,对程序的动作进行监控和调试,修改程序某些行为动作