| [
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 |