Memory Integrity Bypass

内存完整性校验(.text 校验/CRC 自校验)对抗方法论(供安全研究/自有应用)。当加固会扫描代码段检测你是否 patch 过 SO/dex(inline hook 或字节修改被发现导致闪退)时,用于分析校验点、维持内存视图一致性、绕过完整性检测。涵盖 .text CRC 校验、mprotect 监控、双映射思路。

xiamiya dc86b5b 1.9 KB Updated

File contents

内存完整性校验绕过

现代加固会自校验代码段(读 .text 算 CRC/哈希,和预存值比对),一旦发现你 inline hook 或改了字节就闪退。这个技能教你分析和对抗。

一、先搞清校验类型

类型 检测什么 触发点
.text CRC 自校验 代码段字节被改(inline hook/patch) 启动时、定时、关键函数前
dex CRC dex 被改/重打包 类加载时
GOT/PLT 校验 导入表被改(符号 hook) 调用敏感函数前
maps 扫描 检测非预期的可写代码段(frida/hook 框架) 定时轮询 /proc/self/maps

二、定位校验代码

  1. 现象:单独运行正常,一 hook/patch 就崩 → 有完整性校验。
  2. rev-symbol/IDA 搜特征:crc32 ...[612 chars omitted]... 射方案(原始页给校验读,执行走 patch 页),复杂但最彻底。

四、推荐顺序

  1. 先试改校验逻辑本身(最简单)——nop 掉校验、或 patch 比对跳转。
  2. 校验分散/多处 → 用 Frida 动态 hook 校验函数统一返回正确值。
  3. 校验读原始文件对比 → 改成不落地的纯内存 hook(Frida inline hook 不改磁盘)。
  4. 都不行再上双映射/影子页(配合 kernel-system-hook)。

五、验证

每绕一层后:目标功能是否正常、有没有延迟闪退(有些校验是定时的,跑几分钟再看)。

边界

用于自有 App / 授权样本的加固机制研究、hook 对抗学习、安全评估。不协助破解他人付费/侵权。

xiamiya/mhook/tree/main/app/src/main/assets/skills/memory-integrity-bypass commit dc86b5b04a

Frequently asked questions

npx skillmds@latest add xiamiya/memory-integrity-bypass