Giter Site home page Giter Site logo

fjsnogueira / vscode-decompiler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tintinweb/vscode-decompiler

0.0 2.0 0.0 20.94 MB

Decompile things directly from VSCode

Home Page: https://marketplace.visualstudio.com/items?itemName=tintinweb.vscode-decompiler

Shell 7.70% Batchfile 4.62% Python 77.93% JavaScript 9.74%

vscode-decompiler's Introduction

get in touch with Consensys Diligence
[ ๐ŸŒ ๐Ÿ“ฉ ๐Ÿ”ฅ ]

Decompiler!

Let's be honest, there is no reason to remember how to decompile stuff with the various tools available. Wouldn't it be nice to just decompile the $h*! out of things right off the fingertips in Visual Studio Code? Well, here we go:

This extension decompiles ...

  • PEELF/MACH Binary executables for various platforms
    • as supported by Ghidra; Windows PE, Linux ELF, IOS, etc..
    • or IDAPro (Experimental, Windows Only for now)
  • Jar Java Jar archives and compiled Classes
  • APK Android APK's
  • PYC Python .pyc and .pyo
  • EVM Ethereum/EVM based Smart Contracts

Just right-click โ†’ Decompile on a supported executable and wait for the magic to happen.

The decompilation result is added to a temporary sub-workspace. You can right-click โ†’ Download files to your local file-system right from the sub-workspace.

Have phun ๐Ÿ™Œ

Tour

macOS

vscode-decompiler

Windows (Ghidra vs. IDAPro)

vscode-decompiler-idapro

Ethereum Smart Contract

Save the EVM byte-code in a file with extension .evm, then right-click โ†’ Decompile.

vscode-decompiler-evm-1

Setup

Requirements: General
  • Requires Java (11+) to be installed system-wide. Just install the latest JRE/JDK for your OS (e.g. OpenJDK, Oracle JDK).
  • Other tools are bundled with the extension. Just make sure Java is available in your PATH.
Requirements: Binary executables (Ghidra / IDA Pro)
  • Requires a working installation of Ghidra (โ† Download) to decompile executables
    • either available in PATH (like when you install it with brew cask install ghidra on os-x; or set-up manually)
    • otherwise please specify the path to the executable <ghidra>/support/analyzeHeadless in code โ†’ preferences โ†’ settings: vscode-decompiler.tool.ghidra.path and make sure that the analyzeHeadless script runs without errors (and is not prompting for the JDK Home ๐Ÿค“). Here's a sample Ghidra config for Windows: ghidraconf
  • (Experimental; Windows Only) Optional a licensed version of IDA Pro with decompiler support.
    • specify the path to the idaw executable in code โ†’ preferences โ†’ settings: vscode-decompiler.tool.idaPro.path, e.g. c:\IDA68\idaw.exe.
    • set preference to idaPro (experimental Windows Only) in code โ†’ preferences โ†’ settings: vscode-decompiler.default.decompiler.selected.
    • we'll automatically try to run 32 and 64bits idaw on the target application (preference on what executable is configured by you)
    • If you're running <= IDA Pro 6.6 and the normal IDA decompilation mode does not work you can try the set preference to idaPro legacy hexx-plugin (experimental Windows Only) in code โ†’ preferences โ†’ settings: vscode-decompiler.default.decompiler.selected. Note: Use this method only if the normal IDA Pro mode doesnt work. Caveat: idaw*.exe must not be in a path that contains spaces, ask @microsoft why ๐Ÿ˜‰.
Requirements: Python
  • Python decompilation requires pip3 install uncompyle6 (see settings)
    • specify the uncompyle6 script location in code โ†’ preferences โ†’ settings: vscode-decompiler.tool.uncompyle.path or set to uncompyle6 if it is available in PATH
Requirements: Smart Contracts (EVM byte-code)
  • The pseudocode generator panoramix/eveem requires a working installation of python3.8 or newer.
    • specify the python3.8 path in code โ†’ preferences โ†’ settings: vscode-decompiler.tool.python38.path (e.g. /usr/local/opt/[email protected]/bin/python3.8 (macos/homebrew))
    • make sure pip for python3.8 is installed
    • install panoramix dependencies: $ /usr/local/opt/[email protected]/bin/python3.8 -m pip install coloredlogs requests web3 timeout_decorator
  • Note: Panoramix is run in local mode. EVM byte-code is not sent to eveem.org.
    • It will attempt to download a function signature database on first load.
    • It will cache files to <userhome>/.panoramix.
  • No Windows support :/ (see this issue).
Setting tool preferences

code โ†’ preferences โ†’ settings:

  • Set default decompiler preference to ghidra (default) or idaPro (experimental Windows Only) (requires a licensed version of IDAPro + Decompiler)
    • vscode-decompiler.default.decompiler.selected
  • Set preference for java decompilation to JADX or JD-CLI (default)
    • vscode-decompiler.java.decompiler.selected
  • Set preference for android apk decompilation to dex2jar + jd-cli (slow) or JADx (default)
    • vscode-decompiler.apk.decompiler.selected"

Credits

This extension wouldn't be possible without the smarties that are developing the following reverse-engineering tools:

Release Notes

see CHANGELOG


vscode-decompiler's People

Contributors

tintinweb avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.