Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!olivea!uunet!keinstr!chaplin From: chaplin@keinstr.uucp (chaplin) Newsgroups: comp.lang.c Subject: Re: C un-compiler ? Message-ID: <1991Jun27.134943.228@keinstr.uucp> Date: 27 Jun 91 13:49:43 GMT References: <22069105.30.00WAB1@lehigh.bitnet> Organization: Keithley Instruments, Cleveland, Ohio Lines: 30 In article <22069105.30.00WAB1@lehigh.bitnet> WAB1@NS.CC.LEHIGH.EDU (William Anthony Barry) writes: >Hello, > Is it possible to disassemble an executable file back into its C >language source? If not completely possible, there must be certain >constructs that could be recognized, then the rest could be left in >assembly language. Are there any existing programs that do this? > Thanks for any comments, > Bill Barry > wab1@ns.cc.lehigh.edu I don't know what's available, so I can't answer that part. However, based on my experience with various C compilers, it seems that an un-compiler would have to have quite a bit of knowledge of the compiler which was used to produce the executable. For instance, the 68K assembly code produced for a switch statement by a Greenhills cross compiler looks vastly different from the code produced by a Microtec cross compiler. Also, one of the optimizations which the Microtec compiler can perform is the removal of duplicate code (I don't know the formal name for this). I discovered this feature when I was tracing execution using an in-circuit emulator, and I noticed that large amounts of code seemed to be "missing." Obviously, an un-compiler would not be able to accurately reconstruct the source code from an executable which has been so optimized. -- Roger Chaplin / Instruments Division Engineering / "Though I'd been lost now I chaplin@keinstr.uucp / CI$: 76307,3506 / felt I was found when He #include / looked at me with His #include "disclaimer.h" /* cover all bases */ / forgiving eyes." - Michael Card