Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How to decompile .exe to java

  1. Jul 3, 2008 #1
    I have Jbuilder2007 and im wondering if there is a way i can decompile .exe files so i can read the code in java.
  2. jcsd
  3. Jul 3, 2008 #2
    What you need is a java decompiler, and there are some available:

    http://members.fortunecity.com/neshkov/dj.html [Broken]
    Last edited by a moderator: May 3, 2017
  4. Jul 3, 2008 #3


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Well, Java is not normally compiled to an .exe, it's usually compiled to a .class. The class files contain JVM bytecode and can be decompiled into Java source.

    If you're trying to decompile a Java program that has been compiled all the way to an .exe (using JET, for example), you're out of luck.

    - Warren
  5. Jul 3, 2008 #4
    ok, so basically there is no way to edit a .exe file? i thought maybe there was a way the code could be translated to java or pseudocode or something
  6. Jul 3, 2008 #5


    User Avatar
    Science Advisor
    Homework Helper

    To edit an exe file, you'd need to use a disassembler and know the assembly language.

    There are various ways in which an exe can be moved into something higher than assembly, but they're usually either:
    * Really hard to do, and not much easier to read than the assembly; or
    * Total cheats, and exactly as hard to follow as the assembly.
  7. Jul 3, 2008 #6
    You can use a disassembler to help you decode the machine-level instructions, but that's about it. AFAIK, there is currently no way to reliably and automatically reverse-engineer machine code to a high-level language; it's a much more complex problem than you might think.
  8. Jul 4, 2008 #7


    User Avatar
    Science Advisor
    Homework Helper

    Yep. You can imagine storing the executable in an array, dereferencing, and jumping to that point -- any strong enough language (C/C++ not FORTRAN or Java, though C# could do it in unsafe mode) should be able to do that, but it's hardly understandable. Likewise, you could imagine turning a few commands into basic C commands and leaving the rest in asm blocks -- but that's no better either.

    A sufficiently unstructured language could probably be a target for the disassembled code, but it would be nearly impossible to read -- all GOTOs and weird pointer math.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook