-
1.当我们对莫个app进行frida hook的时候,如果已启动hook脚本,app就自动退出了。这个时候可能就是app对frida进行了反调试。
-
2.如何解决这种问题呢?
- 反调试一般在so中实现,如果有frida使用,就给关闭
- app启动过程中,都有加载so文件
- 下面的问题是如何找到反调试的so文件
-
3.hook app运行过程中加载了哪些so文件
- 3.1:加载so文件hook脚本
import frida
import sys
rdev = frida.get_remote_device()
pid = rdev.spawn(["包名"])
session = rdev.attach(pid)
scr = """
Java.perform(function () {
var dlopen = Module.findExportByName(null, "dlopen");
var android_dlopen_ext = Module.findExportByName(null, "android_dlopen_ext");
Interceptor.attach(dlopen, {
onEnter: function (args) {
var path_ptr = args[0];
var path = ptr(path_ptr).readCString();
console.log("[dlopen:]", path);
},
onLeave: function (retval) {
}
});
Interceptor.attach(android_dlopen_ext, {
onEnter: function (args) {
var path_ptr = args[0];
var path = ptr(path_ptr).readCString();
console.log("[dlopen_ext:]", path);
},
onLeave: function (retval) {
}
});
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
rdev.resume(pid)
sys.stdin.read()
-
3.2:运行上面的脚本,我们可以看到app启动过程中加载的所有so文件
-
3.3:如上图,可以看到app运行加载的所有so文件,我们从后往前一个个查看,找与app相关的,于是,我们试着删除最后一个libmsaoaidsec.so文件
-
3.4:找到app相关so文件的路径,删除对应的so文件
- adb shell pm path com.hupu.shihuo
- adb shell
- su
- cd /data/app/.../arm64
-
4.删除libmsaoaidsec.so文件后,再次hook。发现app正常运行