frida 反调试so文件删除

有些厂商安全人员会对app进行反调试限制,检测是否使用frida进行hook,这种情况下需要绕过反调试
绕过反调试方法:

  1. 找到反调试so文件进行删除(当so文件中包含业务代码是不能使用该方法)
    .... 后续补充

原理:
当app启动时会加载so文件到内存,进行frida检测,这时候需要hook安卓底层so文件,当加载到某一个so文件app闪退或者是其他无法运行的情况时,说明最后一个so文件就是对frida进行了检测

1. hook加载so文件

import frida
import sys

rdev = frida.get_remote_device()
pid = rdev.spawn(["com.xx.yy"])        # hook app包名
session = rdev.attach(pid)

#  固定写法,hook 安卓底层
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);      // 打印so文件
        },
        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);   // 打印so文件
        },
        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()

2. hook so文件记录

最后一个so文件为反调试so文件

hook打印.png

3. 删除so文件

# 进入到手机内部,删除这个so文件
adb shell

# 这个路径就是最后一个so文件的路径
cd /data/app/~~Vyyyw==/xx_vA==/lib/arm64
rm -rf libmsaoaidsec.so      # 删除

4. 重启app

重新启动app,看使用frida调试看是否还会闪退,如没有闪退表示绕过反调试成功,如还是闪退则该方法不可行,需要使用其他方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容