REA(Reverse Engineering Assistant,逆向辅助模型或工具)能省下的,主要是“从一大片未知里先挑出值得看的几个点”这一步;它不能省掉地址、函数边界、数据流的最终确认。想把它的结果直接写进报告,函数名和结论必须回到反汇编器里指到具体字节,否则报告里的判断没有可核对的落点。
REA 适合放在分析流程的第一轮,用来把字符串、符号、调用关系整理成待验证线索;凡是涉及地址、函数边界、关键跳转、加密或协议判断的结论,都要回反汇编器指回指令字节,才能写成可交付结论。建议给每条 REA 输出标证据等级,并留下复核字段,让后来的人能看出这条结论是在哪一步确认的。
把分析任务按生成假设和确认事实两类拆开
先把当前分析任务列成一张清单,逐条判断它属于“生成假设”还是“确认事实”。REA 站在生成假设那一环,输出的是候选,不是判定。
- 生成假设(可以交给 REA):字符串归类,例如把一批 URL、错误码、路径按用途分组;函数命名建议,例如某个 sub_ 开头的函数可能和 base64 解码相关;调用关系猜测,例如哪个函数疑似日志封装;可疑常量的聚类,例如多处出现的魔数、表结构。
- 确认事实(必须人工回反汇编):地址,例如函数入口、跳转目标、字符串引用位置;边界,例如函数起止、栈帧大小、循环范围;数据流,例如某个缓冲区从哪写、被谁读、结构体字段偏移。
理由不复杂:REA 给的是自然语言概率判断,没有稳定的可寻址证据;反汇编器给的是带地址的指令和交叉引用。前者适合决定“看哪里”,后者才能回答“是不是”。一个可用的输入骨架大致如下,放在工具侧拼接后调用,替换掉里面的片段即可。
角色:反汇编线索整理助手
输入:字符串表片段 + 函数入口地址列表 + 反汇编片段
输出约束:
1. 每条结论一行:候选结论 | 依据等级(A/B/C) | 证据位置(地址或片段)
2. 无法定位证据时写“待确认”,不要自行补全函数名
3. 只产出待验证线索,不要给出可交付结论
给每条 REA 结论标注证据等级
标注的作用是防止把模型推断当成事实流转到报告里。建议只用三级,级别越高越接近字节。
- A 级:有字节或指令证据。能在反汇编器里指到具体地址的指令、常量、字符串引用。报告里可以写成“该函数在某地址处调用某过程,参数由某寄存器传入”。
- B 级:有间接线索。例如字符串邻近、导入表关联、命名习惯相似,但没有直接指令支撑。报告里只能写“疑似、倾向于”,并附上线索位置。
- C 级:无依据或纯推测。模型凭训练印象给出的命名或结构猜测。报告里不出现,最多留在分析笔记里当待办方向。
标注格式可以直接放进笔记,例如 [A] sub_XXXX 引用 "ABCDEFGHIJKLMNOP" @0x...310、[B] 疑似 hex 解码,依据:调用处紧邻长度校验、[C] 可能是 CRC 表,无证据。写报告时按级别裁剪措辞,A 级可以下判断,B 级只能提线索,C 级不出现在结论段。
设定人工复核的触发条件
不是每条 REA 输出都要逐字核对,但下面这几类不核对就不能使用,这是硬条件。
- 涉及地址:任何写进报告的函数入口、跳转目标、数据引用地址,都要在反汇编器里跳过去确认,地址错一位结论就完全不同。
- 涉及函数边界:函数起止、参数个数、返回类型,需要用交叉引用和调用点反推,模型给的范围常常把内联代码或多分支尾部算进来。
- 涉及关键跳转:条件分支、循环出口、异常处理路径,逐条看跳转条件,确认哪个分支是常态路径。
- 涉及加密或协议判断:只要结论里出现“加密、解密、校验、协议、序列化”这类词,必须先找到密钥或常量表、字段偏移、字节序处理中的至少一项实例证据,再决定是否写进报告。
核对动作本身不复杂:在反汇编器跳地址、看交叉引用、确认调用约定、比对字符串引用位置。做完把结果写回笔记,而不是只在心里过一遍。触发条件可以按项目不同调整,但地址和关键跳转这两项建议保持强制。
记录复核过程,形成可复查的分析笔记
笔记的目标是让后来的人看出哪条结论是在哪一步确认的。最小字段建议固定四项:原始提问、REA 回答摘要、人工核对方式与结果、结论状态。结论状态建议只用“已确认、待确认、已否定”三种,避免出现模糊描述。
{
"原始提问": "sub_XXXX 里的字符串表是什么用途?",
"REA回答摘要": "疑似 base64 字母表,可能用于配置解码 [B]",
"人工核对方式与结果": "反汇编器跳到该函数入口,字符串 @0x...310 被两次引用;
引用点上文有长度取模运算,符合分组解码特征,未发现密钥",
"结论状态": "待确认",
"证据等级": "B",
"残留问题": "还需确认调用方传入的分组长度是否为 4"
}
这条笔记说明:REA 只提供了“看哪里”,人工核对后才把等级停在 B,结论仍是待确认。等分组长度在调用方确认后,再把它升到 A 并写进报告。同一份笔记里不要混入推导过程之外的猜测,否则复查时无法区分哪些是有依据的、哪些是笔记作者自己补的。