Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: source code can be retrieved from an engine

Author: Joseph Tadeusz

Date: 22:53:28 02/03/06

Go up one level in this thread


On February 03, 2006 at 21:04:47, Dann Corbit wrote:

>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.

You said: "100% correct decompilation is PROVABLY impossible"

I understood you meant 'for any program',
but I suppose you meant 'for all programs'.



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.