直接从VSCode反编译东西 | 插件分享
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/tintinweb/vscode-decompiler
反编译器!
说实话,我们没有必要记住各种可用工具的反编译方法。如果能够在Visual Studio Code中直接进行反编译,岂不美哉?好吧,这里我们来介绍一下:
这个扩展支持反编译以下内容...
- 各种平台的二进制可执行文件
- Java Jar文件和编译后的类
- Android APK文件
- Python 的
.pyc和.pyo文件 - 基于以太坊/EVM的智能合约
- (实验性质,仅支持Linux/MacOS)
只需在支持的可执行文件上单击右键→反编译,等待神奇的发生。
反编译结果会添加到临时子工作区。您可以从子工作区中右键单击→下载文件到本地文件系统。
玩得愉快🙌
参观
macOS

Windows (Ghidra vs. IDAPro)

以太坊智能合约
将EVM字节码保存在扩展名为.evm的文件中,然后右键单击→反编译。

配置
要求: 通用
- 要求已在系统中安装 Java(11+)。只需为您的操作系统安装最新的 JRE/JDK(例如 OpenJDK、Oracle JDK)即可。
- 其他工具已捆绑在扩展中。只需确保 Java 在您的
PATH中可用。
要求: 二进制可执行文件(Ghidra / IDA Pro)
- 要求已安装能够反编译可执行文件的 Ghidra(← 下载)
- 需要在
PATH中可用(例如您在 os-x 上使用brew cask install ghidra安装它的情况);或手动设置 - 否则,请在
code → preferences → settings: vscode-decompiler.tool.ghidra.path中指定可执行文件<ghidra>/support/analyzeHeadless的路径,并确保analyzeHeadless脚本运行无误(且不会提示 JDK Home 🤓)。下面是 Windows 的一个示例 Ghidra 配置:
- 需要在
- (实验性;仅限 Windows)可选的具有反编译支持的 IDA Pro 版本。
- 在
code → preferences → settings: vscode-decompiler.tool.idaPro.path中指定idaw可执行文件的路径,例如c:\IDA68\idaw.exe。 - 在
code → preferences → settings: vscode-decompiler.default.decompiler.selected中设置首选项为idaPro (experimental Windows Only)。 - 我们将自动尝试在目标应用程序上运行 32 位和 64 位的
idaw(您配置的可执行文件首选项)。 - 如果您正在运行
<= IDA Pro 6.6,并且正常的 IDA 反编译模式不起作用,则可以尝试将首选项设置为idaPro legacy hexx-plugin (experimental Windows Only)。注意:仅在正常的 IDA Pro 模式无法工作时才使用此方法。警告:idaw*.exe必须不在包含空格的路径中,请向 @microsoft 询问为什么 😉。
- 在
- 您正在使用 Ghidra?很好!请遵循 Ghidra 安装指南(特别是 JAVA 设置)。确保
ghidraRun和support/analyzeHeadless运行无误。
要求: Python
- Python 反编译需要
pip3 install uncompyle6(请参阅设置)- 在
code → preferences → settings: vscode-decompiler.tool.uncompyle.path中指定uncompyle6脚本位置,或者如果它在PATH中可用,则设置为uncompyle6。
- 在
要求: 智能合约(EVM 字节码)
- 伪代码生成器 panoramix/eveem 需要安装
python3.8或更高版本。- 在
code → preferences → settings: vscode-decompiler.tool.python38.path中指定python3.8路径(例如/usr/local/opt/python@3.8/bin/python3.8(macos/homebrew)) - 确保已安装
python3.8的pip - 安装
panoramix的依赖项:$ /usr/local/opt/python@3.8/bin/python3.8 -m pip install coloredlogs requests web3 timeout_decorator
- 在
- 注意:Panoramix 在本地模式下运行。EVM 字节码不会发送到 eveem.org。
- 它将尝试在首次加载时下载函数签名数据库。
- 它将缓存文件到
<userhome>/.panoramix。
- 不支持 Windows :/ (请参见此问题)。
设置工具首选项
code → preferences → settings:
- 将默认反编译器首选项设置为
ghidra(默认)或idaPro (experimental Windows Only)(需要 IDAPro + 反编译器的许可证)vscode-decompiler.default.decompiler.selected
- 将 Java 反编译首选项设置为 JADX 或 JD-CLI(默认)
vscode-decompiler.java.decompiler.selected
- 将 Android APK 反编译首选项设置为 dex2jar + jd-cli(较慢)或 JADx(默认)
vscode-decompiler.apk.decompiler.selected
故障排除和常见问题
(macOs) "macOs 无法验证 'decompiler' 的开发者 ...
- 按照https://support.apple.com/en-za/guide/mac-help/mh40616/mac中的修复步骤操作。
- 验证是否从原始网站下载了ghidra,并验证校验和。 注意:你正在计算机上运行NSA工具。
- 在Finder中打开
<ghidra-install-folder>/Ghidra/Features/Decompiler/os/osx64,Ctrl+鼠标单击decompile→open并确认您信任该应用程序(您只需要执行一次)。

(通用) 这个东西失败了:{"code":1,"type":"single"}。这是什么意思?
- 您的工具(Ghidra/Ida/...)没有正确设置,因此执行失败。路径可能是错误的,工具可能由于不正确的Java配置或Java版本不兼容而失败。有许多方式可以引发此错误,在99%的情况下是工具或其所需环境(例如Java环境变量、版本等)的错误配置。
- code: 是工具的退出代码。我们期望成功(0),但工具可能返回非零以指示错误。检查工具的输出以进行故障排除。code=1表示工具返回了退出码1,表示错误条件。
- type: 是工具是如何执行的。单个或多个命令。忽略此项。
(Ghidra) 无法运行反编译命令。检查您的配置。{"code":1,"type":"single"}
- 确保您正在使用支持的Java版本(例如win:jdk 14可以工作,jdk 16似乎不兼容)
- 确保环境变量已正确设置(ghida设置文档 google:设置env vars)
JAVA_HOME指向您的jdk安装文件夹PATH包括指向$JAVA_HOME/bin的条目(win:%JAVA_HOME\bin)
- 确保
ghidraRun和support/analyzeHeadless无错误运行(您可能需要按照analyzeheadless文档提供有意义的参数进行此测试) - 在(Windows)
c:\ users \<yourname> \.ghidra \<.ghidraversion> \ application.log中查看ghidra应用程序日志
注意:更改环境变量后,始终重新启动vscode以使更改生效。
标签:工具分享, 思路分享, 学习笔记