English | 中文
WPeChatGPT
-
IDA 插件,基于与 ChatGPT 相同的模型,即 OpenAI 发布的 gpt-3.5-turbo 模型,可帮助分析人员快速分析二进制文件。
-
WPeChatGPT 目前支持的功能包括:
- 分析函数的使用环境、预期目的和功能。
- 重命名函数的变量。
- 尝试使用 python3 恢复函数,此功能主要用于较小的函数块(如 XOR 解密函数)。
- 查找当前函数中的漏洞。
- 尝试使用 python 为有漏洞的函数生成对应的 EXP。
- 利用 GPT 自动分析二进制文件,详见章节 Auto-WPeGPT。
-
WPeChatGPT 插件使用 OpenAI 的 text-davinci-003 模型训练在 GPT 上。 v2.0 后使用 OpenAI 最新的 gpt-3.5-turbo 模型(与 ChatGPT 相同)。
ChatGPT 的分析结果 仅供参考,否则我们分析员就要失业了。XD
更新历史
版本 | 日期 | 说明 |
---|---|---|
1.0 | 2023-02-28 | 基于 Gepetto。 |
1.1 | 2023-03-02 | 1. 删除分析加密和解密功能。 2. 增加 python 恢复功能。 3. 修改一些细节。 |
1.2 | 2023-03-03 | 1. 增加在函数中查找二进制漏洞的功能。 2. 增加尝试自动生成相应 EXP 的功能。 3. 修改一些细节。 (由于 OpenAI 服务器延迟,上传未测试) |
2.0 | 2023-03-06 | 1. 完成 v1.2 版本漏洞相关功能的测试。 2. 切换到 OpenAI 发布的最新 gpt-3.5-turbo 模型。 |
2.1 | 2023-03-07 | 修复 OpenAI-API 超时问题。(见章节 关于 OpenAI-API 错误报告) |
2.3 | 2023-04-23 | 添加 Auto-WPeGPT v0.1 以支持二进制文件的自动分析。 (从此版本开始需要添加包 anytree,使用 requirements.txt 或 pip install anytree) |
2.4 | 2023-11-10 | 1. 修改了一些显示细节。 2. 更新 Auto-WPeGPT v0.2。 |
2.5 | 2024-08-07 | 1. 添加对其他模型的支持,可使用 MODEL 变量进行设置。@tpsnt 2. 支持新版 python openai 包。 |
安装步骤
- 运行以下命令安装所需的包。
pip install -r ./requirements.txt
- 修改脚本
WPeChatGPT.py
,将您的 API 密钥添加到变量 openai.api_key 中,将变量 ZH_CN 改为 False。(默认中文) - 将脚本文件
WPeChatGPT.py
和文件夹Auto-WPeGPT_WPeace
复制到 IDA 的插件文件夹中,最后重启 IDA 即可使用。
! 注意
:需要将 IDA 环境 设置为 python3,并且在 WPeChatGPT 2.0 版本后需要使用 最新的 OpenAI Python 包。
使用方法
支持使用 右键、菜单栏或快捷键 在 IDA 中进行操作。
-
快捷键:
函数分析 = "Ctrl-Alt-G"
重命名函数变量 = "Ctrl-Alt-R"
漏洞查找 = "Ctrl-Alt-E"
-
右键单击伪代码窗口:
- 菜单栏:编辑 $\Rightarrow$ WPeChatGPT
示例
使用方法:
函数分析效果展示:
漏洞查找效果展示:
Auto-WPeGPT
更新历史:
版本 | 日期 | 说明 |
---|---|---|
0.1 | 2023-04-23 | 初始发布。 |
0.2 | 2023-11-10 | 1. 提高对有效字符串的识别。 2. 改进函数调用树的分析。 3. 增加对导入函数的识别。 |
使用方法: 在菜单栏中找到 Auto-WPeGPT 并点击。输出完成后,您可以在相应文件夹("WPe_+IDB 名称")中找到分析结果。
- 菜单栏:编辑 $\Rightarrow$ WPeChatGPT $\Rightarrow$ Auto-WPeGPT
输出文件中各个文件的含义:
GPT-Result.txt -> Auto-WPeGPT 分析结果
funcTree.txt -> 函数调用树结构
mainFuncTree.txt -> 主函数树结构
effectiveStrings.txt -> 二进制中的可疑字符串
展示结果:
测试后,v0.1 版本对函数较少的文件有较好的分析效果。在函数数目较多的二进制文件下,token 会超出范围。我们将在下一个版本中尝试改进。
关于 OpenAI-API 错误报告
自 2023 年 3 月 2 日起,经常遇到 API 错误,我以为是服务器不稳定的问题(因为我这边时有时无),但由于收到太多相关错误反馈,我首先去 OpenAI 查看了 API 状态,发现运行良好,所以我认为可能不是服务器问题,于是我搜索并调试了相关问题。以下是我处理 OpenAI API 连接问题的方法:
首先,插件运行在 科学上网 的条件下。
- 在科学上网的条件下,如果发现插件多次尝试后仍无法连接到 API,需要检查 python 的 urllib3 版本(1.26 版本存在代理问题)。
- 可以使用以下命令对 urllib3 进行回退修复:
pip uninstall urllib3 pip install urllib3==1.25.11
- 可以为插件设置代理或反向代理:
- 将代理地址和端口信息填入 proxy 变量中(正向代理):
# 如果需要,设置正向代理地址。(例如:Clash = http://127.0.0.1:7890) proxy = ""
- 将反向代理的 URL 填入 proxy_address 变量中(反向代理):
# 如果需要,设置反向代理 URL。(例如:Azure OpenAI) proxy_address = ""
联系我
如果您在使用插件时遇到问题或有任何疑问,请留言或发送邮件给我。
鸣谢
该项目基于 Gepetto 并受其启发,您可以访问 https://github.com/JusticeRage/Gepetto 了解原方法。