Author: Sebastian Leibnitz
Date: 09:54:09 01/28/06
Go up one level in this thread
On January 28, 2006 at 12:19:43, Arnon Yogev wrote: >On January 28, 2006 at 10:48:12, Uri Blass wrote: > >>On January 28, 2006 at 10:05:24, P L Patodia wrote: >> >>>On January 28, 2006 at 07:59:03, Uri Blass wrote: >>> >>>>I wonder if there can be some program to detect clones based on the exe files. >>>> >>>>The program does not have to be 100% correct and even detecting part of the >>>>clones is good. >>>> >>>>I remember that there is already a program that help to detect clones based on >>>>source codes and by reverse engineering it should be possible to translate exe >>>>files to source code so I think that the natural step is to have a program that >>>>detects clones automatically for people like Leo by comparing the sources of the >>>>programs that he is using. >>>> >>>>If there is going to be a program that can detect all the clones that were >>>>detected until today and does not have false clone detection by comparing >>>>different free source code programs that are not clones then it is going to be >>>>good. >>>> >>>>Uri >>> >>>It is extremely difficult to write a program which can detect clones based on >>>the exe files. If you compile same program using different compilers, you will >>>get different exe. >> >>Yes but the idea is that the program is first translating the exe file to source >>code and later compare the source codes to find plagiarism. > >This is ridiciouls. Not exactly true. There are dissassemblers and decompilors with which one can indeed recreate *a* source code. (it requires a lot of effort by hand on top and a sound understanding of how the program works, e.g. how chess programs work) It will not be the same code (all the names of variables, procedures, etc. are lost for sure and the program itself might be different in a variety of issues (for example you get all kinds of ugly compilor optimizations put into your algorithms)), but it can be made to run (compile again). I assume the work for a chess programm might take a few weeks, especially getting all the precomputed data (eg. piece square tables and other such stuff) out of the prog, but it should be doable. (requires a lot of assembler code knowledge) If one just wants to take a peek, that can be done quite fast. Well, it depends what you want to peek at. If you just want to look at alphabeta() to see what kind of search tricks have been used, nullmoving with R=2 or R=3 --> That will take less than an hour. EXE > decompile > look att all the functions/procedures that the decompiler found > identify the function(s) which resemble a typical alphabeta-search > behold If you had a look at Crafty's or Fruit's alphabeta, you would be able to detect a clone... (That is if the function has not been rewritten, perhaps its better to search for the var initializing code, or the input/output(UCI) code to detect clones. That is fairly easy to identify, and rarely rewritten in a clone) It gets more tricky to have a look at the precomputed data, etc... (you might as well go for everything..., well not quite) It is possible to protect oneself against such intrusions (making them more difficult), but I doubt any chess engine does so... (Ive never encountered one) >If one could "translate" .exe files to source code, there would be no >competition whatsoever between chess engines, 3d applications, or any other >software on the planet. It (copying by decompiling and then recoding) is done often enough. There is still competition, because 1) it is illegal (most often) to do what I described above 2) because you might think your approach is superior and pursue that 3) because it is sometimes easier to code sth. yourself than to wade through your opponents code/source for a few lines of trickery 4) while your are copying your opponents work, they are advancing they are product and you are constantly behind... >perhaps you can detect recursive patterns using reverse engineering in order to >detect clones, but that's as far as you'll ever get. Mhh, you might apply reverse engineering to the procedure I described above.
This page took 0.01 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.