AI 自动化逆向(三十三)换一个「驱动器」,覆盖率跳了一个量级
本文是「AI 自动化逆向」系列第 33 篇。上一篇:一次布 60 个点:怎么知道丢了几次命中;下一篇预告:自建指令缓存:把分钟级查询压到秒级。
前言
上一篇把观测端修好了——丢事件的问题解决了。可修好观测端之后,一个更上游的问题浮出来:
覆盖率上不去。而绝大多数时候,人和 AI 的反应是同一个字:按——按更多的键、更长的序列、更复杂的组合。
这一篇讲一个把这条路直接掀掉的发现:覆盖率的瓶颈往往不在观测端,在"驱动端"。
(同前几篇:文中"AI"指执行分析的模型,"我"指设定目标、审结果的人;按本系列纪律,本篇只讲实验设计思想,不涉及任何具体通道、端点或命令。)
一、AI 在这里踩的坑:拼命"按"的天花板
这个项目有一段时间,动态覆盖全靠"模拟用户操作":把猜测的快捷键、组合键一个个按过去,看能不能撞上更多被执行的目标。账本是这样的:
- 一轮扫描,七十多次组合键、每个开/关各一次——零新增;
- 一次"自动战斗"整整开过几分钟——什么都没触发(因为那个功能要先有"目标"才真正开打);
- 三拨、更多的键、更长的窗口——并集原地不动。
为什么"按"会停在一个数上?答案是给没触发的目标做了一次分类:
- 按界面注册的:打开某个屏幕时才会跑——它等的是"某个界面被打开";
- 由外部消息/数据驱动的:它等的是系统的输入(比如服务端说的话),不是键盘;
- 只被脚本调用的:它等的是脚本层的动作。
看明白了吗——这三类里,没有一类是"按键"能到达的。键盘的射程到此为止,再按一万次,也不会有一个新增。
顺带,"按"这条路还有两个又贵又脆的老毛病:
- 环境耦合:组合键会撞上别的软件的全局热键(那次撞键让一轮扫描的读数整个作废——环境里的无关程序能直接影响你的实验);
- "按对键"的答案不用猜:这个程序自己带了一层快捷键说明——一个开关键呼出,画面上把每个功能对应的键全标出来。这是免费的 ground truth;而且它还是画面证据——证明按键确实到达了程序(比"我按了"硬得多)。
(记住这个从代码里挖表——和让程序自己把表画出来——的对比:后者更全、更便宜。第 16 篇那把尺子在这里量的是"真值来源"。)
二、过程:从"按"到"驱"
停在天花板上之后,设计问题变了。不再问"还能按什么键",而是问:
还有什么东西,能改变系统的状态?
顺着刚才的三类目标反推它们的"上游":要打开界面、要系统的输入、要脚本的动作——那这些上游本身,能不能被批量、编程化地触发?
由此得到一个明确的换法:
- 旧驱动模型:模拟用户——每个状态变迁都要在真实 UI 上一动作一动作走一遍;成本极高,可达集还被界面本身限制;
- 新驱动模型:按系统建模、批量触发——找到一个更高层、可编程的通道,按"系统"(地图、战斗、物品、技能……)逐个批量地驱动状态变迁。
一句话概括这个设计思想的杠杆率:能改变系统的入口从来不止一个;最贵的入口是"模拟人",最便宜的入口是"系统自己的通道"。
两点必须说清的边界:
- 换的只是驱动端。观测端那一整套纪律——布点时机、丢失对账、三态数据——一条都不能省(上一篇)。换驱动不是省掉验证,是把验证放到更大的舞台上去做。
- "新通道存在"本身要先被证明:能打开、能下发、下发确实改变了状态——同款证据纪律(第 23 篇:先找"谁能动它",再谈怎么动)。
三、判据与验证:四条
1. 覆盖推不动时,先给"推不动"归因。把未触达目标做分类——如果剩余目标的驱动来源不是你正在用的那一种,再加努力也是零。分类是换驱动的前置动作。
2. 换驱动源,优先于加强现有驱动。穷举输入的边际收益迟早归零:与其在同一个入口上更用力,不如先问"还有没有另一根杠杆"。
3. 便宜的真值先捡。程序自带的说明层 / 快捷键表 / 帮助界面——如果它能自己把答案画出来,就别再从代码里挖。
4. 驱动换、判据不换。时机、对账、三态——观测端的账本原样保留,只把"谁在开车"换掉。
四、结论
这个系列从第 1 篇讲到现在的那些"金句"里,这一条是隐藏最深、杠杆最大的:
AI 在穷举输入上花的力气,往往不如换一个驱动源。
覆盖率不是"输入了多少"的函数,是"驱动了多少种状态变迁"的函数——而状态变迁的入口,值得在动手之前先"清点"一遍。
五、边界声明
- 本文只讨论AI 自动化逆向中的判据设计与审核方法,不涉及任何具体产品、厂商或服务的分析结论。
- 文中所有地址、偏移、常量、字段名一律为占位符或示意值,
不代表任何真实目标中的取值;示例代码为说明判据而编写,不构成可运行的针对特定目标的工具。 - 文中提到的比例与数字均来自作者项目内的测量记录,仅用于说明方法失效的方式。
- 请勿将本文内容用于未授权的用途。
六、收尾
驱动的问题讲完了。下一篇回到工具链,讲一件自建的基础设施——它把"分钟级"的查询压到"秒级",让上面所有这些"当场重跑、当场对账"的纪律付得起:自建指令缓存。
下一篇计划聊:自建指令缓存:把分钟级查询压到秒级。
转载请注明出处:
https://lizhiyong.blog.csdn.net/article/details/169268880