I have not studied this topic for a while. Here are some reverse engineering links (what is legal and what is not legal and why):
http://en.wikipedia.org/wiki/Reverse_engineering
http://www.jenkins-ip.com/serv/serv_6.htm
http://en.wikipedia.org/wiki/ReactOS
http://www.startupgallery.org/gallery/story.php?ii=57
http://www.byte.com/art/9406/sec3/art9.htm
http://lwn.net/Articles/134642/
Also this bit (from here:http://sec.edgar-online.com/2002/03/01/ ... tion10.asp) is quite interesting:
"Reverse Engineering
Reverse engineering is a development method that uses information about
an existing entity to produce a new entity that has some of the same
properties of the existing entity. For example, ARDI has reverse-engineered
the Motorola 680LC040 CPU and has also reverse-engineered 1,200 Macintosh
Classic Operating System routines. In other words, by using information
about the 680LC040 CPU and about the Macintosh Classic Operating System,
ARDI has produced software that performs enough of the same functions of the
CPU and the Operating System to run hundreds of Macintosh programs.
Clean-Room Reverse Engineering
Software that is created that is functionally equivalent to other
software is said to be Clean-Room Reverse Engineered if the creators avoid
directly examining the software that is to be emulated. This can be done by
using published specifications and test programs. Using clean-room reverse-
engineering prevents the developers from including pieces of the software to
be emulated in the emulated software. It does not prevent the developers
from infringing on patents or infringing on look-and-feel copyrights. It
can also be a labor intensive methodology because any behavior that either
isn't documented in the publicly available specifications or that is
incorrectly documented can cause the developers to write, run and analyze
complex tests to determine the true behavior of the system being emulated.
Although Apple's Classic Macintosh Operating System is fairly well
documented by Apple in Inside Macintosh series of books, each error and
omission results has either resulted in an incompatibility in ARDI's
software or the expenditure of time searching for better documentation or
writing, running and analyzing test programs.
Software that is created that is functionally equivalent to hardware is said
to be Clean-Room Reverse Engineered if the creators avoid looking at the
hardware implementation. In general, there is little need to examine the
hardware implementation when emulating a CPU, because CPUs have well-defined
specifications.
Dirty-Room/Clean-Room Reverse Engineering
Dirty-Room Engineering is where the thing being emulated is directly
examined. For example, looking at the individual instructions that make up
a computer program, even if only to determine specifications that aren't
publicly available, is an example of dirty-room reverse engineering. Dirty-
room reverse engineering done by the same engineers who create the emulation
software runs the risk of deliberate or accidental copyright violations by
incorporating portions of the software to be emulated in the emulator. To
avoid this risk, dirty-room reverse engineering can be done in conjuction
with clean-room engineering by using two physically and electronically
isolated teams where one team does dirty-room engineering and the other does
clean-room engineering. In strictly clean-room reverse engineering when it
is determined that the specification that the clean-room engineers are
working from is insufficient to produce the degree of compatibility desired,
the only recourse is to search for additional documentation or to write
tests that are run and analyzed in an effort to gain more information. In
Dirty-Room/Clean-Room Engineering, the clean-room engineers write a
description of the portion of the specification that needs elaboration or
clarification. The dirty-room engineers then use that request to create
additional functional specifications. These functional specifications
should not reveal the way in which the emulated software has been written,
or it would defeat the purpose of having separate clean-room and dirty-room
engineers. One way to prevent such things from occurring is to not allow
the clean-room and dirty-room engineers to talk to each other. Instead all
communication between the two teams is passed through an intermediary who
enforces the protocol that only functional specifications are passed from
the clean-room to the dirty-room.
For complex products, the number of man-hours needed to create an
emulation using dirty-room/clean-room reverse engineering may be less than
the number of man-hours needed to create an emulation using only clean-room
reverse engineering. This will be so when it is considerably easier for
dirty-room engineers to determine hidden specifications, than it is for
clean-room engineers to determine the same hidden specifications through the
construction and analysis of tests.
Strictly Clean-Room Reverse Engineering
Because clean-room engineering can be used in conjunction with dirty-
room engineering, a product is said to be produced as Strictly Clean-Room
Reverse Engineered when no dirty-room engineering is used. To date, ARDI
has used strictly clean-room reverse engineering in constructing its
software, even though doing so has been less efficient than using dirty-
room/clean-room reverse engineering. The benefit to ARDI of using strictly
clean-room techniques is that ARDI has avoided the overhead of having
separate dirty-room engineers and an intermediary. The significant drawback
has been that ARDI's lower operating system layers are not sufficiently
compatible to allow Apple's upper operating system layers to work with them.
Such compatibility may be easier to provide using dirty-room/clean-room
reverse engineering."
Reverse engineering links
Moderator: Ras
-
- Posts: 12778
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
-
- Posts: 2307
- Joined: Wed Mar 08, 2006 8:41 pm
- Location: Brownsville Texas USA
Re: Reverse engineering links
Hi Dann,
It is interesting that you post on reverse engineering. Do you believe that Strelka may be a reverse engineered version of Rybka, and also that a reverse engineered engine does not make it a clone? This would tend to explain the high degree of similarity between Rybka and Strelka, and would also explain your stance that Strelka is not a clone.
It is interesting that you post on reverse engineering. Do you believe that Strelka may be a reverse engineered version of Rybka, and also that a reverse engineered engine does not make it a clone? This would tend to explain the high degree of similarity between Rybka and Strelka, and would also explain your stance that Strelka is not a clone.
- Robin Smith
Re: Reverse engineering links
I think Vas should just protect his @ss!!smirobth wrote:Hi Dann,
It is interesting that you post on reverse engineering. Do you believe that Strelka may be a reverse engineered version of Rybka, and also that a reverse engineered engine does not make it a clone? This would tend to explain the high degree of similarity between Rybka and Strelka, and would also explain your stance that Strelka is not a clone.
-
- Posts: 12778
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Reverse engineering links
I really do not know. It is possible that some information was reverse engineered from Rybka, but I would find it incredible to be able to reverse engineer the whole program.smirobth wrote:Hi Dann,
It is interesting that you post on reverse engineering. Do you believe that Strelka may be a reverse engineered version of Rybka, and also that a reverse engineered engine does not make it a clone?
The reason that I posted the links is that there was a lot of speculation about what is allowed and what is not allowed as far as reverse engineering goes. So I posted some relevant links.This would tend to explain the high degree of similarity between Rybka and Strelka, and would also explain your stance that Strelka is not a clone.
-
- Posts: 10820
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
Re: Reverse engineering links
I guess that if the target is to reverse engineer a program you need to do also some programming by yourself when the target is to generate similiar output to rybka.Dann Corbit wrote:I really do not know. It is possible that some information was reverse engineered from Rybka, but I would find it incredible to be able to reverse engineer the whole program.smirobth wrote:Hi Dann,
It is interesting that you post on reverse engineering. Do you believe that Strelka may be a reverse engineered version of Rybka, and also that a reverse engineered engine does not make it a clone?The reason that I posted the links is that there was a lot of speculation about what is allowed and what is not allowed as far as reverse engineering goes. So I posted some relevant links.This would tend to explain the high degree of similarity between Rybka and Strelka, and would also explain your stance that Strelka is not a clone.
If after some tries you have success in this task in some simple position like king against king then maybe it can help to understand more parts
of the code.
Uri