Tanulságok repedés

Bevezetés a Repedés a semmiből OllyDbg - 25. fejezet [Ricardo Narvaha, transz. aquila]

Ebben a fejezetben vesszük kivétel rakodók, amelyek általában az akadályt a kezdők számára, de ez tényleg nem túl bonyolult téma, ha egy kicsit benne, hogy mélyebben.

A kivétel létrehozott programot, amikor a processzor teljesítményét hibás működését. Látni fogjuk, különböző példát, hogy ez hogyan történik OllyDbg, miért nyitott krekmi CrueHead „a.

Mi található a belépési pont és az első sorban kiírja különböző assembler utasítások keletkeztető kivételek. Fogjuk használni a bemutató úr Silver'a kivételek és bemutassa konkrét példákat a múltban.

Nincs hozzáférés memóriát. Ez akkor fordul elő, amikor egy szál megpróbál hozzáférni a memória nem a mód, amit annak jogait. Ez a fajta kivétel, például előfordulhat, ha a folyam megkísérli, hogy írjon valamit a memória cella, amelynek csak a jogot, hogy elolvassa.

OllyDbg levelet a következő sorban.

Minden szakasz a kezdeti hozzáférési beállításait tárolja a fejléc, mielőtt a program nem hajt végre semmilyen funkciót az API, például VirtualProtect. amely lehetővé teszi, hogy módosítsa a hozzáférési beállításokat meghatározott kezdetben futás közben.

OllyDbg ahol láthatjuk a kezdeti hozzáférési beállításokat minden részén és a változás, ha szükséges?

Ehhez kattintson közvetlenül a M gombot.

Tanulságok repedés

Lásd, hogy a rész, azaz kezdve 400.000 Az első, amely cím PE (futtatható fájl), van egy kis méret 1000 byte, ahol az adatokat szakaszok vannak tárolva, név, méret, általában az összes szükséges információt a fájl futtatásakor.

Élvezi a fejléc keresztül szeméttelep.

Tanulságok repedés

Tanulságok repedés

A OllyDbg lehetőség van az értelmezése a legtöbb fejléc paramétereket. Mivel egy szeméttelep. kattintson jobb egérgombbal.

Tanulságok repedés

Tanulságok repedés

Látjuk, hogy mi OllyDbg a fajtát szereplő információk a fejlécben.

Ha elkezd lefelé menni, az első dolog, hogy találkozni fogunk - ez PE aláírása. az érték, amely azt mondja, ha tényleg fejléc információt. Látjuk, hogy ez tartalmazza a 100, így meg kell adni ezt a számot 400000 és 400100. le oda.

Tanulságok repedés

Mint látható, nem tévedés - ez innen, hogy a fontos információkat a programot.

Nézzük részletesen leírja, hogy mit jelent a néhány paramétert.

Tanulságok repedés

Tanulságok repedés

Oké, menj le a címet.

adatszekcióból itt kezdődik, azt látjuk, hogy a szakasz pozíciójában kezdődik 1000. vagyis 401000. és jellemzői a kód. EXECUTE és olvasni.

Ha azt akarjuk, hogy ez a rész is engedélye volt felvenni, meg kell változtatni az értékét ebben a mezőben 60000020 E0000020. Ez a szám adja meg a jogot a jogot, hogy minden, hehe, megpróbáljuk.

Tanulságok repedés

Tanulságok repedés

Oké, most menteni az értékeket a rendes eljárás alkalmazásával.

Tanulságok repedés

Tanulságok repedés

Tanulságok repedés

Módosítsa a nevet CRACKME 3. tudni, hogy ez egy módosított változata minket.

Nyisd ki az crackme 3 OllyDbg.

Tanulságok repedés

Tanulságok repedés

Visszatérítése normál módba ÜRÍTÉSI „a.

Most az utasítást, amely hibát okozott a felvétel során.

Egy másik kivétel a típus:

Osztás 0 nevezzük, amikor megpróbálja osztani egy számot 0-ra.

Például írd OllyDbg:

Itt van egy felosztás ECX EAX. és ha az utóbbi nulla, kivéve fog dobni.

Tanulságok repedés

OllyDbg nem mindig egyértelmű információt, ebben az esetben, azt nem mondta, hogy van egy nullával osztani. Mi ugrik át a kivétel.

