A crackme is a small computer program designed to test a programmer's reverse engineering skills.[1] Crackmes are made as a legal way to crack software, since no intellectual property is being infringed.

Crackmes often incorporate protection schemes and algorithms similar to those used in proprietary software. However, they can sometimes be more challanging because they may use advanced packing or protection techniques, making the underlying algorithm harder to analyze and modify.

Keygenme

edit
 
An example of a keygenme.

A keygenme is specifically designed for the reverser to not only identify the protection algorithm used in the application but also create a small key generator (keygen) in the programming language of their choice.

Most keygenmes, when properly manipulated, can be made self-keygenning. For example, during validation, they might generate the correct key internally and compare it to the user's input. This allows the key generation algorithm to be easily replicated.

Anti-debugging and anti-disassembly routines are often used to confuse debuggers or render disassembly output useless.[2] Code obfuscation is also used to further complicate reverse engineering.[3]

References

edit
  1. ^ "crackmes.de Frequently Asked Questions". Archived from the original on 2006-07-14. Retrieved 2008-10-31.
  2. ^ "Windows Anti-Debug Reference". Archived from the original on 2008-05-15.{{cite web}}: CS1 maint: unfit URL (link)
  3. ^ "Code Obfuscaton". Archived from the original on 2008-10-21. Retrieved 2008-10-31.
edit
  • Crackmes.one - Includes user-submitted crackmes for Windows and Linux, in languages such as C++ and Java.
  • X64dbg - A debugger used both by beginners and experienced people.