If youre wanting to learn cracking, you must understand fundamental concepts of programming,
and machine architecture, and possess a good working knowledge of the operating system youre
working with. If you dont have all three, chances are youre not really going to progress much.
If you have some programming experience, then this generally helps, depending on the language.
But many newbies decide they want to instantly become crackers without any programming
experience. Do yourself a favour, and learn how to program first
I am often asked by people, what is the best programming language to learn ? The answer to
this is never clear cut, as it depends on what your ultimate aims are. A good knowledge of
Assembly language is a great help in reversing, but many people are able to crack well without
necessarily being able to program in assembly. As long as you can fully understand the flow
and effects of the instructions, this is often enough.
Additionally, you might want to consider learning a higher level language such as C. The web
is infested with programming tutorials, do a web search. Also, Borland (http://www.borland.com)
produce a free C compiler (http://www.borland.com/bcppbuilder/freecompiler/). LCC is another
alternative which I use personally. Knowing C will allow you to quickly produce keygens, patches
and any other tools you need to complete a crack, although a good assembly coder is able to produce
these in about the same time scale.
Knowing a language like C will also aid you in studying disassembly. Various compilers produce
different object code, and you can often tell what compiler was used, just by studying the
generated opcodes. Although this is less of an issue as you can use IDA flirt recognition to
identify the compiler too.
High level languages such as Visual Basic are not really much of a benefit to your cracking
adventures. Although you can produce equivalent tools in VB, if youre writing a complex keygen,
and its not quite write, you lose the ability somehwat to study the disassembly to see where exactly
its going wrong.
So to summarise, if youre not technically minded, learn C, otherwise immerse yourself in assembly language.
But then if youre not technically minded, why are you even wanting to become a cracker ?