Basically it works like this,your input gets hased and compared to stored hashed thats inside crackme. Stored hash is : 97328946466865e882e741277903962e7f1ca9cbb4e71948d740bbd38f702f3c <- crackmes hash. To patch application put bp on MessageBoxW and check the call stack. The address in my case is the second one on the call stack: 097044E3 - 8B CE - mov ecx,esi From this address scroll up and you will see : 097044A7 - 74 10 - je 097044B9 097044A9 - C6 05 744ED005 01 - mov byte ptr [05D04E74],01 { (0),1 } 097044B0 - 8B CE - mov ecx,esi 097044B2 - E8 CDE96500 - call 09D62E84 097044B7 - EB 2A - jmp 097044E3 097044B9 - C6 05 744ED005 00 - mov byte ptr [05D04E74],00 { (0),0 } Patch the first one 097044A7 - 74 10 - je 097044B9 to jne 097044B9 and that should be it.