直接从VSCode反编译东西 | 插件分享

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/tintinweb/vscode-decompiler

反编译器!

说实话,我们没有必要记住各种可用工具的反编译方法。如果能够在Visual Studio Code中直接进行反编译,岂不美哉?好吧,这里我们来介绍一下:

这个扩展支持反编译以下内容...

  • 各种平台的二进制可执行文件
    • Ghidra支持的Windows PE、Linux ELF、IOS等等
    • 或者 IDAPro (目前仅支持Windows)
  • Java Jar文件和编译后的类
  • Android APK文件
  • Python 的 .pyc.pyo 文件
  • 基于以太坊/EVM的智能合约

只需在支持的可执行文件上单击右键→反编译,等待神奇的发生。

反编译结果会添加到临时子工作区。您可以从子工作区中右键单击→下载文件到本地文件系统。

玩得愉快🙌

参观

macOS

94febade11235955

 

 

Windows (Ghidra vs. IDAPro)

7197e8a56c000022

 

以太坊智能合约

EVM字节码保存在扩展名为.evm的文件中,然后右键单击→反编译。

6a6a983f9c000048

 

配置

要求: 通用

  • 要求已在系统中安装 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 配置:

      ad1a1b7183000418

  • (实验性;仅限 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 设置)。确保 ghidraRunsupport/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.8pip
    • 安装 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/osx64Ctrl+鼠标单击 decompileopen确认您信任该应用程序(您只需要执行一次)。

ad1a1b7183000736

 

(通用) 这个东西失败了:{"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
  • 确保ghidraRunsupport/analyzeHeadless无错误运行(您可能需要按照analyzeheadless文档提供有意义的参数进行此测试)
  • 在(Windows)c:\ users \<yourname> \.ghidra \<.ghidraversion> \ application.log中查看ghidra应用程序日志

注意:更改环境变量后,始终重新启动vscode以使更改生效。

标签:工具分享, 思路分享, 学习笔记