AI 时代的逆向工程:为什么工作更重要,以及 AI 如何改变工作流程
简介
很多人认为人工智能会让逆向工程变得过时。幻想很简洁。模型将读取代码、解释二进制文件、理清协议、总结恶意软件,并通常用更快、更闪亮、更适合会议幻灯片的东西来取代耐心技术调查的旧工作。
现实更加残酷,也更加有趣。
人工智能并没有减少逆向工程的需求。它增加了它。我们现在生活在一个客户端更加不透明的世界,模型周围有更多的专有包装器,更多的边缘设备传输未记录的行为,更多的代理运行时跨越信任边界,更多的桌面和移动软件在二进制文件中隐藏相应的逻辑,以及更多的团队试图集成或保护他们没有构建的系统,并且无法单独从源头进行全面检查。那是更多的逆向工程。这还不止,交付压力也更大。
更深层次的原因很简单。人工智能扩展软件行为的速度比扩展软件诚实的速度还要快。系统由SDKs、运行时、代理、插件、设备固件、模型服务组件和第三方客户端组装而成,所有这些在图表上看起来都是连贯的,直到有人必须解释一个二进制文件实际上在做什么,一个模型包装器真正发送什么,或者为什么一个更新以一种没有人签名捍卫的方式改变了行为。
这就是逆向工程变得非常现代而不是淡淡怀旧的地方。它不再只是恶意软件分析师、固件专家或协议考古学家的工作。这是团队的工作,他们需要在文档变得乐观、不完整或完全虚构后从工件中恢复真相。
人工智能改变了这项工作,是的。它可以加速分类、注释、假设生成、比较和起草文档。它可以帮助更快地构建帮助程序脚本。它可以减少“这是什么东西?”之间的时间。和“我们有一份可行的技术读物。”但它并没有废除中央纪律。该文物仍有待检查。运行时间仍需观察。该协议仍需验证。人类仍然需要决定这个解释是否能够在接触证据后继续存在。
这就是人们一直试图跳过的部分,也许是因为跳过它听起来很现代。不幸的是,生产系统、事件响应和安全审查仍然存在偏向现实的老式弱点。逆向工程仍然是在产品压力、供应商不透明或技术漂移侵蚀了易读性的情况下恢复易读性的做法。
为什么逆向工程变得更有价值,而不是更少
现代软件产业包含的黑匣子数量比许多团队愿意承认的还要多。其中一些是历史性的:遗留二进制文件、供应商客户端、废弃的设备固件、未记录的桌面组件、专有协议、安装程序、内核模块或从未学会清楚表达的中间件。有些是全新的:模型运行时、代理 shell、嵌入式推理包、浏览器扩展、智能设备更新格式和应用程序包,这些应用程序包以无人记录的方式悄悄地将本地行为转化为网络行为,因为冲刺已经晚了。
人工智能时代从三个方面增加了这种压力。
首先,它使工件成倍增加。团队现在交付并集成了更多的包装器、更多的助手、更多的客户端逻辑、更多的供应商 API 以及比以前更多的实验层。每个新层都可能成为隐藏在品牌和乐观主义背后的安全假设、性能成本或行为变化的地方。
其次,它增加了解释问题。问题不再只是“这个二进制文件有什么作用?”它还是“这个二进制文件对模型调用路径、检索路径、本地缓存、插件表面、更新机制或操作员工作流程做了什么?”逆向工程成为从不同团队、不同时代或不同心情编写文档的系统中恢复行为的工作。
第三,它会增加犯错的成本。如果传统公用事业表现异常,造成的损失可能会很小。如果支持人工智能的客户端、代理帮助程序或专有自动化组件行为异常,则损害可能会导致数据泄漏、不可预测的授权、错误的审计跟踪或在有人第一次将承诺与数据包捕获进行比较时崩溃的安全故事。
因此,工作更重要,因为文物更重要。问题不在于软件难以理解。问题在于,重要的软件在商业上仍然活跃,但只有部分可读。逆向工程是团队如何缩小差距的方法,而不需要等待供应商、原作者或宇宙养成更好的习惯。
这还有另一层。现代产品是生态系统产品。一个不透明的二进制文件可能位于模型提供者、设备群、浏览器运行时、桌面 shell 和企业身份系统之间。一旦一个不明确的组件可以影响如此多的相邻系统,恢复技术真相就不再是一个利基专业,而是成为一项治理职能。
人工智能真正帮助逆向工程的地方
当人工智能被用作加速层而不是真理的替代品时,它在逆向工程中很有用。
它非常擅长让第一关移动。借助机器的协助,可以更快地对大量字符串、导入、日志、符号、反编译器输出、API 跟踪和重复的结构线索进行聚类、标记、总结和优先排序,这比让一个人眯着眼睛看所有东西直到咖啡停止工作要快得多。这很重要,因为在真正问题显现之前必须进行的初始排序过程中,许多工作都陷入了停滞。人工智能对于注释也很有用。反编译函数需要命名建议。重复的调用模式需要分组。候选状态转换需要尝试性的解释。协议领域需要假设。需要编写工装胶。吉德拉和弗里达的助手需要初稿。团队其他成员的文档需要停止听起来像二进制文件中的勒索信。
这种帮助是真实的。它节省时间。它使工作的早期部分变得不那么乏味。它还使协作变得更加容易,因为原始工件变得更容易讨论。工程师、安全研究员和决策者可以从带标签的地图开始,而不是从数字洞穴墙开始。
还有另一个在商业上很重要的好处。人工智能缩短了从怀疑到做出决策质量读取之间的时间。这可以改变参与的经济效益。团队不需要等待很长时间才能了解它是否正在处理普通的集成问题、隐藏的安全边界、受保护的模型包装器、隐藏的更新路径,或者其行为与文档完全不同的组件,领导层应该停止假装。
它还有助于跨职能翻译。安全、平台、产品和法律利益相关者并不都能轻松地读取跟踪和反编译器输出。人工智能可以帮助将原始调查材料转化为临时摘要,以便在技术验证继续进行时更容易传播。这并不能取代工程学的阅读。它可以帮助组织的其他部分遵循它。
通过这种方式,人工智能不会取代逆向工程。它使得逆向工程在管理上变得不那么缓慢。
人工智能在哪里,以及为什么它仍然很重要
人工智能的谎言也很美,这正是为什么纪律严明的团队拒绝让人工智能负责结论的原因。
模型可能会生成看似合理但错误的函数名称。它可以推断出适合一半领域的协议故事,并对其余领域产生幻觉。它可以对反编译器的输出产生自信的评论,听起来比证据应有的更尖锐。在运行时确认任何内容之前,它可以将歧义分解为优美的句子。而且因为语言流畅,人们开始把它当作知识,而不是姿态优美的猜想。
这在逆向工程中尤其危险,因为许多工件看起来已经具有暗示性。字符串暗示行为。进口暗示着能力。符号形状暗示结构。反编译的控制流暗示了意图。提示很有用。提示不是结论。人工智能往往会比成人工作流程允许的时间更早地做出听起来像是判决的提示。
这就是为什么强大的团队制定了一条几乎过时的规则:人工智能可能会起草假设,但工件和运行时仍然拥有答案。
数据包捕获胜过叙述。重播胜过理论。记忆痕迹胜过自信的段落。动态的挂钩胜过迷人的模型摘要。复制的状态转换击败了一个令人怀疑的完美解释,但实际上从未在执行中幸存下来。
这在安全敏感的环境中更为重要,因为错误的信心会带来二阶成本。它浪费了补救工作,产生了错误的保证,并可能促使领导层选择错误的供应商、错误的补丁边界或错误的事件故事。误导性的解释不是中立的草案。在错误的时刻,这是昂贵的噪音。
这并不意味着人工智能毫无用处。它使其变得可治理。可治理的工具是在严肃的工程工作中赢得永久地位的工具。
实际有效的工作流程
人工智能和逆向工程之间最可靠的交互是循环的而不是奉献的。
首先,诚实地收集神器。二进制、包、跟踪、字符串、导入、捕获、日志、更新有效负载、进程树、系统调用、网络边缘、反编译器输出。在证据摆在桌面上之前,不要让工具开始发明。
其次,利用人工智能加速分诊。对导入进行分组。标记字符串。总结重复的流程。起草可能的模块职责。生成候选人姓名和可能的边界。为重复性工具工作生成小脚本。寻求假设,而不是教条。
第三,动态验证。勾上路径。重播流量。触发行为。将文件系统更改、注册表更改、网络更改、加密操作或 UI 状态与假设进行比较。这就是美丽谎言开始消亡的地方,这对每个人来说都是健康的。
第四,用人类语言写出经得起审查的结论。到底发生了什么?还有什么是不确定的?有什么风险?接下来可以改变什么?有哪些证据支持该命令?只有当结果足够清晰以便安排时,逆向工程才具有商业用途。
这个工作流程比幻想慢,比混乱快。这通常是正确的速度。
与相反的工作流程相比,它还可以更好地保持团队健康。如果允许人工智能直接从人工噪声跳到自信的结论,那么每个人都会在下一阶段争论语言而不是测试现实。循环工作流程使调查保持协作。它使房间围绕证据而不是围绕谁最先听起来最流利。
值得优先解决的实际案例
专有人工智能客户端行为
团队越来越依赖第三方助手、推理包装器、浏览器扩展或声称安全、私有、范围内或本地的企业客户端。逆向工程有助于验证本地是否真正意味着本地、缓存是否诚实地运行、附件是否按照人们的想法进行处理,以及真正的网络和存储边界位于何处。这些问题很重要,因为采购语言通常很宽泛,而运行时行为通常很狭窄且具体。团队在这里不需要更多的承诺。他们需要数据包捕获、过程观察和具体的行为恢复。
代理工具和插件界面
代理 shell 积累工具的速度通常比积累治理的速度快。逆向工程和动态检查可帮助团队确认如何调用工具、附加哪些隐藏参数、存储内存或上下文的位置以及运行时行为是否与某人为采购编写的策略故事相匹配。
这在共享企业环境中尤其有价值,在这种环境中,一个不明确的工具边界可能会在内部系统之间造成一系列的暴露。该工件可能看起来很小。信任的含义很少是这样。
恶意软件和威胁分类
这是一个典型的案例,人工智能在这里真正有用,因为它可以加速早期分类,而不被允许成为最终的分析师。可以快速组织导入、字符串、解包提示、命令和控制模式以及文件系统行为。危险的一步是“快速组织”被误认为“完全理解”。
好的恶意软件工作仍然需要古老的美德:可重复性、耐心以及对优雅的初稿的怀疑态度。人工智能可以帮助提高第一个小时的工作效率。它不能取代证明工件实际用途的要求。
旧版互操作性
现代人工智能产品越来越依赖于老企业地产。当遗留桌面客户端、设备组件或未记录的桥接仍然影响路径时,逆向工程可以恢复项目无法再猜测的边界。
这就是逆向工程成为深度协作工作的地方。它可以帮助平台团队、安全团队、产品所有者和集成工程师集中阅读相同的技术文章。一旦发生这种情况,这项工作就不再像考古学,而开始像建筑修复。
好的是什么样的
人工智能时代优秀的逆向工程可以同时完成三件事。
它减少了歧义。团队可以指出真实的路径、真实的界面、真实的功能集或真实的风险边界,而不是在昂贵的天气报告中谈论。
它减少了决策时间。领导层、产品、安全或平台所有者可以更快地了解他们是否需要补丁、遏制步骤、重写边界、供应商对话,或者拒绝信任用可疑的热情形容词引入的工具。
它还减少了组织剧场。一旦二进制文件被映射,协议被重放,客户端被观察,或者运行时被挂钩,房间就会变得更安静。人们不再听取意见,而是开始研究证据。逆向工程被低估的部分原因是它在澄清问题,而澄清工作有一个令人讨厌的习惯,那就是让夸大的故事更难维持。
好的工作还会留下可重用的资产:捕获过程、分类助手、命名约定、运行时注释以及组织其他部分可以实际使用的技术叙述。这就是一项调查如何成为更健康的工程生态系统的一部分,而不是停留在单一的英雄事件上。
动手实验室:构建一个小型导入分类助手
让我们保持实验室的实用性。许多逆向工程工作都是从一个简单的问题开始的:这是什么类型的二进制文件?
下面的帮手故意谦虚。它并不能证明意图。它有助于缩小第一组可能性,因此下一步更有针对性且更少随机性。
`triage.py````python
from collections import Counter
IMPORT_BUCKETS = { "network": {"send", "recv", "connect", "WSAStartup", "InternetOpenUrlW"}, "filesystem": {"CreateFileW", "ReadFile", "WriteFile", "DeleteFileW"}, "registry": {"RegOpenKeyExW", "RegSetValueExW"}, "crypto": {"CryptProtectData", "BCryptEncrypt", "BCryptDecrypt"}, "process": {"CreateProcessW", "OpenProcess", "VirtualAllocEx", "WriteProcessMemory"}, }
def classify_imports(imports): counts = Counter() for name in imports: for bucket, members in IMPORT_BUCKETS.items(): if name in members: counts[bucket] += 1 return counts
if name == "main": sample_imports = [ "CreateFileW", "ReadFile", "send", "recv", "BCryptEncrypt", "OpenProcess", "VirtualAllocEx", "WriteProcessMemory", ]
result = classify_imports(sample_imports)
for bucket, value in result.items():
print(f"{bucket}: {value}")
### 跑步bash
python triage.py
因为它展示了一个有用的习惯:快速从伪影噪声转向有界假设。该脚本没有证明二进制文件的作用。它给了你一个更清晰的第一个问题。在实际工作中,人工智能非常擅长帮助生成和完善这样的助手。人类仍然必须决定计数在上下文中的含义。
实际上,当您将这样的助手与字符串、导出或运行时跟踪结合起来时,它会变得更加有用。人工智能擅长快速提出下一层建议。工件仍然是决定提案是否值得生存的因素。
## 爱好者测试任务
1. 使用 WinHTTP、WinINet、POSIX 套接字或 libc 导入扩展分类器,使其可以跨多个目标系列工作。
2. 添加字符串模式分组,并比较当导入和字符串一起查看时,第一遍读取的效果如何。
3. 将输出输入到小型 Ghidra 或 IDA 笔记模板中,以便早期假设成为可重用的团队工件。
4. 要求 AI 助手建议存储桶标签,然后根据实际运行时路径验证每个标签,然后再信任它。
5. 区分同一二进制文件的两个版本的两个导入列表,并编写安全主管实际可以使用的一页更改摘要。
## 总结
逆向工程在人工智能时代更为重要,因为现代系统会产生更多不透明的工件、更多隐藏的边界以及更具商业意义的行为,而这些行为仅靠文档是无法信任的。人工智能可以加速分类、注释和假设生成,从而为工作提供帮助。太早从助理晋升为见证人,会损害工作。
获胜模式不是机器与人类的较量。这是由人工验证控制的机器辅助证据工作。这就是团队如何快速地从工件中恢复真相,以帮助交付,而不会让流畅的语言超出其应该解释的系统。
这就是为什么这项工作现在比几年前感觉更加重要。软件变得越分层、不透明、代理化和由供应商介导,逆向工程作为技术诚实的实践就越有价值。当工件、文档和政策故事出现分歧时,这就是团队如何恢复共享现实的方式。
## 参考文献
1. Ghidra 项目主页:[https://ghidra-sre.org/](https://ghidra-sre.org/)
2. Frida 文档:[https://frida.re/docs/home/](https://frida.re/docs/home/)
3.angr文档:[https://docs.angr.io/](https://docs.angr.io/)
4. Wireshark 文档:[https://www.wireshark.org/docs/](https://www.wireshark.org/docs/)
5. Capstone反汇编框架:[https://www.capstone-engine.org/](https://www.capstone-engine.org/)