FireWorx Crackme #3 Tuturial А А А А мВ мм АА ммммў ААп ўммм мм олВн мпп пў п АА п ўп ппм ллн ў ммпп ммллпллмм мммлллмм пмм ў мммлллммолл ммллллмм пмм мпп млллп пллВм мллллп пллВм пм ммп мллллп пллВлл мллллп пллВм пп м олллн А оллВн оллллн А оллВн м пп оллллн А оллллн оллллн оллВн ўллммВн лллл АБА лллл лллллммм пппп олммлВ ллллл А ллллл лллллммппппппп олллл АА Вллн АБВБА оллл ммммм пппллллм ллллн Влллн олллл Влллн АААААА А лллн А оВллл АБВБА ВлллнВлллн ААА олллл оВлл Влллн мпп олллл Влллн ААААААА Вллн оВллл АБА ВлллноВллл А Влллн оВлл оВллл Влллн оВллл оВллл оВВллн А оВлллн ВВллн оВллл Влллн ВВллн А оВллл ВВллн ВВВллн ўВВВВлл А Влллллў пВВлм мВллп оВлллл м пВллм мВллп пВллм пВлллм пппллм мВлппп пплпп мВВВпп пплпп пппп js пппппмм А iNSiDE ммппппп А пм А АА мп АА А АА Tutor : duelist Data Wrote : April 6, 1999 Who : Beginner Target : CrackMe #3 by FireWorx Size : 329kb (!) Tools Used : SoftIce, Hiew (optional!) Method : Code sniffing -=* Welcome *=- Well hi there. Although i've been cracking 'crackmes' for long time, i'd never written a tuturial for one of those, and this will be my first one due to a request from Eternal Bliss :) -=* Protection *=- Well this crackme is a VERY simple one, and requires only a password, which normally (if not always) means that it is hardcoded in the program! (see the first aproach for an example of a method that can be used to defeat this kind of protections...) -=* 1st Aproach *=- Since we know already that the password should be hardcoded we can try the following: 1) start hiew and open the crackme exe 2) press F7 (while in text mode!) and search for 'password' 3) after 'some' searches, you will reach this section: Password EditCaptionEnter your passwordScrambleиіХЩизіжƒєЩжіЦєƒPassword RIDERSINTHENIGHT NoOfRetriesLeftH TPF0 TPasswordForm PasswordFormLeft 4) Q: so, what do you think that is strange in all that strings? A: ahh... uhh... 'Scramble'? Q: yes, can be... and what more? A: 'RIDERSINTHENIGHT'? 5) So, fire up the crackme, click register and enter 'Scramble'... Ops, it didn't work! Now, try 'RIDERSINTHENIGHT'... BINGOOOO! 6) Now that you've done it using this method (sometimes its easier, others is not) please continue reading to do it using softice :) -=* 2nd Aproach *=- Now, we'll do it the ol' fashioned way, that is, Softice! 1) Fire up the crackme exe, click register, and enter any password you want! 2) Switch to softice (Control + D) and "bpx hmemcpy" (without the quotes... i use hmemcpy because delphi apps don't usually call GetWindowTextA and so) 3) Before continuing, one tip: in this kind of program, when you're in softice try first to dump registers before the calls, don't bother entering them (d eax, etc) 4) Click 'Ok' and blamm! You're into softice. Now press F12 exactly 12 times to get back to the program code, you will arrive here: .000454B2: E849E3FDFF call .000023800 ;reads pass we entered -> .000454B7: 8B45F8 mov eax,[ebp-08] ;our fake pass is here .000454BA: 8D55FC lea edx,[ebp-04] .000454BD: E84220FCFF call .000007504 ;didn't bother to check .000454C2: 8B45FC mov eax,[ebp-04] ;our fake pass, still in eax .000454C5: 8B9398000000 mov edx,[ebx+98] ;real pass moving into edx! .000454CB: E874E6FBFF call .000003B44 ;type "d edx" without quotes to see real pass! 5) If you type "d edx" at 454CB you will get the real pass, 'RIDERSINTHENIGHT', remember it from the first aproach?! -=* Final Notes *=- Well hope you liked my first tuturial on a crackme (actually a very basic one!) and i soon will release others to be included at Eternal Blisses' page. I tryed to show you, that there are ALWAYS more than 1 way to get past a protection, the difference is that some are more difficult and more time consumpting.