Author: Dann Corbit
Date: 18:04:47 02/03/06
Go up one level in this thread
On February 02, 2006 at 10:33:09, Joseph Tadeusz wrote:
>On January 31, 2006 at 14:22:36, Dann Corbit wrote:
>
>>On January 28, 2006 at 16:07:15, Uri Blass wrote:
>>
>>>On January 28, 2006 at 15:54:46, Sebastian Leibnitz wrote:
>>>
>>>>Look here:
>>>>
>>>>http://www.program-transformation.org/Transform/AutomaticDecompiler
>>>
>>>Thanks
>>>
>>>If I understand correctly it is even not possible to get assembly code of a
>>>program automatically and the user need to guess things.
>>
>>100% correct decompilation is PROVABLY impossible (it has been shown to be
>>equivalent to the question "Will the Turing machine halt?")
>>
>>On the other hand, for specific machines and specific compilers, it is possible
>>to write decompilers that are generally helpful most of the time.
>>
>>You can't turn the hamburger back into the cow, no matter what anyone says. But
>>you can figure out things like "What kind of cow was it?" "What part of the cow
>>did this come from?"
>>
>>The comments are gone. The helpful variable names are gone. The code will be
>>much larger and will have been rearranged by the compiler.
>>
>>We can take a decompiler or disassembler and get back half of the information we
>>are looking for. With human intervention, maybe 75%. But we are not going to
>>get back our original program.
>>
>>That's on the one hand. On the other hand, with something like the IDA together
>>with someone who knows assembly can clearly recover the basic algorithms.
>>
>>On the other, other hand, it is going to be a lot of work. Nobody is going to
>>push a button and have the original program spit out the other end. It is going
>>to be a program similar to the original (clearly NOT identical) and with most of
>>the human readable stuff stripped out. So several passes would be needed to
>>figure out what is going on.
>>
>>Consider even a program with all the variable names and comments intact like
>>Fruit 2.1 or Crafty 19.20 as examples. Will you simply read and understand 100%
>>of what is going on? Now change all the variable names to things like EAX and
>>remove all the comments. How about now?
>
>Take this program:
>
>int main()
>{
> return 0;
>}
>
>A decompiler gives this:
>
>L00401000()
>{
> return 0;
>}
>
> - we know it has to be main().
> - we know it has to return an int.
> - we know include files are not necessary.
>
>All this disproves your point that 100% correct decompilation is impossible.
>
>QED
I saw 100 ducks. All of them were white.
Therefore, ducks are white.
QED.
There is a whole in deductive logic. The hole is that the first duck that comes
along that isn't white proves that I was wrong.
You showed one program that was correctly decompiled. Now show that the other
infinite quantity is also correctly decompiled.
Put another way,
"All odd numbers are prime!"
Look:
1, 3, 5, 7
All of them are odd. All of them are prime (ignoring 1, but 1 was a prime based
upon some old definitions).
Again, my examples did not demonstrate the correctness of my WRONG statement.
In fact, they had no bearing on it whatsoever.
Your programs is a white duck, wearing the number 3.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.