|Unpack vbox4 #2|
[ Ulead COOL 3D 2.0 crack with ProcDump ]|

W poprzedniej części przedstawiłem sposób rozpakowywania plików exe za pomocą ProcDump. Okazuje się, że program ten może posłużyć nam do zcrackowania programów zabezpieczonych komercyjnymi pakietami w stylu TimeLock lub Vbox4 by PreviewSoftware. Zasada działania tych zabezpieczeń jest stosunkowo prosta. Za przykład weˇmiemy program Ulead Cool3D v2.0 (PCWKomputer 12A/98).
Jeżeli załadujemy program U3dedit2.exe do debuggera (np. SoftIce) pojawi się nam następujący 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] wywołuje procedury (PreviewExecGate..) z bibliotek vbox4, które dekodują pierwszą część danych programu a w EAX jest zwracany nowy EntryPoint (w moim przypadku F0000) do rozkodowanych danych. Śledząc 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] wywołuje funkcje vbox4, która uruchamia procedury sprawdzające warunki trial i przypadku pomyślnego spełnienia dekoduje resztę programu i danych a w EAX jest zwracany adres rzeczywistego programu (w naszym wypadku Cool3D). W przypadku niepomyślnego sprawdzenia warunków trial w EAX zwracany jest adres funkcje ExitProcess, czyli zakończenia programu. Jeżeli prześledzimy dalej nasz kod ( w Call Eax - F8) to wejdziemy na nasz główny program pod adresem 6CF20. Adres ten jest wart zapamiętania, gdyż jest on po prostu EntryPoint głównego programu, który jest już pełną wersją bez vbox4.

Oki.., wiemy już wszystko. Rozwiązanie problemu vbox4 polegać będzie na przeniesieniu z pamięci rozpakowanego programu i zapisaniu go do pliku uruchomieniowego. Można się pokusić o wykorzystanie SoftIce i np. SoftDump (patrz fravia.org) do zapisania pamięci w plik. Wymaga to jednak dobrej znajomości struktury PE-exe i jest uciążliwe a opisywanie tego nie jest naszym celem. Jest proste rozwiązanie ponieważ znamy wspaniały program ProcDump, który umożliwia nam zapisanie procesów z pamięci do pliku przy utrzymaniu struktury plików uruchomieniowych.

Jak już opisywałem w poprzedniej części ProcDump posiada plik script.ini w którym zapisywane są instrukcje debugowania dekodowanych programów. W najnowszej wersji ProcDump32 1.1.6 powinna być już gotowa sekcja dla Vbox :

[VBOX Dialog]
L1=LOOK FF,D0
; szukamy pierwszego call eax
L2=BP
; pułapka na znalezionym adresie
L3=BPREG EAX
; ustawia pułapke na adresie zawartym w rej EAX
; a jak wiemy tam jest adres następnej części kodu
L4=OBJR
; ustala adres podstawowy szukania na aktualne EIP
L5=LOOK FF,D0
; szuka drugiego call eax
L6=BP
; zastawia na nim pułapke
L7=STEP
; i dalej juz śledzi zapisując rozpakowany program

Ważne jest odpowiednie ustawienie opcji procesu ładowania i rekonstrukcji pliku. Ponieważ program spakowany za pomocą vbox4 ma także spakowane segmenty i tabele danych musimy zaznaczyć opcje rekonstrukcji tzn. Create New Import. W razie problemów włączamy także opcje Ignore Faults w sekcji Trace.

Po pozytywnym rozpakowaniu pliku możemy także usunąć sekcje WeiJunLi ze struktury naszego nowego pliku (opcje PE Editor). Z ciekawości zaglądnijmy jaki jest EntryPoint naszego pliku - 6CF20. Okii.., właśnie taki miał być.

Myślę, ze ProcDump wart jest zainteresowania i przećwiczenia. Zawsze możemy trafić na program skompresowany nieznanego typu kompresorem i wtedy damy sobie rade. Ci co nie znają ProcDump powinni go jak najszybciej ściągnąć z www.procdump32.cjb.net

made by by Gustaw Kit - 24 listopad 1998



All rights reserved for CRACKPL 1998 - 2oo2 . Designed by hauer