- Rob Northen copylock
Rob Northen Copylock is a copy-protection system to prevent disk duplication with standard floppy disk drives on the
Amiga ,Atari ST andPC-DOS platforms. It was used mainly to copy-protect games from being copied by regular users.A copylocked floppy disk contains long tracks, which can be read on a standard floppy drive but are impossible to write without a sophisticated disk duplication machine. The disk contains a special loader for long tracks and an encrypted code block. The encrypted code verifies that the disk is authentic, that it contains the original long track and the protection. To prevent a hostile programmer from bypassing the execution of the encrypted code (that checks authenticity), the encrypted code may cause side-effects that are later checked when the program is being run. Failing these checks would cause the program to prevent further use. Therefore a successful attacker would have to insert a new loader to replace the long track loader, bypass the encrypted code and bypass all later checks during the run-time of the program.
On the machine language level the copylock works by using
Motorola 68000 trace mode that causes the processor to execute a specific trace vector before each instruction in the main program. The trace vector decodes the machine language code just-in-time before it is executed and re-encrypts it after it has been executed, so that no more than just one or two instructions are decrypted in the physical memory at any given time. This is called atrace vector decoder . The trace vector decoder system was originally implemented on theAtari platform and afterwards copied to earlyAmiga models, which share the same processor architecture.It was later brought to the PC (circa 1990) as the x86 supports the trace vector the same as the 68000 processor does. (INT 1) It manifested itself in a slightly different way in that the game's executable code was encrypted and "wrapped" by the Copylock loader. At runtime this loader would read 4 sectors from the floppy, and generate checksums from them. These in turn would be used as the keys to decrypt the game code. Once the decryption was done, the loader transferred control to the game program.
A later version was introduced which DIDN'T wrap the game's executable, but became a function call INSIDE the game. This version wasn't very successful at thwarting pirates, as the safety of the loader's "envelope" was no longer present, and the call could be worked around.
External links
* [http://action.reversers.net/rob_northen_interview.html Interview with Rob Northen about his copy-protection systems]
Wikimedia Foundation. 2010.