Mail Archives: djgpp/1997/02/14/16:34:42
Alan Wilson wrote:
>
>
> It's not possible to take the files you have now and decompile them back to
> the source??? Or once it is compiled and linked, there's no way to get back
> the source?
>
Going back to the source is theoretically feasible for some part: you can
get from machine code to ASM, and then to C; but you will lose some
information, like function/variable names which are destroyed during
compilation. Also, the code->source correspondance is not one to one:
several C programs will yield the same machine code.
However, it is always possible to write some C program, which compiles
into the same code (provided you use the same compiler).
A few years ago, I did that for Wolfenstein-3d, and decompiled a large
part of the executable. When Id relased the source to it, I was able to
cross check it and see my decompiled C code was basically right.
However, this was pretty easy because it was compiled with BorlandC,
which is a dumb, not much optimising, compiler... Just looking at the
asm, guessing the C behind was fairly easy : there was one simple wat the
compiler coded "for()" loops, another on for switch(), still another for
do while, etc...
With djgpp, I suspect this would be a bit harder, because it uses much
more elaborate optimisation schemes (try compiling some large program
with the "dump" options of gcc to see how complex it can be...). On the
other hand, the source is available, so it can help reversing the
compilation process.
Moreover, decompiling by hand is a tedious task... And on large
executables, it can be a *very* long job. What would be interesting would
be to develop tools for this. I don't know any good programs for this. If
anyone wants to start such a project, I'd be very happy to contribute.
Francois
- Raw text -