W poprzedniej czesci przedstawilem sposób rozpakowywania plików exe za pomoca ProcDump. Okazuje sie, ze program ten moze posluzyc nam do zcrackowania programów zabezpieczonych komercyjnymi pakietamia w stylu TimeLock lub Vbox4 by PreviewSoftware. Zasada dzialania tych zabezpieczen jest stosunkowo prosta. Za przyklad wezmiemy program Ulead Cool3D v2.0 (PCWKomputer 12A/98).
Jezeli zaladujemy program U3dedit2.exe do debuggera (np. SoftIce) pojawi sie nam nastepujacy kod :
014F:004F1000 PUSH DWORD PTR [ESP+0C] 014F:004F1004 PUSH DWORD PTR [ESP+0C] 014F:004F1008 PUSH DWORD PTR [ESP+0C] 014F:004F100C PUSH 55E239F5 -----> przygotowanie adresu 014F:004F1011 PUSH 55AD2D76 -----> spakowanych danych 014F:004F1016 PUSH 55E23DA9 014F:004F101B PUSH 55E23D53 014F:004F1020 CALL [004F11F0] ----> wywolanie 1 funkcji vbox4 014F:004F1026 PUSH FFFFFFFF 014F:004F102B CALL EAX -----> wywolanie programu 014F:004F102D RET 000C
Funkcja CALL [004F11F0] wywoluje procedury (PreviewExecGate..) z bibliotek vbox4, ktore dekoduja pierwsza czesc danych programu a w EAX jest zwracany nowy EntryPoint (w moim przypadku F0000) do rozkodowanych danych. Sledzac dalej program w CALL EAX (F8) przechodzimy do nowego fragmentu kodu :
014F:004F0000 PUSH DWORD PTR [ESP+0C] 014F:004F0004 PUSH DWORD PTR [ESP+0C] 014F:004F0008 PUSH DWORD PTR [ESP+0C] 014F:004F000C PUSH B6A4DD7F 014F:004F0011 PUSH BBC60E1F 014F:004F0016 PUSH 6D171A8C 014F:004F001B PUSH 415F4B5A 014F:004F0020 CALL [004F01D4] ---> nastepna finkcja vbox4 014F:004F0026 PUSH FFFFFFFF 014F:004F002B CALL EAX 014F:004F002D RET 000C
Jak widzimy kod jest analogiczny do poprzedniego. CALL [4F01D4] wywoluje funkcje vbox4, ktora uruchamia procedury sprawdzajace warunki trial i przypadku pomyslnego spelnienia dekoduje reszte programu i danych a w EAX jest zwracany adres rzeczywistego programu (w naszym wypadku Cool3D). W przypadku niepomyslnego sprawdzenia warunkow trial w EAX zwracany jest adres funkcjie ExitProcess, czyli zakonczennia programu. Jezeli przesledzimy dalej nasz kod ( w Call Eax - F8) to wejdziemy na nasz glowny program pod adresem 6CF20. Adres ten jest wart zapamietania, gdyz jest on po prostu EntryPoint glównego programu, który jest juz pelna wersja bez vbox4.
Oki.., wiemy juz wszystko. Rozwiazanie problemu vbox4 polegac bedzie na przeniesieniu z pamieci rozpakowanego programu i zapisaniu go do pliku uruchomieniowgo. Mozna sie pokusic o wykorzystanie SoftIce i np. SoftDump (patrz fravia.org) do zapisania pamieci w plik. Wymaga to jednak dobrej znajomoaci struktury PE-exe i jest uciazliwe a opisywanie tego nie jest naszym celem. Jest proste rozwiazanie poniewaz znamy wspanialy program ProcDump, ktory umozliwia nam zapisanie procesów z pamieci do pliku przy utrzymaniu struktury plików uruchomieniowych.
Jak juz opisywalem w poprzedniej czesci ProcDump posiada plik script.ini w którym zapisywane sa instrukcje debugowania dekodowanych programów. W najnowszej wersji ProcDump32 1.1.6 powinna byc juz gotowa sekcja dla Vbox :
[VBOX Dialog]
L1=LOOK FF,D0 ; szukamy pierwszego call eax
L2=BP ; pulapka na znalezionym adresie
L3=BPREG EAX ; ustawia pulapke na adresie zawartym w rej EAX
; a jak wiemy tam jest adres nastepnej czesci kodu
L4=OBJR ; ustala adres podstawowy szukania na aktualne EIP
L5=LOOK FF,D0 ; szuka drugiego call eax
L6=BP ; zastawia na nim pulapke
L7=STEP ; i dalej juz sledzi zapisujac rozpakowany program
Wazne jest odpowiednie ustawienie opcji procesu ladowania i rekonstrukcji pliku. Poniewaz program spakowany za pomoca vbox4 ma takze spakowane segmenty i tabele danych musimy zaznaczyc opcje rekonstrukcji tzn. Create New Import. W razie problemów wlaczamy takze opcje Ignore Faults w sekcji Trace.
Po pozytywnym rozpakowaniu pliku mozemy takze usunac sekcje WeiJunLi ze struktury naszego nowego pliku (opcje PE Editor). Z ciekawosci zagladnijmy jaki jest EntryPoint naszego pliku - 6CF20. Okii.., lasnie taki mial byc.
Mysle, ze ProcDump wart jest zainteresowania i przecwiczenia. Zawsze mozemy trafic na program skompresowany nieznanego typu kompresorem i wtedy damy sobie rade. Ci co nie znaja ProcDump powini go jak najszybciej sciagnac z http://www.suddendischarge.com/ w sekcji NonDOs wzglednie najnowsze wersje powinny byc na http://pub.vse.cz/pub/msdos/SAC/pc/pack/
CrackPl - (c) hyperreal.art.pl 1998