AI 自动化逆向(三十三)换一个「驱动器」,覆盖率跳了一个量级

AI 自动化逆向(三十三)换一个「驱动器」,覆盖率跳了一个量级

本文是「AI 自动化逆向」系列第 33 篇。上一篇:一次布 60 个点:怎么知道丢了几次命中;下一篇预告:自建指令缓存:把分钟级查询压到秒级。

前言

上一篇把观测端修好了------丢事件的问题解决了。可修好观测端之后,一个更上游的问题浮出来:

覆盖率上不去。 而绝大多数时候,人和 AI 的反应是同一个字:按------按更多的键、更长的序列、更复杂的组合。

这一篇讲一个把这条路直接掀掉的发现:覆盖率的瓶颈往往不在观测端,在"驱动端"。

(同前几篇:文中"AI"指执行分析的模型,"我"指设定目标、审结果的人;按本系列纪律,本篇只讲实验设计思想,不涉及任何具体通道、端点或命令。)

一、AI 在这里踩的坑:拼命"按"的天花板

这个项目有一段时间,动态覆盖全靠"模拟用户操作":把猜测的快捷键、组合键一个个按过去,看能不能撞上更多被执行的目标。账本是这样的:

  • 一轮扫描,七十多次组合键、每个开/关各一次------零新增;
  • 一次"自动战斗"整整开过几分钟------什么都没触发(因为那个功能要先有"目标"才真正开打);
  • 三拨、更多的键、更长的窗口------并集原地不动。

为什么"按"会停在一个数上?答案是给没触发的目标做了一次分类:

  1. 按界面注册的:打开某个屏幕时才会跑------它等的是"某个界面被打开";
  2. 由外部消息/数据驱动的 :它等的是系统的输入(比如服务端说的话),不是键盘;
  3. 只被脚本调用的 :它等的是脚本层的动作。

看明白了吗------这三类里,没有一类是"按键"能到达的。 键盘的射程到此为止,再按一万次,也不会有一个新增。

顺带,"按"这条路还有两个又贵又脆的老毛病:

  • 环境耦合 :组合键会撞上别的软件的全局热键(那次撞键让一轮扫描的读数整个作废------环境里的无关程序能直接影响你的实验);
  • "按对键"的答案不用猜 :这个程序自己带了一层快捷键说明 ------一个开关键呼出,画面上把每个功能对应的键全标出来。这是免费的 ground truth ;而且它还是画面证据------证明按键确实到达了程序(比"我按了"硬得多)。

(记住这个从代码里挖表------和让程序自己把表画出来------的对比:后者更全、更便宜。第 16 篇那把尺子在这里量的是"真值来源"。)

二、过程:从"按"到"驱"

停在天花板上之后,设计问题变了。不再问"还能按什么键",而是问:

还有什么东西,能改变系统的状态?

顺着刚才的三类目标反推它们的"上游":要打开界面、要系统的输入、要脚本的动作------那这些上游本身,能不能被批量、编程化地触发?

由此得到一个明确的换法:

  • 旧驱动模型 :模拟用户------每个状态变迁都要在真实 UI 上一动作一动作走一遍;成本极高,可达集还被界面本身限制;
  • 新驱动模型 :按系统建模、批量触发 ------找到一个更高层、可编程的通道,按"系统"(地图、战斗、物品、技能......)逐个批量地驱动状态变迁。

一句话概括这个设计思想的杠杆率:能改变系统的入口从来不止一个;最贵的入口是"模拟人",最便宜的入口是"系统自己的通道"。

两点必须说清的边界:

  1. 换的只是驱动端。 观测端那一整套纪律------布点时机、丢失对账、三态数据------一条都不能省(上一篇)。换驱动不是省掉验证,是把验证放到更大的舞台上去做。
  2. "新通道存在"本身要先被证明:能打开、能下发、下发确实改变了状态------同款证据纪律(第 23 篇:先找"谁能动它",再谈怎么动)。

三、判据与验证:四条

1. 覆盖推不动时,先给"推不动"归因。 把未触达目标做分类------如果剩余目标的驱动来源不是你正在用的那一种,再加努力也是零。 分类是换驱动的前置动作。

2. 换驱动源,优先于加强现有驱动。 穷举输入的边际收益迟早归零:与其在同一个入口上更用力,不如先问"还有没有另一根杠杆"。

3. 便宜的真值先捡。 程序自带的说明层 / 快捷键表 / 帮助界面------如果它能自己把答案画出来,就别再从代码里挖。

4. 驱动换、判据不换。 时机、对账、三态------观测端的账本原样保留,只把"谁在开车"换掉。

四、结论

这个系列从第 1 篇讲到现在的那些"金句"里,这一条是隐藏最深、杠杆最大的:

AI 在穷举输入上花的力气,往往不如换一个驱动源。

覆盖率不是"输入了多少"的函数,是"驱动了多少种状态变迁"的函数------而状态变迁的入口,值得在动手之前先"清点"一遍。

五、边界声明

  • 本文只讨论AI 自动化逆向中的判据设计与审核方法,不涉及任何具体产品、厂商或服务的分析结论。
  • 文中所有地址、偏移、常量、字段名一律为占位符或示意值 ,
    不代表任何真实目标中的取值;示例代码为说明判据而编写,不构成可运行的针对特定目标的工具。
  • 文中提到的比例与数字均来自作者项目内的测量记录,仅用于说明方法失效的方式。
  • 请勿将本文内容用于未授权的用途。

六、收尾

驱动的问题讲完了。下一篇回到工具链,讲一件自建的基础设施------它把"分钟级"的查询压到"秒级",让上面所有这些"当场重跑、当场对账"的纪律付得起 :自建指令缓存。

下一篇计划聊:自建指令缓存:把分钟级查询压到秒级。


转载请注明出处:

https://lizhiyong.blog.csdn.net/article/details/169268880

相关推荐
后端小肥肠1 小时前
群友靠公众号漫画工坊入池!10w+IP漫画一键复刻,新增矩阵功能
人工智能·aigc·agent
2601_965619691 小时前
AI视频制作:做历史战争视频,兵力部署的老地图难找,AI怎么自动配战争地图?
人工智能·音视频
IT_陈寒1 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
大囚长1 小时前
AI意图预测与游戏全球同服对战的超光速零延迟探究
人工智能·游戏
xcLeigh2 小时前
FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统
人工智能·stm32·单片机·嵌入式硬件·ai
考拉讲支付2 小时前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构
ADAI_Bowen2 小时前
写文章 - 知乎
大数据·运维·人工智能
虎鲸不是鱼2 小时前
AI 自动化逆向(三十四)自建指令缓存:把分钟级查询压到秒级
人工智能·自动化·大模型·逆向·ai逆向
正经教主2 小时前
【FDE系列】阶段2:Day 42(UP详细版):Dockerfile 实战 — 把你的应用打包成镜像
人工智能·docker·fde