据我所知,Ghidra可以查看汇编语言(ASM)并将代码“反编译”成类似C语言的东西。但它并不总是能做到,也并不完美。大语言模型(LLM)能否经过微调来帮助填补空白,从而进一步理解汇编代码呢?
讨论总结
原帖询问是否能对大型语言模型(LLM)进行微调以帮助逆向工程汇编代码。评论者从不同角度发表观点,包括LLM在代码注释方面的表现、处理Ghidra/IDA伪代码的能力、理解反编译代码的情况、训练方式以及在逆向工程中的可靠性等,还涉及到制作数据集的困难程度、特定工具的推荐等话题,整体氛围是积极探索相关技术的可行性与问题。
主要观点
- 👍 曾经有编写程序做相关工作的经历,对LLM有更高期望(对C代码注释)
- 支持理由:几十年前就能编写程序做反汇编相关工作,所以对LLM的期待是能对C代码进行注释。
- 反对声音:无。
- 🔥 LLM在代码注释方面通常表现良好(在有上下文的情况下)
- 正方观点:只要能弄清楚状况(给予一定上下文)就行,SOTA模型会在代码注释上近乎完美。
- 反方观点:无。
- 💡 对LLM处理Ghidra/IDA伪代码能力表示疑问
- 解释:不知道LLM对Ghidra/IDA伪代码的处理能力如何。
- 💡 LLM理解反编译代码能力不错,但反编译代码有损失性存在隐患
- 解释:虽然能理解,但由于反编译代码是基于猜测生成的,存在错误猜测导致解释不正确的风险。
- 💡 可以将反汇编和伪代码都给LLM来获得更好解释
- 解释:未明确阐述理由,但提出这样做可以获得更好解释。
金句与有趣评论
- “😂 I wrote programs to do this without AI many decades ago. What would impress me is if an LLM could comment the C code.”
- 亮点:从自身几十年前的编程经历出发,提出对LLM更高的期望,即对C代码进行注释。
- “🤔 LLMs are very good at commenting code, as long as they’re able to figure out what’s going on (which is most of the time, as long as you give them some context like multiple files), SOTA models will pretty much do a perfect job commenting.”
- 亮点:强调LLM在有上下文时在代码注释方面的良好表现。
- “👀 This is fine if you’re letting the LLM directly decompile the assembly, but making sense of what’s happening in Ghidra/IDA pseudo - code like above? do LLMs perform well at that?”
- 亮点:针对LLM处理特定伪代码的能力提出疑问。
情感分析
总体情感倾向是积极探索的。主要分歧点在于LLM在逆向工程汇编代码方面能力的不同看法,例如对处理Ghidra/IDA伪代码能力、理解反编译代码的能力等。可能的原因是大家的技术背景和使用经验不同,导致对LLM的能力评估存在差异。
趋势与预测
- 新兴话题:可能会进一步探索如何制作适合LLM用于逆向工程汇编代码的高质量数据集。
- 潜在影响:如果LLM能够更好地应用于逆向工程汇编代码,可能会提高相关领域的工作效率,减少人工工作量,但也可能引发对传统逆向工程工程师需求的变化等社会影响。
详细内容:
标题:LLM 能否用于逆向工程汇编代码?Reddit 热门讨论引发深度思考
在 Reddit 上,一则关于“Could an LLM be finetuned for reverse-engineering assembly code?”的帖子引发了众多关注,获得了大量的点赞和评论。原帖提出了能否对 LLM 进行微调以帮助理解汇编代码的疑问。
讨论焦点主要集中在 LLM 在逆向工程汇编代码方面的能力和表现。有人表示自己几十年前就写程序做过类似工作,质疑 LLM 能否对 C 代码进行注释。也有用户称 LLMs 非常擅长注释代码,只要能搞清楚状况,前沿模型能出色完成注释工作,并且能将字节码转换为汇编,再转换为 C 或 C++。
还有人提出,让 LLM 直接反汇编没问题,但对于像 Ghidra/IDA 中的伪代码,LLM 表现如何?在经验分享方面,有人表示在处理反编译代码时,LLM 能做得不错,但存在一些问题,比如无法识别反编译器的错误猜测。
有用户分享了自己的经历,如曾经在对一个运行在电子墨水设备上的 Java 应用进行逆向工程时,希望能让 LLM 给出相关信息。
有趣的观点如有人好奇模型规模小到何种程度性能会下降,还有人探讨了不同架构和编程语言的专用模型的实用性。
对于 LLM 在逆向工程中的作用,有人认为虽然 LLM 表现不错,但仍不能完全替代人工,只是起到辅助作用,能帮助提高效率,但仍需要有经验的人类来引导和解析其产生的信息。也有人指出 ChatGPT 有时会拒绝处理恶意软件相关内容。
总的来说,这场讨论揭示了 LLM 在逆向工程汇编代码领域的潜力和局限性,以及未来可能的发展方向。但关于如何创建高质量的数据集,各方仍存在争议。有人认为可以通过重复下载、编译和反汇编代码来获取数据,也有人认为这种方式无法保证数据集的质量和有效性。
感谢您的耐心阅读!来选个表情,或者留个评论吧!