当前位置:首页>安卓APP>【安卓逆向】某旅行平台反调试绕过

【安卓逆向】某旅行平台反调试绕过

  • 2026-08-11 04:49:07
【安卓逆向】某旅行平台反调试绕过

介绍

本文先分析反调试,抓包以及加密后面再出吧

过程

现象

首先看下启动frida以及注入脚本等,app和frida的现象。

启动frida-server,然后打开App发现frida和app都是正常状态,说明目标应用没有检测server的任何特征

接着启动frida客户端,选择不注入脚本,两者也没有被杀死或者闪退

最后注入js或者空js脚本情况下,frida被杀死

这里就得出了个结论

App 检测的是 Frida 在运行 JS 时暴露的特征,而不是server、或者本身

注入js后流程

PC 端 frida 命令 → 通知手机 frida-serverserver 向 APP 进程 注入 frida-agent.soagent 启动 gum-js 虚拟机Frida 创建工作线程

Frida 在运行 JS 时暴露的最明显特征就是 gum-js-loop 线程 以及内存里面出来的那些字符串: gum frida

方案

隐藏掉线程名、去掉内存里面一些 检测字符串即可

console.log("[*] Starting Frida detection bypass...");var pthread_setname_np = Module.findExportByName("libc.so", "pthread_setname_np");if (pthread_setname_np) {    Interceptor.attach(pthread_setname_np, {        onEnter: function(args) {            var name = args[1].readCString();if (name && name.indexOf("gum") !== -1) {                console.log("[!] Blocked thread name: " + name);                var fakeName = "JDWP-handler";                args[1] = Memory.allocUtf8String(fakeName);            }        }    });}var strstr = Module.findExportByName(null, "strstr");if (strstr) {    Interceptor.attach(strstr, {        onEnter: function(args) {            var haystack = args[0].readCString();            var needle = args[1].readCString();if (needle && (needle.indexOf("gum") !== -1 ||                          needle.indexOf("frida") !== -1)) {                console.log("[!] strstr: " + haystack + " -> " + needle);                this.bypass = true;            }        },        onLeave: function(retval) {if (this.bypass) {                retval.replace(ptr(0));            }        }    });}

广子

❝

有需要用于爬虫、逆向、抓包的测试机又不想花时间折腾Root、刷机、环境配置可以来看下下面联系方式,或者B站视频评论区见

最新文章

随机文章