HTML

Hackstock

Hack the planet! Hackers unite!

Címkék

Címkefelhő

iTunes 10 anti-debug

2010.11.04. 00:24 :: theshadow

 Az iTunes 10-es verzió sem engedi debugolni magát. Éppen úgy, ahogy az előzők sem engedték ezt.

Ahogy korábban is, megint a szokásos rutin részletet kell keresnünk.

.text:10149187 call    sub_1001D970
.text:1014918C test    al, al
.text:1014918E jz      short loc_10149198
.text:10149190 push    0                               ; uExitCode
.text:10149192 call    ds:ExitProcess
A metódushívást követve a korábbról szintén ismerős debugger ellenőrzéshez érünk.
.text:1001D970 sub_1001D970 proc near                  ; CODE XREF: sub_10149170+17p
.text:1001D970 call    sub_1001D780
.text:1001D975 test    al, al
.text:1001D977 jz      short loc_1001D97C
.text:1001D979
.text:1001D979 loc_1001D979:                           ; CODE XREF: sub_1001D970+13j
.text:1001D979 mov     al, 1
.text:1001D97B retn
.text:1001D97C ; ---------------------------------------------------------------------------
.text:1001D97C
.text:1001D97C loc_1001D97C:                           ; CODE XREF: sub_1001D970+7j
.text:1001D97C call    sub_1001D800
.text:1001D981 test    al, al
.text:1001D983 jnz     short loc_1001D979
.text:1001D985 call    ds:IsDebuggerPresent
.text:1001D98B test    eax, eax
.text:1001D98D setnz   al
.text:1001D990 retn
.text:1001D990 sub_1001D970 endp

Szinte már rutinszerűen patcheljük át, hogy minden esetben nullás EAX értékkel térjen vissza.

Csakhogy ebben az esetben egy kicsit más a történet, mert a kérdéses programrészleteket nem az iTunes.exe-ben találjuk meg, hanem az iTunes.dll-ben!

Most, hogy elárultam a megoldást, lássuk röviden, hogyan akadhatunk a nyomára - nyilván ez egy olyan kérdés, ami többek oldalát fúrhatja.

Az iTunes.exe IDA-ba töltése után indítsuk el és a dll-ek töltése közben egy időre állítsuk meg a folyamatot, hogy az ExitProcess-t megkereshessük és megszakítást tehessünk le a belépési pontjára - [G] ExitProcess. Ha ez megtörtént, akkor hagyjuk, hogy a betöltődés és a programfutás folytatódjon. Egyszercsak üzenet érkezik, hogy megszakítási ponthoz érkeztünk, ami nem más, mint az ExitProcess. Én itt a stack view-t az ESP regiszter értékére igazítottam és a legtetején levő érték címén levő pozíciót töltettem be a disassembly képernyőre, ahol a meghívott ExitProcess utáni utasításon jelent meg a kijelölés érthető módon. Innentől pedig már gyerekjáték feltérképezni a hatásmechanizmust.

Ennyi a történet.

1 komment

Címkék: itunes x86

A bejegyzés trackback címe:

http://hackstock.blog.hu/api/trackback/id/tr352421432

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.