# re-mobile 经验全集 > 条目含来源与日期;入库前 grep 去重。格式: **标题**:现象——…;原因——…;对策——… ## 2026-09-01 · 会话复盘 **字符串保护三形态(别假设全加密)**:现象——strings 扫 .rodata 有大量可打印串但多数"看着乱",判定全加密;原因——商业应用字符串是混合存储: 明文表(运行时类名/路径/调试串)+ 轻量变换(位移存储/首字节标记,可打印域内)+ 真加密(高熵块,运行时密钥);对策——先静态分层: ① dump .rodata 全量串 ② 按可读率分类(1.0=明文,0.9+=轻量变换,<0.5=真加密)③ 明文/变换串静态全提取,真加密串定位其运行时解密运算(movz/movk 链 + eor)判断密钥可静态求值还是运行时生成。来源:Android 商业应用保护体系分析实战 **环境检测错误码反推检测点**:现象——初始化函数返回神秘负数(-1005 之类),找不到检测逻辑;原因——错误码常由公式产生(`-1000 - errno`),errno 来源即检测点;对策——反汇编找错误码常量(movn/mov 立即数),沿公式反推上游调用: 本例 `movn wN,#0x3ec` 生成 -1005,上游 `bl chdir(虚拟FS)` 失败返回 errno。绕过: hook 判断点(分支条件)而非被 hook 函数——hook 函数本身会跳过其副作用导致后续状态缺失。来源:Android 商业应用保护体系分析实战 **模拟器 svc 断点≠崩溃**:现象——unidbg 批量裸调用时频繁 "debugger break at: 0xfffe0xxx",误判为崩溃跳过;原因——unidbg 的 JNI API 以 svc 实现(0xfffe0xxx 区),调用它们时调试器打印断点,函数实际正常执行并返回;对策——区分: svc 区断点=JNI 调用(正常),Invalid memory fetch/read=真崩溃;判断函数可执行性看返回值是否产出,不看断点打印。来源:Android 商业应用 native 层分析实战