| name | memory-integrity-bypass |
| description | 内存完整性校验(.text 校验/CRC 自校验)对抗方法论(供安全研究/自有应用)。当加固会扫描代码段检测你是否 patch 过 SO/dex(inline hook 或字节修改被发现导致闪退)时,用于分析校验点、维持内存视图一致性、绕过完整性检测。涵盖 .text CRC 校验、mprotect 监控、双映射思路。 |
内存完整性校验绕过
现代加固会自校验代码段(读 .text 算 CRC/哈希,和预存值比对),一旦发现你 inline hook 或改了字节就闪退。这个技能教你分析和对抗。
一、先搞清校验类型
| 类型 | 检测什么 | 触发点 |
|---|
| .text CRC 自校验 | 代码段字节被改(inline hook/patch) | 启动时、定时、关键函数前 |
| dex CRC | dex 被改/重打包 | 类加载时 |
| GOT/PLT 校验 | 导入表被改(符号 hook) | 调用敏感函数前 |
| maps 扫描 | 检测非预期的可写代码段(frida/hook 框架) | 定时轮询 /proc/self/maps |
二、定位校验代码
- 现象:单独运行正常,一 hook/patch 就崩 → 有完整性校验。
- 用
rev-symbol/IDA 搜特征:crc32
...[612 chars omitted]...
射方案(原始页给校验读,执行走 patch 页),复杂但最彻底。
四、推荐顺序
- 先试改校验逻辑本身(最简单)——nop 掉校验、或 patch 比对跳转。
- 校验分散/多处 → 用 Frida 动态 hook 校验函数统一返回正确值。
- 校验读原始文件对比 → 改成不落地的纯内存 hook(Frida inline hook 不改磁盘)。
- 都不行再上双映射/影子页(配合 kernel-system-hook)。
五、验证
每绕一层后:目标功能是否正常、有没有延迟闪退(有些校验是定时的,跑几分钟再看)。
边界
用于自有 App / 授权样本的加固机制研究、hook 对抗学习、安全评估。不协助破解他人付费/侵权。