下载
注意:
- 要确认电脑上的frida-tools和frida-server版本相同。
- frida-server要根据手机型号选择不同的版本。
- 使用frida要先确认对应端口没被占用,暂时用到的有16001,27042,27043。
- 要记得给frida-server开权限。
- 不知道为什么,我的frida-server经常会连接不上,重启电脑后就好了,遇到问题,可以先重启试一下。
测试
- 在手机启动frida-server
./fridaserver
2. 在电脑设置连接端口和转发端口
adb connect 127.0.0.1:62001
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
3. 查看手机运行情况
frida-ps -Ua
ps.这一步很容易失败,并且监听不成功什么也做不了,如果一直失败建议重启再试,或者删了重试。
使用
使用的是js。
获取运行中的apk
import frida
import sys
rdev = frida.get_remote_device()
front_app = rdev.get_frontmost_application()
print (front_app)
遍历进程
import frida
import sys
rdev = frida.get\_remote\_device()
processes = rdev.enumerate\_processes()
for processe in processes:
print (processe)
加载指定函数
import frida
import sys
rdev = frida.get_remote_device()
session = rdev.attach("com.mfw.roadbook") # 也可以使用attach(pid)的方式
modules = session.enumerate_modules()
for module in modules:
# print (module)
if module.name=="libmfw.so":
export_funcs = module.enumerate_exports()
for export_func in export_funcs:
print ("\t%s\t%s"%(export_func.name,hex(export_func.relative_address)))
注入apk
frida -U --no-pause -f package_name -l hook_RegisterNatives.js
frida -U -f com.kuaishou.android.common.kwguard //直接注入APP 在APP里面操作
实例对象调用方法
//在堆上查找实例化的对象,示例代码如下!
Java.choose("b3nac.injuredandroid", {
onMatch: function (instance) {
console.log("Found instance: " + instance);
console.log("Result of secret func: " + instance.decrypt());
},
onComplete: function () { }
});
问题
可能会遇到的错误
frida-ps -Ua
Failed to enumerate applications: the connection is closed
因为手机的Frida版本和电脑的Frida版本不同导致的,安装相同版本的Frida就可解决。(ps.我试了不一定有用)