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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

004010DB |> /8033 11<br />

004010DE |. |83E9 01<br />

004010E1 |. |43<br />

004010E2 |. |83F9 00<br />

004010E5 |.^\75 F4<br />

XOR BYTE PTR DS:[EBX],11<br />

SUB ECX,1<br />

INC EBX<br />

CMP ECX,0<br />

JNZ SHORT unpackme.004010DB<br />

Sada imamo dovoljno informacija da bismo mogli da napravimo patch. Iz ova<br />

dva loopa smo saznali da se adrese od 004010F5 xoruju prvo sa 44h a onda<br />

sa 11h. Posto posle dekripcije bajtovi od 004011B4 do 004011C7 moraju da<br />

budu 90 uradicemo reversni xor 90h xor 11h xor 44h = C5h a kao rezultat<br />

cemo dobiti bajt koji treba da se nalazi na svim adresama izmedju 004011B4<br />

i 004011C7. Ove izmene mozemo da uradimo pomocu Ollyja i da ih snimimo.<br />

Kada ovo uradimo startovacemo novosnimljeni fajl i videcemo da smo<br />

zaboravili na cinjenicu da ovaj kripter ima<br />

mogucnost provere modifikacije koda<br />

ispod adrese 004010F5. Ali ono sto ovaj<br />

kripter nema je mogucnost provere CRCa<br />

iznad adrese 004010F5 a bas ovde se<br />

nalazi kod za proveru modifikacije sekcije<br />

koda. Posto bi bilo previse lako samo<br />

modifikovati skok JE u JNE ja sam kao<br />

uslov zadatka postavio da se ovaj skok ne sme modifikovati. Iako ovo zvuci<br />

komplikovano uopste nije. Otvoricemo patchovani program pomocu Ollyja i<br />

doci cemo do CMP komande koja se nalazi odmah iznad ovog skoka. Ovde<br />

smo:<br />

00401062 . 81FA B08DEB31 CMP EDX,31EB8DB0<br />

Primeticemo da se sadrzaj EAXa (F9B35572) poredi sa 31EB8DB0. Stoga<br />

cemo samo logicno promeniti CMP komandu u<br />

00401062 81FA 7255B3F9 CMP EDX,F9B35572<br />

Pre nego sto ovo uradimo moramo da nadjemo kako se adresa na kojoj se<br />

nalazi CMP komanda dekriptuje. Odgovor lezi ovde:<br />

004010BE |. BB 07104000<br />

004010C3 |. B9 7F000000<br />

004010C8 |> 8033 07<br />

004010CB |. 83E9 01<br />

004010CE |. 43<br />

004010CF |. 83F9 00<br />

004010D2 |.^ 75 F4<br />

Odnosno dekriptcija bajtova izgleda ovako:<br />

86 xor 7 = 81 81 xor 7 = 86<br />

FD xor 7 = FA<br />

FA xor 7 = FD<br />

B7 xor 7 = B0 72 xor 7 = 75<br />

8A xor 7 = 8D 55 xor 7 = 52<br />

EC xor 7 = EB<br />

B3 xor 7 = B4<br />

MOV EBX,unpackme.00401007<br />

MOV ECX,7F<br />

/XOR BYTE PTR DS:[EBX],7<br />

|SUB ECX,1<br />

|INC EBX<br />

|CMP ECX,0<br />

\JNZ SHORT unpackme.004010C8<br />

36 xor 7 = 31 F9 xor 7 = FE<br />

gde je prva kolona originalna dekripcija a druga patchovana enkripcija. U<br />

prevodu treba samo patchovati bajtove na adresi 00401062 u<br />

86FD7552B4FE da bismo prilikom dekripcije na istoj adresi dobili:<br />

00401062 81FA 7255B3F9 CMP EDX,F9B35572<br />

Posle ovog patchovanja mozemo pokrenuti patchovani fajl i videti da se na<br />

ekranu sada ne pojavljuje NAG. Dakle, uspeli smo !!!<br />

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

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

Saved successfully!

Ooh no, something went wrong!