【APP逆向16】frida反调试

  • 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正常运行

posted @ 2024-02-27 23:27  Tony_xiao  阅读(1126)  评论(0编辑  收藏  举报