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.
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 ?