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
  4. Jul 3, 2008 #3

    chroot

    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

    CRGreathouse

    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

    CRGreathouse

    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.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?