Érvénytelen utasítás futtatni próbált privilegizált utasítás. Ez akkor fordul elő, amikor a processzor megpróbálja végrehajtani egy utasítást, nem kapcsolódik a készlet, hogy támogatja, például akkor, amikor találkozott egy ismeretlen műveletet.

Ebben az esetben nem tudjuk kipróbálni, mint OllyDbg tart minket kérve az utasítások nem létezik, de a programozó beállíthatja, hogy a processzor nem támogatja, majd megjeleníti a megfelelő hibaüzenet.

Alias ​​nagyon INT 3. amelyek kivételt állít elő, és amelyet a debugger, amikor egy normális készlet BPX. megállítani a programot, és át a menedzsment, hogy hol INT 3 nevezték.

Emellett egyes programok okoznak INT 3 közvetlenül, ez a kizárás egyik lehetséges.

Sok más kivételek, és nem vesszük figyelembe. Itt egy egyszerű példa.

Ma már tudjuk, hogy a program képes generálni kivételek, de mi van, ha ez történik? Tekintsük az alábbi ábra:

Tanulságok repedés

A táblázatban, amit kihúzott a bemutató SILVER'a, ábrázolták, mint egy kivétel, feltéve, hogy az eljárás alá hibakeresés.

Ha a program keretében a hibakeresés vezérlő megkapja a hibakereső (ahogy a képen látható, úgy néz ki, hogy hátha tud irányítani egy kivétel, akár nem, az szinte mindig a válasz igen, és akkor, ha ez az opció engedélyezve a hibakeresési lehetőségeket-EXCEPTIONS kihagyására át ezt a kivétel típusa, a vezérlés visszatért a program, ha nem szerepel, akkor meg kell nyomnia a SHIFT + F9. azaz a diagram, amely azt mondja, CONTROLA LA EXCEPCION-SI nincs kép mutatja a döntési folyamat, hogy hagyja abba, vagy folytassa a végrehajtás mintegy g függően a fenti lehetőségek. Lásd az alábbi rendszert.

Tanulságok repedés

Itt azt látjuk, az egész folyamat teljesen - tette hozzá a piros nyíl. Miután CONTROLAR LA EXCEPCION megállapítjuk, hogy a megfelelő opció, ha van egy megálló, azt várom, hogy a SHIFT + F9-e vagy folytassa a program végrehajtásához szükséges, attól függően, hogy van-e aktiválni.

Következő, azt látjuk, hogy amikor visszatérünk OllyDbg azt ellenőrizzük, hogy a telepített PSZ. Ha igen, akkor megy, ha nem használja az alapértelmezett PSZ. Úgy tűnhet bonyolult, de valójában nem az. Hadd magyarázzam meg részletesebben.

PSZ vagy strukturált Kivétel kezelése - a kezelő, amely azt biztosítja, hogy a program képes volt a hiba elhárítására, vagyis ha nem állítja be a saját PSZ -obrabotchik, ha hiba történik, a rendszer fut a felvezető, hogy egy üzenetet jelenít meg nekünk a hiba az alkalmazás, program bezáródik, és búcsút. Telepítésével az egyéni PSZ -obrabotchik tudjuk fogni a hibát, a folyamat, és vissza a vezérlés a program, ami a leállás helyett és zavaró üzeneteket a rendszer továbbra is működni fog.

Továbbá, annak ellenére, hogy még nem tekinthető komoly szál, hogy egy minimum kifejezés meghatározását: ez a „szál” a program, vagy részeket futhat egyszerre, illetve minden szál saját kivételkezelőt, hogy van, ha a kereskedelmi telepítve, akkor az utóbbi lesz végzik csak benne, de máshol nem.

Hogyan kell beállítani egy kivételkezelőt

Ok, újra megnyitja krekmi CRUEHEAD'a és látni a verem.

Tanulságok repedés

Ez az alapértelmezett kezelő PSZ telepített rendszer, és működni fog bármilyen hibát mindaddig, amíg ki nem cseréli a saját, ami baljós hibaüzenetet. Lássuk, hol vannak azok a mutatók, hogy a rendszer PSZ-kezelő.

Amint látjuk, az FS: [0] egy mutató a jelenlegi kivételkezelő mehet itt a lerakó.

Tanulságok repedés

Tanulságok repedés

Tanulságok repedés

Tanulságok repedés

És ha menjünk tovább VIEW-PSZ LÁNC:

Tanulságok repedés

Mivel krekmi CRUEHEAD'a nem sobtsvennyh készletek kivételével rakodók, használjuk a példa nevű programot SMARTMOUSE. amely csatlakozik ebben a fejezetben.

Töltse be OllyDbg.

Tanulságok repedés

Ottrassiruem a lépcsőn, és magyarázza mindegyik.

Tanulságok repedés

A következő sor mozog a tényleges érték a fs: [0] bit EAX. Lássuk, mit Fs: [0] keresztül szeméttelep.

Tanulságok repedés

Tanulságok repedés

Látjuk, hogy az fs: [0] 12ffe0. Láthatjuk, hogy milyen információ rendelkezésre ebben a tekintetben OllyDbg.

Most visszük ezt a vonalat.

Tanulságok repedés

Az érték mozgatása bit EAX.

Most már benyomni ezt az értéket.

Tanulságok repedés

PSZ lánc azt jelenti, hogy egy lánc. A tárolt érték jelzi az előző kezelő, amely jelenleg aktív.

Az utolsó sor tartalmát megváltoztató FS: [0]. amely helyezett tartalmát ESP. rámutatva, hogy amennyiben az új struktúra.

Tanulságok repedés

Tanulságok repedés

Elvégzése után a következő sort:

Tanulságok repedés

Tanulságok repedés

Azaz, ez történik, ha van egy kivétel:

Tanulságok repedés

Ha megnézzük PSZ láncot. most látjuk:

Tanulságok repedés

Látjuk, hogy vannak jelen, mint az aktív felvezető, minket, és a rendszer, amely jelenleg nem működik.

Kivételek a programban.

Tanulságok repedés

Megváltoztatni ezt a sort:

Tanulságok repedés

Ez azt mutatja, egy hiba, és a program leáll.

Most a program prodozhit végrehajtást PSZ-kezelő, próbál talpra állni a hibát.

Tanulságok repedés

Mint látható, OllyDbg mindig mindent elmond, hehe, nyomja meg a SHIFT + F9. A program folytatásához.

Mint látható, megállunk a felvezető. Tudjuk, hogy mit csinál, és tudja-e talpra súlyos hiba, mint a változó a program kódját.

Tanulságok repedés

Azt látjuk, hogy nem tudja folytatni, és megy a rendszer processzor.

Tanulságok repedés

Ez azért történt, mert a hiba nagyon súlyos, hogy a program nem volt képes legyőzni a rendszert, és átadja a vezérlést a felvezető, aki megmutatta baljós üzenet mezőben, és zárja be az alkalmazást.

Nyilvánvaló, hogy a kivétel kezelő, a program beállítása számít más típusú kivétel, nem az, hogy az okozza, hogy változások a kódot, de, hogy mi történik, ha nem kontrollált kivétel.

Ahhoz, hogy fontolja meg egy másik eset, amikor a kivétel kezelnek sikeresen lásd krekmi SDUE. amely csatlakozik ebben a fejezetben.

Nyisd ki a OllyDbg hibakereső és az üzenetet, hogy az alkalmazás samomodifitsirovatsya stb stb Azt mondja, hogy krekmi csomagolva.

Vegye ki az összes pipa kivéve az első hibakeresési lehetőségeket-kivételek.

Tanulságok repedés

Megállunk a kirekesztés ellen.

Hol van a felvezető:

Itt lehet beállítani a BP.

Itt lehet beállítani BPX.

Megáll megy a processzor, amely, ha nincs furcsa változásokat kell vissza sorban következő az egyik, hogy okozta a kivételt, akkor a program folytatódik.

BP telepíti a következő sort, miután az egyetlen, ahol kivételt dobtunk, és kattintson a tovább RUN.

Látjuk, hogy a hiba már feldolgozták, és a program tovább fut hiba nélkül üzeneteket.

Nyilvánvaló, hogy ha azt akarjuk, hogy maradjon a pillanatban, amikor a program létrehoz egy kivételkezelőt, akkor jobb, hogy hozzon létre HARDWARE BPX íráskor az FS: [0]. Sok esetben, DLL és állítsa rakodók, majd eltávolítjuk őket, és visszatért a program, akik már korábban, és a fenti lehetőség van, hogy ellenőrizzék a telepítését és eltávolítását a futás során.

Oké, azt hiszem, hogy már úgy hasznos információt, amely lehetővé teszi számunkra, hogy tovább a repedés. A jövőben, akkor nézd meg a részletes példát ebben a témában.

[C] Ricardo Narvaha, Acad. Aquila