AI 自动化逆向(二十八)先量保护面,再决定要不要脱壳
本文是「AI 自动化逆向」系列第 28 篇。上一篇:一个地图格式族的三角关系;下一篇预告:受保护区间的真实形状是「夹层」。
前言
数据讲完了,从这一篇走向代码。第一问是最实际的那种:
目标里有一块"被保护起来、读不出来"的区域。要不要硬啃它?
AI 在这类问题上的反应很一致——把"保护"当成一个全局障碍:读不出来就是"整体不可分析",然后要么绕开一切、要么直奔"脱壳"这条最重的路。
正确的第一动作只有一个:先量。
(同前几篇:文中"AI"指执行分析的模型,"我"指设定目标、审结果的人;内容均已脱敏。)
一、AI 在这里踩的坑:三种错法,一个根源
围绕"保护面",项目里栽过三种错法。
错法一:拿"保护区的体积"当"保护范围"
最早有一版计算:保护区约 0.9MB,明文代码约 2.6MB——“保护区只占两者之和的 26% 左右,所以74% 的代码都是明文的,壳不是障碍!”
听起来合理极了。方法本身是错的:那块保护区里绝大部分是保护器自己的"解释器"和派发网——是保护者自己的机器,不是"被保护的原始代码"。
把"转移"归并到函数上重数,真实数字是:代码段的 3% 量级——和 26% 的估计差了八倍多。
节区大小 ≠ 保护范围。 范围是"哪些代码被弄进了保护区",必须按函数归并着数,不能拿一块内存的体积顶替。
错法二:把"读不出来"升级成"整体不可分析"
工具在保护区里的自白(“控制流跟到了不存在的地址”“无法读取字节”)被读成了"这个目标整体不可静态分析"——于是整条路线都按"黑箱"来规划。这是第 1 篇陷阱 3 的完整现场:工具读不出来是工具层面的正常反应,不是给你下"全局判决"。
错法三:把"包围"说成"解决了"
"不需要脱壳"这句话在这个项目里出现过很多次。它的真实身份是:
一个包围决策(containment)——知道边界在哪、决定不进去、用别的路绕。
而不是 “解开了(solved)”。两者混为一谈的后果很具体:后来的会话不再回头看它——整个区域被一句话冻结,谁也不知道它到底是"已知的墙"还是"没人看的门"。
二、过程:把"保护面"量成一道算术题
怎么量:三步归并法
- 定位范围:哪一段是被保护的区域;
- 数转移:从明文代码区跳进保护区的转移有多少处、落在哪里——特别要分成两类数:落在函数入口的、落在函数体内的(这一步直接定性"换头式"还是"分支级");
- 归并到函数:把转移按函数合并——被触及的函数有几个、占全部函数的多少、占代码字节的多少。只有这一步的输出才叫"保护面"。
量出什么(形状)
- 转移:一千六百多处,落在一千四百多个不同的入口上;
- 其中落在函数入口的只有 3% 出头——分支级为绝对主流:绝大多数被触及的函数,只是体内被零星换桩,不是整个函数被搬走;
- 被触及函数:一百来个——占全部函数(一万七千多个)的不到 1%,占代码段的 3% 量级。
于是决策自己浮出来了:为 3% 走"脱壳"这条最重的路,不划算。 能读的照读;被护住的那一小块,用别的证据绕——咬合验证、动态闭环(第 20 篇那套)。
顺带量的"形态":为什么敢说"它不是整文件加壳"
两条独立检查也给了一致的方向:
- 入口点不在保护区内(整文件级保护器通常会把入口重定向进自己的域——这里没有);
- 没有装"开机就想跑"的守护回调(同类保护的惯用伎俩,这里也没有)。
保护是局部的——这和"3% 量级"互相印证,两路独立证据同向。
还有一条"工具级证据"值得抄
"静态提升在保护区里走不通"的最硬证据不是熵统计,是工具自己的自白:反编译器在保护区内追控制流、追到不存在的地址,把失败原样写进了日志。
工具的自述日志,比统计数字更直接。 熵值高只说明"像压缩/加密",反编译器失败说明的是"控制流本身是假的"——后者才是那一块的定性。
三、判据与验证:四条
1. 先用比例说话。 被保护字节 / 代码段字节 这个比值必须先算出来——它决定路线:3% 和 30% 是两种项目,30% 和 90% 又是两种。
2. 量范围按函数归并,不拿体积顶替。 也不许反向偷懒:“没数过"不等于"没有”(第 5 篇的老账)。
3. "包围"和"解开"分开命名。 包围决策要显式写成"已知边界 + 决定不进入 + 内容未解",并标注"这里仍然没解"。省掉最后半句,它就会腐化成"已解决"。
4. 边界双向诚实。 已证的(范围、形态、总量)和未证的(内容:指令集、处理表、运行上下文;哪些是"变形"、哪些是"虚拟化")——分开列。“已证范围"不许冒名"已解内容”。
四、结论
保护面是一道算术题,不是一道情绪题。
而"包围"既不是耻辱,也不是胜利——它是一个有账的决策:知道边界在哪、知道里面没解、知道什么条件下值得回头。量错了比例(26% 对 3%),算出来的就是另一条路线。
先量,再决定;量的是比例,决定的是路线。
五、边界声明
- 本文只讨论AI 自动化逆向中的判据设计与审核方法,不涉及任何具体产品、厂商或服务的分析结论。
- 文中所有地址、偏移、常量、字段名一律为占位符或示意值,
不代表任何真实目标中的取值;示例代码为说明判据而编写,不构成可运行的针对特定目标的工具。 - 文中提到的比例与数字均来自作者项目内的测量记录,仅用于说明方法失效的方式。
- 请勿将本文内容用于未授权的用途。
六、收尾
比例量完了,但那块区域本身还只被当作"边界"。下一篇往里看一步——那道边界里面长什么样:它既不是整齐的"代码或数据",也不是不可穿透的黑箱,它的真实形状是一个很有画面感的结构:夹层。
下一篇计划聊:受保护区间的真实形状是「夹层」。

转载请注明出处:
https://lizhiyong.blog.csdn.net/article/details/169268773
本文提出在AI自动化逆向中,面对受保护代码区域时应优先量化“保护面”而非直接脱壳。核心方法是三步归并法:定位保护区域、统计明文到保护区的转移点(区分入口/体内)、按函数归并得出真实保护比例(如3%而非体积误估的26%)。强调保护面是算术问题,需区分“包围”与“解开”,并结合工具自述日志、入口点位置等多维证据验证局部保护形态,避免全局误判。
385

被折叠的 条评论
为什么被折叠?



