******************************************** * dATE: 28.09.2001 * * pROGRAM: PatchME v1.0 by lock3r+DcrkS * * PatchME v1.2 by lock3r+DcrkS * * wHERE: www.dcrks.prv.pl * * tOOLS: SoftICE * * W32dasm_v8.93 * * Hex Workshop_v3.11 * * aNTY tOOLS: u mnie chodza * * pACKED: No * * lEVEL: very easy * ******************************************** hi ALL students! No widze ze jednak sa jakies pytania, a taka byla cisza na liscie, (no i co tak strasznie zadawac pytania?) widze ze jednak jest potrzebne wyjasnienie. Bo jednemu nie znika z pamieci, drugiemu cos tam innego, na pewno jest kilka, jak nie kilkanascie sposobow rozwalenia tego. Ja opisze jak ja je patchnalem (w 5 minut)! ---===!!!WARNING!!!===--- Jesli miales jakiekolwiek problemy z tymi PatchME to nie wystarczy przeczytanie tego tekstu, lub co gorsza przelecenie go paskiem przewijania w stylu: "to wiem, tak myslalem, a tu cos nowego zapamietam itp." PROSZE PRZEROBIC GO PRAKTYCZNIE =1= PatchME v1.0 by lock3r+DcrkS Najpierw opisze jak mozna zpatchowac za pomoca SI a pozniej za pomoca W32dasm. No to uruchamiamy, widzimy "Your Trial was ExpireD!" wiec W32dasm i Open File to Disassemble. Klikamy na ikonke "Imp" z jakich funkcji korzysta, znajdziemy ExitProcess, SetUnhandledExceptionFilter, MessageBoxA wiec program tak na prawde nie sprawdza zadnego czasu bo nie widac zadnych API zwiazanych z czasem. Wiec to tylko MessageBox z napisem. ROZWALENIE SofteICE'm: ---------------------- Wejdz do SI, bpx MessageBoxA, wyjdz z SI, uruchoma patchme, SI sie zlapie, nacisnij F11, kliknij na OK, spowrotem jestes w SI. 00401014 B900000000 MOV ECX,00000000 00401019 51 PUSH ECX 0040101A 51 PUSH ECX 0040101B 6800304000 PUSH 00403000 00401020 6850304000 PUSH 00403050 00401025 6800000000 PUSH 00000000 0040102A E8D9FFFFFF CALL USER32!MessageBoxA ;Trial ExpireD 0040102F E900000000 JMP 00401034 ;tu jestesmy 00401034 6800000000 PUSH 00000000 00401039 6844104000 PUSH 00401044 0040103E FF2508204000 JMP [KERNEL32!ExitProcess] ;Exit 00401044 B900000000 MOV ECX,00000000 00401049 51 PUSH ECX 0040104A 51 PUSH ECX 0040104B 6829304000 PUSH 00403029 00401050 687A304000 PUSH 0040307A 00401055 6800000000 PUSH 00000000 0040105A E8A9FFFFFF CALL USER32!MessageBoxA ;Good Work 0040105F E9D0FFFFFF JMP 00401034 ;jmp do Exit to chyba jasne co trzeba zrobic, jestesmy akurat po wyswietleniu Message z Trial Expired, a my chcemy zeby nam wyswietlalo ze Good Work. Wiec zalozmy pulapke przed wywolaniem Message z Trial Expired bpx 0040101B, wychodzimy z SI, uruchamiamy patchme i jestesmy na bpx. My chcemy stad skoczyc no wlasnie pod 00401049 jeszcze nizej czy gdzie? Jak juz powinniscie wiedzies MessageBox wywolywany jest z trzema parametrami wiec ten jump ma byc pod 0040104B. Najpierw spisujemy sobie opcody (te hexy po lewej stronie PUSH) co mamy zmienic: 6800304000 i jeszcze ten ponizej 6850304000 (po w pliku moze byc wiecej takich samych). Teraz komenda "a" (wiecie co oznacza) i piszemy JMP 0040104B nastepnie Enter i widzimy ze te opcod zmienilo na EB1A wiec to tez sobie zapiszmy na kartke. Teraz Hex Edytor i funkcja szukania klepiemy 68003040006850304000 i jak znajdzie to jeszcze raz szukamy czy nie ma gdzies indziej jak jest to musimy jeszcze raz spisac wiecej opcodow (zdaje mi sie ze to juz bylo w ktorejs lekcji, wiec nie przedluzam) i zamieniamy: 6800304000 ^^^^^^^^^^ na EB1A909090 te 90 znaczy nopy po to aby zgadzala sie ilosc bajtow. No i otrzymujemy ladny komunikat "Good Work" ROZWALENIE W32dasm'em --------------------- Open File to Disassemble, otwieramy STR klikamy x2 na "You Trial was" przewijamy do: * Referenced by (U)nconditional or (C)onditional Jump at Addresses: |:00401096(U), 0040109D(C) <- czyli skok z pod tych adresow klikamy dwukrotnie prawym klawiszem myszy na jednym z adresow, przenosi nas do innej czesci kodu i co macie zrobic: -spisac offsety i zamienic offset @496 jmp na nopy czyli F979FFFFFF na 9090909090 offset @49D jne na nopy czyli 0F8571FFFFFF na 909090909090 offset @4AA ja na jmp czyli 7798 na EB98 Chyba wiecie dlaczego tak? Jesli by wam nie szlo to mozecie takze zamienic pod offsetem @480 jmp na nopy. =2= PatchME v1.2 by lock3r+DcrkS ROZWALENIE SofteICE'm: ---------------------- Podobnie sytuacja tez wyglada z tym PatchME tylko troche ruszyc glowka: Macie zrobic aby skok do prawidlowego MessageBox'a wykonywal sie przed ladowaniem zlego czyli pod adresem 00401041 ma byc jmp do adr. 0040101E Mysle ze wiecie jak to zrobic (chociazby po przeczytaniu punktu =1=) ;-> ROZWALENIE W32dasm'em --------------------- Pomyslcie!, ja zmienilem pod offsetami: @4f1 @40e @4c6 To by bylo na tyle, powodzenia i do czytania w nastepnych tekstach! ����������ͻ �Ĺ cONTACT: �Ŀ � ����������ͼ � ����������������������������������������������Ŀ � ManSun mEMBER oF UnderPL cRACKING gROUP � � eMAIL:[ mansun@go2.pl ] � � UnderPL sITE:[ www.under2001.prv.pl ] � � UnderPL eMAIL:[ under@under2001.prv.pl � �����������������������������������������������
Daroo19