分析对象: sub_1B924 及其完整调用链(so文件见附件) 分析目标: 还原代码逻辑、提取核心对抗算法、复现 Shellcode、制定防御策略分析深度: 指令级/内核级技术标签: Anti-Frida, Watchdog, Shellcode Injection, State Machine, ELF Parsing, Ptrace说明: 仅作为安全技术交流,如有侵权联系删除经过对提供的 C 伪代码进行逐行审计和静态还原,确认该模块是一个针对 Frida 框架的高级主动防御引擎。这是防御逻辑的起点。代码通过极其繁琐的步骤来隐藏其真实意图。攻击者没有将字符串存储在 .rodata 段,而是通过硬编码的十六进制数在栈上动态还原。 代码定位:解密算法:还原结果:在启动核心逻辑前,代码执行了严格的环境检查。 此函数负责定位攻击目标,并启动看门狗线程。它是连接初始化与监控的桥梁。Android 7.0+ 引入了 Linker Namespace,禁止 APP 直接 dlopen 系统私有库(如 libart.so)。 这是一个死循环函数 (__noreturn),负责全方位的环境扫描。 初始化:解密出一系列黑名单字符串(如 "Xposed", "Frida", "Magisk")。循环体 (while(1)):这是整个防御体系中最坚固、最隐蔽的堡垒。它通过状态机混淆控制流,通过动态 Shellcode 执行处决。函数内部维护一个状态变量 v4,初始状态为 293539132。当检测到 Hook 时,代码会解密并执行一段 Shellcode。我们完全静态还原了这段代码。步骤 A: 提取密钥 代码逻辑:v10 = *((_DWORD *)&qword_30794 + v8 + -3 * (v9 / 3) + 1);步骤 B: 数据解密 源数据位于 xmmword_30760。代码首先将首字节置为 0x08。步骤 C: 最终修正 (The Final Trick) 代码执行:*(_DWORD *)v16 += 3008; (对前4字节进行整数加法)。步骤 D: 最终载荷 (The Payload)将结果解释为 ARM64 汇编:如果配置不允许 Hook(状态码非 249),程序会进入备用防御模式。 针对“看门狗+自爆”架构,最优雅的破解方式是让看门狗失效。v27 = 0xA700000099LL; // 密钥低位 0x99, 高位 0xA7
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289316.htm
[原创]某安全so库深度解析
54 浏览
12 回复
感谢分享
感谢分享
感谢分享
学习学习
学习一下
大佬厉害
```
感谢~
感谢分享
感谢分享,很有用的帖子
thanks
感谢分享