We help IT Professionals succeed at work.

disassemble - uncomplier

pnorris98 asked
Hello again,
I was wondering if there was a way I could find out what software was used to compile and build a program. and then allow me to uncompile it so i could look at how it was built.

Many Thanx again guys

Watch Question

dbruntonQuid, Me Anxius Sum?  Illegitimi non carborundum.

Well, yes and no.

There's utils out there which can determine what language was used to create programs and possibly which compiler.  Sometimes you can hex dump the file and search for strings that a compiler may leave there.  For example you can find the Borland string in Borland products and in some Microsoft apps there's strings that identify a Microsoft compiler.

Youi can decompile programs but only back to assembly language, not C or Pascal or whatever was used to  create the program.  And that is generally of no use in determining how it was built.

The stuff that dbrunton says is usually in the resource file from which the program makes use of (when compiling). Tthose will indeed stay visible most of the time.

Decompiling a product can be done. But usually not to the same kind of code, and depending on the file-type. For example it is very hard to decompile binary files like activex dll's. Next to that there are executables that requires Just-In-Time activation and compile while running the program (.NET platform).

There are programs available that can decompile the executables to assembler code, and I have seen some good java decompilers. Check out BlackICE for a nice disassembler.

Next to that it is possible to write binary code all by yourself. In older times you had to do it that way (there wasn't even assembler available). So programmers had to know the addresses they wanted to make use of. As you can imagine that is a very slow way of programming. But exactly the same thing can be done by checking the binary code and reading it back as to find out how a certain thing works. These days this is very hard especially with the operating systems that are around.

If it is pure 8086/8088 binary code (.COM) you can use the CLI program debug.

Say you have the file test.com.

debug test.com
U xxx ; where xx is the adress you want to start unassembling

0x0 - 0x0100 is the program data, the argv etc.
from 0x0100 on its the code itself.
Assembler is very interesting and allows you to understand the nature of computers at a very deep level. Definitely recommended


Excellent this is what I was looking for, If i had explained myself a little clearer it would have been easier for you.
Thanx again Mate