How to crack components for Delphi: AHM TritonTools 2000 Beta 1.3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ URL: http://www.tritontools.com/index_e.html Cracker: tKC/CiA '99 Many people asked me to write a tutor how to crack the components, and I decided to write this quickly. There are many components with different protections, most of 'em can be defeated on this way I'm teaching you below. It's pretty easy, let's start! Oh wait, this time I'll use AHM2000 for D4 (Delphi 4) but it can be done with D3! ;) Step 1. Run Delphi and install the components. (Components/Install Packages) Step 2. Open a new form and put 1 of the AHM components on the form (let's say we'll use AHMIEButton) and compile PROJECT1.EXE! Step 3. Quit Delphi, run PROJECT1.EXE, looks fine, nothing happens. Step 4. Set your date ahead to 2000 year, and run again PROJECT1.EXE. Step 5. *boom* Expired! Also it loads your Netscape or IE4/5 or your default web browser. Not nice eh? Ok, now we'll work.. Step 6. Copy PROJECT1.EXE to PROJECT1.W32, also copy to PROJECT1.EXX for backup.Step 7. Load your W32Dasm and open PROJECT1.W32, done? Ok, click Imported Functions and double click on kernel32:GetLocalTime. Again double it. Step 8. Now you'll see like: * Referenced by a CALL at Addresses: |:004443D3 , :004455BE :00408440 83C4E8 add esp, FFFFFFE8 :00408443 8D442408 lea eax, dword ptr [esp+08] :00408447 50 push eax * Reference To: kernel32.GetLocalTime, Ord:0000h :00408448 E85BD9FFFF Call 00405DA8 (The address might be different coz of your Delphi's runtime files) Step 9. Now notice referenced calls above, we'll try Address 4455BE. Press Shift-F12, type 4455BE and let's go! Step 10. Now we get the following: :004455BE E87D2EFCFF call 00408440 <--- that's where we were.. :004455C3 DC5DF4 fcomp qword ptr [ebp-0C] :004455C6 DFE0 fstsw ax :004455C8 9E sahf :004455C9 7609 jbe 004455D4 <--- check if it expires * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004455D2(C) :004455CB E818FEFFFF call 004453E8 <--- NAG and shell execute :004455D0 84C0 test al, al your web browser! Step 11. Ok, what now? We'll change JBE 004455D4 to JMPS 004455D4, the offset address is 449C9, right? Step 12. Run HIEW, open PROJECT1.EXE, press F5 and enter 449C9.. Step 13. Change 76 to EB by using F3, then save it (F9) and it'll look like: 000449C9: EB09 jmps 0000449D4 -------- (1) 000449CB: E818FEFFFF call 0000447E8 -------- (2) 000449D0: 84C0 test al,al 000449D2: 74F7 je 0000449CB -------- (3) 000449D4: 803B00 cmp b,[ebx],000 ;" " Step 14. Now run PROJECT1.EXE. Kool, it doesn't expire! Is it done now? NO! ;) Step 15. Run Delphi and UNINSTALL your AHM packages, then quit Delphi. Step 16. Let's goto your AHM folder where you've installed your packages. Remember we've used AHMIEButton from Enhanced components, we'll need to find which file does it use. Let's try at AHMEnhancedD40.bpl.. Step 17. Run HIEW and open AHMEnhancedD40.bpl, press F7 to search for "76 09" (in bytes). Now we find: 00004EFD: 7609 jbe 000004F08 -------- (4) 00004EFF: E818FEFFFF call 000004D1C -------- (5) 00004F04: 84C0 test al,al 00004F06: 74F7 je 000004EFF -------- (6) Step 18. Change 76 to EB and save it. Open another file: AHMEnhancedClass.dcu.. Press F7 to search for "76 09" and we find: 000067E6: 7609 jbe 0000067F1 -------- (3) 000067E8: E80000 call 0000067EB -------- (4) 000067EB: 0000 add [bx][si],al 000067ED: 84C0 test al,al 000067EF: 74F7 je 0000067E8 -------- (5) Step 19. Change 76 to EB and save it! Now run your Delphi and re-install your AHM package and put AHMIEButton on the form again, compile it! Step 20. Set your date to year 2000 (if you've changed back to 1999 earlier) Run your compiled project. Does it expire? NO! Kool! Easy?! :) Step 21. Now you can do with other components on the same way above. Step 22. Enjoy it, tKC................email: tkc@reaper.org