Add7v1(4).txt

(5 KB) Pobierz
********************************************
*       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    �
                 �����������������������������������������������
Zgłoś jeśli naruszono regulamin