07.02.2015 Views

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

0045E310 > /B8 FAE24500<br />

0045E315 . |B9 15000000<br />

0045E31A > |803408 7F<br />

0045E31E .^|E2 FA<br />

0045E320 .^|E9 D6FFFFFF<br />

MOV EAX,PEiD.0045E2FA<br />

MOV ECX,15<br />

XOR BYTE PTR DS:[EAX+ECX],7F<br />

LOOPD SHORT PEiD.0045E31A<br />

JMP PEiD.0045E2FB<br />

Ponovicemo isti postupak od malopre i postavicemo breakpoint na 0045E320,<br />

pa cemo pritisnuti F9 da dodjemo do bp-a a onda F8 da izvrsimo skok. I opet<br />

zavrsavamo na delu koda koji nije analiziran od strane Ollyja. Posle pritiska<br />

na CTRL+A pojavljuje se ovo:<br />

0045E2FB > /B8 E5E24500<br />

0045E300 . |B9 15000000<br />

0045E305 > |803408 7F<br />

0045E309 .^|E2 FA<br />

0045E30B .^|E9 D6FFFFFF<br />

MOV EAX,PEiD.0045E2E5<br />

MOV ECX,15<br />

XOR BYTE PTR DS:[EAX+ECX],7F<br />

LOOPD SHORT PEiD.0045E305<br />

JMP PEiD.0045E2E6<br />

Ponovicemo isti postupak od malopre i postavicemo breakpoint na 0045E30B,<br />

pa cemo pritisnuti F9 da dodjemo do bp-a a onda F8 da izvrsimo skok. I opet<br />

zavrsavamo na delu koda koji nije analiziran od strane Ollyja. Posle pritiska<br />

na CTRL+A pojavljuje se ovo:<br />

0045E2E6 > /B8 D0E24500<br />

0045E2EB . |B9 15000000<br />

0045E2F0 > |803408 7F<br />

0045E2F4 .^|E2 FA<br />

0045E2F6 .^|E9 D6FFFFFF<br />

MOV EAX,PEiD.0045E2D0<br />

MOV ECX,15<br />

XOR BYTE PTR DS:[EAX+ECX],7F<br />

LOOPD SHORT PEiD.0045E2F0<br />

JMP PEiD.0045E2D1<br />

Ponovicemo isti postupak od malopre i postavicemo breakpoint na 0045E2F6,<br />

pa cemo pritisnuti F9 da dodjemo do bp-a a onda F8 da izvrsimo skok. I opet<br />

zavrsavamo na delu koda koji nije analiziran od strane Ollyja. Posle pritiska<br />

na CTRL+A pojavljuje se ovo:<br />

0045E2D1 B8 5FE14500<br />

0045E2D6 B9 71010000<br />

0045E2DB > 803408 7F<br />

0045E2DF .^ E2 FA<br />

0045E2E1 .^ E9 7AFEFFFF<br />

MOV EAX,PEiD.0045E15F<br />

MOV ECX,171<br />

XOR BYTE PTR DS:[EAX+ECX],7F<br />

LOOPD SHORT PEiD.0045E2DB<br />

JMP PEiD.0045E160<br />

Ponovicemo isti postupak od malopre i postavicemo breakpoint na 0045E2E1,<br />

pa cemo pritisnuti F9 da dodjemo do bp-a a onda F8 da izvrsimo skok. I opet<br />

zavrsavamo na delu koda koji nije analiziran od strane Ollyja. Posle pritiska<br />

na CTRL+A pojavljuje se ovo:<br />

0045E160 > /60<br />

0045E161 . |BE 00D04300<br />

0045E166 . |8DBE 0040FCFF<br />

0045E16C . |57<br />

0045E16D . |83CD FF<br />

PUSHAD<br />

MOV ESI,PEiD.0043D000<br />

LEA EDI,DWORD PTR DS:[ESI+FFFC4000]<br />

PUSH EDI<br />

OR EBP,FFFFFFFF<br />

Izvinjavam se sto je malo vise od dve cele strane knjige copy-paste ali tako<br />

se otpakuje i zeleo sam da budem siguran da cete ispratiti sve ove jumpove<br />

kako treba. Ono sto sada vidimo nas podseca na originalni UPX kod, ali nije<br />

bas sasvim. Bez obzira na sve bas kao i obican UPX, UPXShit ima jedan<br />

obican JMP skok koji vodi pravo na OEP odmah ispod prve POPAD komande.<br />

Taj deo koda izgleda ovako:<br />

0045E2BC . /74 07<br />

JE SHORT PEiD.0045E2C5<br />

0045E2BE . |8903<br />

MOV DWORD PTR DS:[EBX],EAX<br />

0045E2C0 . |83C3 04<br />

ADD EBX,4<br />

0045E2C3 .^|EB D8<br />

JMP SHORT PEiD.0045E29D<br />

0045E2C5 > \FF96 6CE90500 CALL DWORD PTR DS:[ESI+5E96C]<br />

0045E2CB > 61<br />

POPAD<br />

0045E2CC .^ E9 0ECFFEFF JMP PEiD.0044B1DF<br />

pa cemo samo postaviti jedan breakpoint na 0045E2CC, pritisnucemo F9 da<br />

dodjemo do njega, i sa F8 dolazimo na OEP koji ce posle analize sa CTRL + A<br />

izgledati ovako:<br />

<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 203 <strong>of</strong> 293

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!