RaimundHeid wrote:bob wrote:RaimundHeid wrote:Gian-Carlo Pascutto wrote:This is completely false. There is no need to have the sources from Rybka to confirm Ippolit/RobboLite are clones.
Nothing more is needed than a compile of either of the clone engines and Rybka loaded in a debugger/disassembler. (And someone who knows what he's doing)
You are absolutely right!

More correctly, he is "theoretically absolutely right". Practically right requires that someone actually be willing to do this task. "De-compiling" is beyond a PITA. Far from impossible, but not something one might undertake "just because". If someone were to offer me enough money so that I could take a year off, I'd tackle this in a minute. But it would have to be worth my time, as time is limited and we are currently busily making progress with Crafty daily. I'm not so interested in putting that on hold just to prove what happened in any of these copy/clone cases.
I'm not familiar with decompiling, hence this question:
Some folks wrote it would be easy to get C code from a (Rybka) binary with some clever tool (don't remember the name). If that is true then why do you think it will take a year to complete this proof task? The last sceptics should be convinced as soon as the decompiler generates *some* functions that are similar to those found in IPP/ROB (most probably with enumarated variable names) -- [Similar in the sense that they treat input variables and global variables in identical manner and produce the same output]?
If I had exactly the same "tool" as the cloners, assuming this is what happened, it would be easy. But taking asm code and "de-compiling it" is not a one-to-one process. It is a "one-to-many". That is, there are many C programs that could turn into the same optimized binary. If I use tool A and get source A1, and you use tool B and get source B1, A1 and B1 might be significantly different.
The way you actually have to do this is take a source program and ask, "Given this binary, can I use _every_ assembly language instruction, and conver those into C that looks like the C program we are trying to identify. That is as much "art" as it is "science". Compilers mangle the binary code badly during optimization, everything from in-lining functions to re-ordering instructions to reduce / eliminate memory latency delays or data/name/control dependencies.
It helps to have the target you are trying to reach (the C-source in question) but it it still quite a task to turn the binary into C at all, much less into C that looks similar or identical. And even if you do, there are those that will claim it is made up (as happened the last time this discussion erupted).