让AI协助阅读代码

admin 2025年3月12日08:52:18评论20 views字数 2460阅读8分12秒阅读模式
让AI协助阅读代码

☆ 背景介绍

目前这些AI,总觉得差点意思,解决不了我的问题。非常小的问题可以,稍微难点的,不行。比如搞wasm、jsc反编译,让它读v8源码,理解具体的序列化/反序列化过程,给它一个binary,希望它返回手工反序列化解读,类似010 Editor模板那样的解析效果,等等。不指望它直接给010 Editor模板,或者反编译器,就逐字节解码给我看看。像这些需求,目前这些AI做不到。

目前能做一件事,让AI协助阅读代码,大致了解每个文件主要在干啥,并在此基础上与之讨论一二。

☆ 基本思路

思路是从「0x指纹」和「黄健楸」那来的,我只是记一笔。

从github拖项目到本地,用程序将目标项目源代码Merge到单个TXT中,TXT中含有项目的目录结构,人类或AI能识别出TXT各段内容分别属于哪个文件、哪级目录。

上传单个TXT到AI,让AI阅读,在TXT基础上与AI讨论。他们的经验是,用aistudio中的Gemini 2.0 Pro Experimental。首先,免费。其次,每个会话有两百万的token。我们需要超长上下文窗口,毕竟光上传单个TXT就会消耗大量token。土豪会考虑付费AI,我没测试过。

☆ MergeFile.py

0x指纹写了一个程序,对指定目录抽取源代码并Merge到单个TXT中。我做了点小修改,遍历目录树时,允许指定扩展名集合。

让AI协助阅读代码

☆ Repomix

大模型协助分析大型代码仓库(Zed为例子) - 黄健楸 [2025-02-19]

https://www.gantrol.com/software/code/zed/crate-analyse

Repomix (Pack your codebase into AI-friendly formats)

https://github.com/yamadashy/repomix

Repomix online

https://repomix.com/

Repomix有在线版本,向它提供github链接,它替你生成单个文件,有XML、Markdown、TXT三种格式,可下载到本地。

☆ gitseek.dev

https://gitseek.dev/zh

这也是从黄健楸那儿看到的,其他网友提供的github项目抽取服务,与在线Repomix类似。

☆ Gemini 2.0 Pro Experimental

以View8项目为例

https://github.com/suleram/View8

假设已获取项目的单个TXT,去aistudio选Gemini 2.0 Pro Experimental,以附件形式上传单个TXT,不要打开TXT复制内容直接粘贴到Gemini对话框中,不要这么干。MergeFile.py生成的View8.merge.txt约66.8KB,上传TXT消耗token约21777。上传结束时,直接在AI对话框中与之讨论,比如

「先看一下这个TXT,这是View8项目源码,请介绍每个文件的主要功能」

AI介绍View8项目概况,(略)

「若想增加对StaCurrentScriptContextSlot指令的支持,应该修改哪些文件」

AI说

让AI协助阅读代码

AI给出具体修改建议,看了一下,还算靠谱。

「举例说明jump_blocks.py如何将字节码中的跳转指令转换为结构化的控制流」

AI给了几种示例

让AI协助阅读代码

「就说示例1吧,translate.py中没有你说的这种代码啊self.jump_table["Loop"][8] = Jump(jump_type="Loop", start=8, end=14)」

AI进一步解释,「我之前的描述中,为了简化说明,直接给出了translate.py中添加跳转表条目的结果,省略了中间步骤。实际上,translate.py中并没有直接使用self.jump_table["Loop"][8] = …这样的代码。更准确地说,这个跳转表条目的添加是通过translate_table.py中的add_jump_blocks函数间接完成的。下面是更详细、更准确的解释,对应于示例1(JumpLoop),(略)。虽然translate.py中没有直接的赋值语句,但通过operands字典、add_jump_blocks函数和add_jump_to_table方法,最终实现了向跳转表中添加JumpLoop条目的目的。我的初始描述省略了这个调用链,直接给出了结果,导致了误解。」

与Gemini对话至此,token共消耗29219,已算上TXT本身的消耗,离两百万的上限远得很,在单个会话中,足够讨论许多技术细节。

TXT上传成功后保存在Google Drive中,aistudio能看到

让AI协助阅读代码

可在此处删除自己上传的文件。Google Drive给了15GB的空间,够用。

☆ 讨论

有相关技术背景的,可用View8项目测试前述方案。这里有些微妙,我对View8项目有过研读,AI回答我能判断一二,知道哪些是胡诌、哪些可参考;若初次接触View8项目,很难说AI的回答如何看待。

有个笑话,没用AI前,花一小时写代码、十分钟调试;用AI后,花十分钟写代码、一小时调试。没有相应技术背景时,AI替你"开发"的应用对你就是个黑盒,效果如何实际是赌大运。省却了设计时的思考过程,代价就是调试时补习整体。

除此之外,还有安全问题。宝玉发过一条,「友情提醒一下,虽然现在AI极大地降低了做网站、APP的门槛,给人谁都可以快速上网站、发布APP的幻觉,但是不要忽视安全问题。前些天使用过一个网红宣传的跟Cursor结对写出来的应用,访问OpenAI的Key就写在网页脚本中,看一下网络请求就能看到明文的API Key……你的API Key、核心数据、提示词等隐私信息,不要轻易地暴露在客户端或者数据包中,这些对于专业人士来说都是透明的,如果搞不清楚就请专业人士(不要问我,我不专业)把关看看。

和云海、0x指纹等人讨论过现有AI在逆向工程中的辅助效果,离心理预期还差很远,暂寄希望于未来的技术进步吧。

原文始发于微信公众号(青衣十三楼飞花堂):让AI协助阅读代码

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月12日08:52:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   让AI协助阅读代码https://cn-sec.com/archives/3831022.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息