Crackear qualquer sistema é impossível sem as ferramentas certas. Abaixo iremos discutir as diferenças entre as existentes. E de posse do conhecimento destas, iremos desenvolver um exemplo suficientemente completo para se entender como crackear um executável.
As vezes precisamos que nosso programa se comporte de forma diferente quando rodar em uma máquina virtual. Principalmente quando queremos dificultar o processo de engenharia reversa do nosso programa, antecipando o ambiente em que o cracker trabalhará, ou ainda, queremos restringir algumas funcionalidades que teriam a segurança reduzida, se rodasse numa MV.