Web Hosting Talk







View Full Version : de-assembler...


hypernatic.net
02-13-2002, 03:28 PM
Howdy people..

Back in the old DOS days, I had a de-assembler so I could edit software whenever I wanted to do so... Add features and such..

Now, I wonder... Is there such a thing for Win32 code? VB de-assembler? C...?

I know about the legal issues some software might have... But it's for personal use...

jks
02-13-2002, 04:39 PM
Originally posted by hypernatic.net
Howdy people..

Back in the old DOS days, I had a de-assembler so I could edit software whenever I wanted to do so... Add features and such..

Now, I wonder... Is there such a thing for Win32 code? VB de-assembler? C...?

I know about the legal issues some software might have... But it's for personal use...

Sure there is such software. They are mostly known as "decompilers". Search for them on Google.

Expect to be unable to use it for anything at all, unless you know what happens underneath the hood of your computer.

hypernatic.net
02-13-2002, 04:41 PM
Originally posted by jks

Expect to be unable to use it for anything at all, unless you know what happens underneath the hood of your computer.

Why is that?

JDF
02-13-2002, 04:50 PM
I think he just means that unless you know assembler really well the program will not be of much use. Sounds like you had that covered though. Went looking myself and found something rather interesting:

http://www.itee.uq.edu.au/~csmweb/dcc.html

Produces hex, asm, and c code from a binary. Sounds neat.

hypernatic.net
02-13-2002, 04:54 PM
Yeah but that's WAY WAY back :)

like 6 years or so...

But isn't there a way to compile it into VB or VC code or something?

jks
02-13-2002, 04:58 PM
Originally posted by hypernatic.net
Yeah but that's WAY WAY back :)

like 6 years or so...

But isn't there a way to compile it into VB or VC code or something?

You can turn it into anything you like, even a Turing machine :-)

It will however not be any more read-able or understandable than before. The reason is, that much of the "human-imposed structure" is lost when the program is compiled and decompiled. For example the names of variables, the exact loop structure used, etc. may (and often will) disappear.

hypernatic.net
02-13-2002, 05:00 PM
So a decompile and then edit and recompile wont work?? At all??

jks
02-13-2002, 05:31 PM
Originally posted by hypernatic.net
So a decompile and then edit and recompile wont work?? At all??

Ofcourse it'll work.

What I'm saying is, that you most probably won't know what and where to edit (unless it is something very simple you want to edit).

allera
02-13-2002, 07:07 PM
C is a language used by humans, not computers. A computer cannot understand C language. A compiler takes the C code and turns it into a language a computer can understand (binary, hex, whatever you feel like calling it). Assembler is the closest a human can ever come to programming in binary/hex (or so I'm led to believe). The relationship between the assembly and the binary your particular machine can understand is very, very close.

To go backwards means you need to take the binary/hex and convert it into something a human can read. The closest possible thing is assembly, so it tries to convert everything into assembly. The problem is, when the program was compiled in the first place, the variables us humans used to keep track of things turned into binary addresses. To my knowledge, those variable names aren't kept anywhere (unless it's deliberate) and when the program is decompiled, it's a mess. Unless you wrote the program, it's very difficult to do anything with it. I'm sure it's possible, but very difficult.

I once tried out a decompiler back about 6-9 years ago... I saw the output and deleted the decompiler. :)

If you've ever coded in assembly, you know how cryptic it can be (unless you code in it all the time, then it's like writing a book, eh?). Imagine taking that cryptic code, taking out the variable names, restructuring the loops, and then trying to redecypher it. Hehe... Not my idea of fun. At all.

There are also decompilers out there that will go from binary->asm->C. That C code will be pretty darn ugly, I guarantee.

jks
02-13-2002, 07:13 PM
Originally posted by allera
whatever you feel like calling it). Assembler is the closest a human can ever come to programming in binary/hex (or so I'm led to believe).

Well, it's not the closest. Those that remember the programming "way-back-then" has probably tried programming directly in binary (for example setting switches "up" or "down" on the front of the computer, or using similar mechanisms to input the program one byte or "word" at a time). It's however not something that would be handy on a Pentium 4 :-)

Apart from that, I strongly agree with your post.

allera
02-13-2002, 07:19 PM
Originally posted by jks
(for example setting switches "up" or "down" on the front of the computer, or using similar mechanisms to input the program one byte or "word" at a time)
Ok ok, I was thinking more along the lines of a processor with greater than 8-bit processing power. Even less than 8-bit, I would seriously hate to be the guy sitting there programming in 1s and 0s, ups and downs, offs and ons. I hated doing that in projects that involved a simple processor we built that could add and multiply. Took forver...

But you're right, programming in bin/hex is fully possible. Heehee...

jks
02-13-2002, 07:23 PM
Originally posted by allera

Ok ok, I was thinking more along the lines of a processor with greater than 8-bit processing power. Even less than 8-bit, I would seriously hate to be the guy sitting there programming in 1s and 0s, ups and downs, offs and ons. I hated doing that in projects that involved a simple processor we built that could add and multiply. Took forver...

But you're right, programming in bin/hex is fully possible. Heehee...

I even tried that on processors with larger than 8-bit processing power :-)

We had one with 32 switches... another had 8 switches and a button to press that "changed bytes".