AI 自动化逆向(九)AI 会记住错的公共常量

AI 自动化逆向(九)AI 会记住错的公共常量

本文是「AI 自动化逆向」系列第 9 篇。上一篇:AI 写的代码会安静地吞掉 AI 的错误;下一篇预告:AI 会编错自己数据结构的字段名。

前言

上一篇讲的是代码把错误接住。这一篇讲另一种"不报错",更根子一点:

不是代码错了,是知识本身是错的 ------它记住的公共常量,记反了。而且错得毫无动静:查询照常成功,输出完整、格式正确,只是安静地给你另一个名字。

(同前几篇:文中"AI"指执行分析的模型,"我"指设定目标、审结果的人;内容均已脱敏。)

一、AI 在这里踩的坑:写反的两行

AI 写了一个内存枚举脚本,里面有一张小小的对照表------把几个系统 API 返回的数字翻译成人话。它是这么写的:

python 复制代码
TYPE = {0x1000000: "IMAGE", 0x20000: "MAPPED", 0x40000: "PRIVATE"}

而正确的写法是:MAPPED 是 0x40000,PRIVATE 是 0x20000。 它把这一对的值写反了。

后果:13 个"私有可执行"内存区域,全部被报成了"文件映射";它据此写下结论------"13/13 全是映射"。错的。

这个错误为什么可怕?三件事叠在一起:

  1. 那个查询 API 永远成功。 常量写错不会有任何提示、任何异常------它只会给你一个错误但完整、格式正确的答案。
  2. 两个值都"长得对"。 它们都是干净的整数常量,谁先谁后从肉眼上看不出任何破绽------仔细看没用,不是"仔细"能防的错。
  3. 数字 13 和格式都对。 13 个区域一条不多、一条不少,表格齐全------你在输出里找不到任何可疑处。

人应该加的检查 :涉及公共常量时,"用两个独立来源各测一遍并比对名称"不是冗余,是唯一防线。错值自己不会喊疼,得让它撞上第二个来源。

二、过程:两种错法,只有一种会喊

这个坑有两种形态,危险程度完全不同。

形态一:值记反(安静的那种)

就是上面那次。发现它靠的是一次"重复劳动":换上第二份独立写法的脚本 (常量写法不同、代码独立)重扫同一批地址 ------它立刻报出 PRIVATE。两条输出一对照,错在哪、错成什么样,一目了然。

注意:发现它的方式不是"再读一遍第一个脚本"。 这没有用------AI"知道"的就是那个反的值,重读的时候依然会认它。同一个来源读不出同一个来源的错;换来源才行。

形态二:位置记错(会喊的那种)

同族的另一个错误:把某个 API 记到了错误的模块 里("这个函数应该在 A 库"------其实在 B 库)。这一种运气好一点:往错的模块里去找,常常直接抛一个"没有这个函数"的异常------响的错,容易抓。

所以这条经验反过来用更值钱:能把错误喊出来的形态不用怕,要专门提防的是"值错"这种安静的形态。 你的防线安排,应该向"安静的那种"倾斜。

顺带:这个错误教会的另一件事

那批内存里有一类没有来源文件 ------想回答"它由哪个文件映射而来",答案只能来自类型字段 ,不能靠去查文件名(文件名查询会返回空)。这提醒我们:外部世界的某个问题,可能只有一个合法的取证途径------一旦那个途径用错了常量,整批结论就是错的,而且错得没有替代途径可纠正。

三、判据与验证:三条

1. 公共常量不靠"记",靠"两个来源互测"。 一条防线做到两件事:换一份独立写法,重跑同一批输入,比对输出而不只是比对数字。两处一致才通过。

2. 对照要比"名字",不只比"数值"。 数值相同而含义错位的错误(比如两个常量互换),只有"名字"层面能暴露------让两份来源各自给同一批输入"命名",名字不一致,就是警报。

3. 把 AI 的记忆当成"未验证的上游"。 常量、枚举名、字段语义、默认值......凡是"从模型记忆里搬进代码的外部知识",都要按"上游资料"对待:引用它之前,先对一次表。(这条会在下一篇里以另一种形式再出现一次。)

四、结论

一句话:常量写错不会报错,只会安静地给你另一个名字。

这一篇和上一篇合起来,讲到的是同一件事的两面:错误的来源可以是代码(上篇),也可以是知识(本篇)。而两者都有同一个伪装------输出看起来很正常。

对"用 AI 干活的人",这里有一条格外省力的经验:AI 的知识大体可靠,但它从不自检自己的记忆。 所以流程里那句话要立起来:记忆负责起草,来源负责定稿。

五、边界声明

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

六、收尾

公共常量的错,至少还能靠"两个来源"对出来。下一篇讲一个更贴身、也更狼狈的同类:它给自己刚造的数据结构,编错了字段名------读取永远返回空,而整批输出"空得整整齐齐"。

下一篇计划聊:AI 会编错自己数据结构的字段名。


转载请注明出处:

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

相关推荐
飞猫的边缘AI1 小时前
芯片设计会不会全自动化?什么时候到来?
人工智能·ic设计·芯片设计·智能体·边缘ai·ai岗位·ai职业前景
class心平气和1 小时前
软件测试-AI提示词库
人工智能
阿里云大数据AI技术1 小时前
云栖实录|Hologres 5.0全新发布:Agent Native 的全模态实时数仓
大数据·人工智能·agent
reikocao1 小时前
IMU预积分误差模型推导:协方差传播、残差构建、雅可比矩阵
人工智能·线性代数·矩阵
一级新生1 小时前
Ollama 是什么、干什么用、怎么用
人工智能·dify·ollama·本地大模型
゛凌乱的记忆づ1 小时前
50元从零到成品:一套AI辅助的嵌入式实战入门教程——IIC篇
人工智能·stm32·单片机·嵌入式硬件
Yolanda_20221 小时前
如何开发人工智能系统:从专家系统到机器学习
人工智能·机器学习
小天源2 小时前
品牌 AI 智能监测与自动化采集系统
大数据·人工智能·自动化
Navicat中国2 小时前
Navicat 18 支持 Azure OpenAI 接入,合规 AI 赋能 SQL 开发
数据库·人工智能·microsoft·ai·azure·navicat·数据