nemerle / dcc

This is a heavily updated version of the old DOS executable decompiler DCC
GNU General Public License v2.0
146 stars 27 forks source link

I've fixed many issues in this codebase, among other things - memory reallocation during decompilation.

To reflect those fixes, I've edited the original readme a bit.


dcc Distribution

Join the chat at https://gitter.im/nemerle/dcc

The code provided in this distribution is (C) by their authors:

and is provided "as is". Additional contributor list is available on GitHub.

The following files are included in the dccoo.tar.gz distribution:

Note that the dcc_oo.exe program (in dcc32.zip) is a 32 bit program, so it won't work under Windows 3.1. Also, it is a console mode program, meaning that it has to be run in the "Command Prompt" window (sometimes known as the "Dos Box"). It is not a GUI program.

The following files are included in the test.zip file: fibo, benchsho, benchlng, benchfn, benchmul, byteops, intops, longops, max, testlong, matrixmu, strlen, dhamp. The version of dcc included in this distribution (dccsrcoo.zip and dcc32.exe) is a bit better than the first release, but it is still broken in some cases, and we do not have the time to work in this project at present so we cannot provide any changes. Comments on individual files:

Our thanks to Gary Shaffstall for some debugging work. Current bugs are:

For more information refer to the thesis "Reverse Compilation Techniques" by Cristina Cifuentes, Queensland University of Technology, 1994, and the dcc home page: http://www.it.uq.edu.au/groups/csm/dcc_readme.html

Please note that the executable version of dcc provided in this distribution does not necessarily match the source code provided, some changes were done without us keeping track of every change.

Using dcc

Here is a very brief summary of switches for dcc:

If dcc encounters illegal instructions, it will attempt to enter the so called interactive disassembler. The idea of this was to allow commands to fix the problem so that dcc could continue, but no such changes are implemented as yet. (Note: the Unix versions do not have the interactive disassembler). If you get into this, you can get out of it by pressing ^X (control-X). Once dcc has entered the interactive disassembler, however, there is little chance that it will recover and produce useful output.

If dcc loads the signature file dccxxx.sig, this means that it has not recognised the compiler library used. You can place the signatures in a different direcory to where you are working if you set the DCC environment variable to point to their path. Note that if dcc can't find its signature files, it will be severely handicapped.