From Wikipedia, the free encyclopedia

A crackme (often abbreviated by cm[citation needed]) is a small program designed to test a programmer's reverse engineering skills.[1]

They are programmed by other reversers as a legal way to crack software, since no intellectual property is being infringed upon.

Crackmes, reversemes and keygenmes generally have similar protection schemes and algorithms to those found in proprietary software. However, due to the wide use of packers/protectors in commercial software,[further explanation needed] many crackmes are actually more difficult as the algorithm is harder to find and track than in commercial software.[further explanation needed]


An example of a keygenme.

A keygenme is specifically designed for the reverser to not only find the protection algorithm used in the application, but also write a small keygen for it in the programming language of their choice.

Most keygenmes, when properly manipulated, can be self-keygenning. For example, when checking, they might generate the corresponding key and simply compare the expected and entered keys. This makes it easy to copy the key generation algorithm.

Often anti-debugging and anti-disassemble routines are used to confuse debuggers or make the disassembly useless.[2] Code-obfuscation is also used to make the reversing even harder.[3]


  1. ^ " 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.

External links[edit]