Frida-基本使用方法
Frida
Frida 原理及简单使用 - Only-xiaoxiao - 博客园 (cnblogs.com)
找的一篇佬的博客
Android
基本环境创建
对于安卓模拟器:
首先需要手机端有frida server,如果是模拟器需要x86和x64的版本,如果是真机,需要arm86和arm64。然后本机需要frida。
模拟器
建立连接
在电脑端使用adb shell连接至手机端,在shell中启动frida_server,启动参数为:
1 | ./frida-server-x -l 0.0.0.0:xxxx |
启动server时,-l指定ip和端口号,,用于创建和电脑端的连接
电脑端使用adb
1 | adb forward tcp:xxxx tcp:xxxx |
和手机端建立通信完成,现在frida-server正在等待电脑的frida连接
附加进程
不过frida附加的是进程,所以先使用
1 | frida-ps -H 127.0.0.1:xxxx |
-H表示frida指定使用端口号连接目标,用ps来查看目标的进程名,
得到进程名yyy后,使用
1 | frida -H 127.0.0.1:xxxx yyy -l hook.js |
使用同样的方法附加目标的yyy进程,并直接附加脚本hook.js,这里的脚本需要指定全部路径
连接上之后应该会出现frida提示信息和字符画
之后出现的命令行可以写入任意frida-js指令
真机
建立连接,由于手机是通过usb连接的,所以先在手机端启动server。
然后
1 | frida-ps -U |
U指usb调试
取得进程名。
然后使用
1 | frida -U apk_name -l hook.js |
使用hook.js附加到apk_name进程
使用脚本
native层的Hook:
1 | function hook(){ |
在hook中写自己的代码比如:
1 | function hook(){ |
1 | xtea["encrypt"]可以通过[]取对应的方法,然后使用implementation来重写方法,后面跟一个相同传参的匿名函数,注意一定要在这个函数中调用this["encrypt"](iArr, iArr2);来调用原函数,如果这个函数有返回值可以令let retV = this["encrypt"](iArr, iArr2);再console.log出来 |
Windows
1 | var number = 0; |
上面是插指令的桩
1 | functionsToHook.forEach(functionName => { |
这是插函数的桩
未完结
评论