Tutorial Number 12 Written by Etenal Bliss Email: Eternal_Bliss@hotmail.com Website: http://crackmes.cjb.net http://surf.to/crackmes Date written: 12th Mar 1999 Program Details: Name: Crackme v2.0 Author: CoSH Tools Used: W32Dasm Cracking Method: Looking at String Data Reference Viewing Method: Use Notepad with Word Wrap switched on Screen Area set to 800 X 600 pixels (Optional) __________________________________________________________________________ About this protection system No disabled function. Protection is based on a code you enter. This code has nothing to do with your UserName. But you have to enter a UserName of 6 or more characters. __________________________________________________________________________ String Data Reference in W32Dasm Run the CrackMe a few times first. You will get a message box showing you "One of the Details you entered was wrong". And the CrackMe exits... Start your W32Dasm and open the CrackMe to disassemble it. Under "String Data Items", you will see "ERROR" "One of the Details you entered" "Well done," "YOU DID IT" Double click on the "One of the Details you entered" string. You will see this: ===============================Code Start================================= :0040150C E833030000 Call 00401844 :00401511 8B07 mov eax, dword ptr [edi] :00401513 803836 cmp byte ptr [eax], 36 :00401516 751E jne 00401536 <-- jump to "Bad" message :00401518 80780132 cmp byte ptr [eax+01], 32 :0040151C 7518 jne 00401536 <-- jump to "Bad" message :0040151E 80780238 cmp byte ptr [eax+02], 38 :00401522 7512 jne 00401536 <-- jump to "Bad" message :00401524 80780337 cmp byte ptr [eax+03], 37 :00401528 750C jne 00401536 <-- jump to "Bad" message :0040152A 8078042D cmp byte ptr [eax+04], 2D :0040152E 7506 jne 00401536 <-- jump to "Bad" message :00401530 80780541 cmp byte ptr [eax+05], 41 :00401534 7417 je 0040154D <-- jump to "Good" message * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:004014E4(C), :004014F3(C), :00401516(C), :0040151C(C), :00401522(C) |:00401528(C), :0040152E(C) <-- take note of the locations | :00401536 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"ERROR" | :00401538 6864304000 push 00403064 * Possible StringData Ref from Data Obj ->"One of the Details you entered " ->"was wrong" | :0040153D 6838304000 push 00403038 <-- this is where you :00401542 8BCE mov ecx, esi will land ===============================Code End==================================== You will land at 0040153D. Scroll up a bit and you will see that this part of the code is "used" when a conditional jump points to it... * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:004014E4(C), :004014F3(C), :00401516(C), :0040151C(C), :00401522(C) |:00401528(C), :0040152E(C) Now, scroll up a bit more to see the codes at :00401516, :0040151C, :00401522, :00401528, :0040152E **These are the locations that will cause the crackme to jump to "Bad" Message Can you that what is in eax is compared char by char to 36, 32, 38, 37, 2D, 41 ? 36(hex) = 6 32(hex) = 2 38(hex) = 8 37(hex) = 7 2D(hex) = - 41(hex) = A And if any of the char is not the same, you will jump to "Bad" message. At the last compare, if it is the same, you will be brought to the "Good" message... What does this mean? It means that the serial is hard-coded and has got nothing to do with your Name!! Well, it is not exactly right... If you enter less than 6 char for the name, you will get the "Bad" message even if you type in the correct serial. So, try with any name with 6 or longer chars. e.g. ETERNAL BLISS for Name 6287-A for Serial. You will get "Well done,ETERNAL BLISS" So, that is what the Name box is for... CrackMe Cracked!! __________________________________________________________________________ Final Notes This tutorial is dedicated to all the newbies like me. And because I'm a newbie myself, I may have explained certain things wrongly So, if that is the case, please forgive me. Email me if there is anything you are not clear about. My thanks and gratitude goes to:- The Sandman All the writers of Cracks tutorials and CrackMes