基于ChatGPT的IDA插件初探(加中文注释、标出可能的漏洞点)
from–https://bbs.kanxue.com/thread-276026.htm
 2023-2-8 12:11  14677

目前,ChatGPT火了,各种方式调戏,能辅助编写各种总结。
对程序猿来说:不但能根据需求写代码,看不懂的代码还能帮忙解读代码,写代码注释。以后的开发文档也不愁了。
还可以编写exp和Fuzz代码,总之,能力很强。
听说有IDA插件,小测一下,算是抛砖引玉吧。

(1)Geptto是一个IDA插件,它使用了chatGPT的API,通过调用API,能够在IDA中让chatGPT识别函数,对函数实现的功能进行描述,并且根据函数的功能将变量重命名为易于理解的形式。

1
2
https://github.com/JusticeRage/Gepetto
(附件的脚本改为调用GPT-3,改成中文支持)

(2)VulChatGPT是在Geptto的基础上进行了一点小修改,返会函数可能存在的漏洞,还可以生成漏洞的利用脚本。

1
2
https://github.com/ke0z/VulChatGPT
(附件的脚本改为调用GPT-3,改成中文支持)

这两个脚本其实原理相同:都用了使用 OpenAI 的 davinci-003 模型为 IDA Pro 反编译的函数提供分析结果。

(3)WPeChatGPT是坛友WPeace在Geptto的基础上做了一些改进,会函数分析、会变量重命名,还能发现可能的漏洞,最后:还可以生成漏洞的利用脚本。
创新点是:可以python还原函数。
v2.0 版本后使用 OpenAI 最新的 gpt-3.5-turbo 模型

1
https://github.com/WPeace-HcH/WPeChatGPT

1.首先安装openai的python依赖库,建议用python3.6或3.8:

1
pip install openai

2.申请或者借一个openai的API Key.
登录openai后,右上角“view API keys”,API keys,创建一个”API keys”.
记下API keys(注意:API Keys只能显示一次)。
把 API keys 放入附件的python脚本的第14行。

3.复制到IDA目录下的plugins目录中,重新启动IDA pro,看是否正常加载(没有报错信息就没什么大问题)。

4.使用方法:使用你的IDA随意打开一个二进制文件,选择一个函数按F5完成反汇编,然后在反汇编窗口右键,会有一个选项卡
选择“VulChat”或“Gepetto”下的子菜单就可以了。


剩下的就是等待了,大约30-60秒,会有返回结果。
函数名称上方增加的注释即是结果。

一个不恰当的例子(没找到合适的二进制漏洞演示文件),只是让大家看看效果。
如下:

因为脚本很好理解。发送要求和伪代码段给openai的API接口过去,大家可以自行修改。

后续改进方向:
1.针对大函数不能解析的问题,发现 code-davinci-002这个模型支持 8000 tokens,建议替换试用效果。

  1. 场景:假设要分析的文件有1000个函数,手动一个一个发送过去让AI分析太累。让程序自动跑,睡一觉后,二进制文件的分析已经分析完毕。懒人才开始进入人工分析阶段。
    实现思路:1.增加“一键分析Sub_开头的所有函数”,2.程序还会判断只有大于100字的函数才做分析。3.多线程或多单线程慢慢解析。
上一篇
下一篇