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.
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.
A OllyDbg lehetőség van az értelmezése a legtöbb fejléc paramétereket. Mivel egy szeméttelep. kattintson jobb egérgombbal.
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.
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.
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.
Oké, most menteni az értékeket a rendes eljárás alkalmazásával.
Módosítsa a nevet CRACKME 3. tudni, hogy ez egy módosított változata minket.
Nyisd ki az crackme 3 OllyDbg.
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.
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:
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.
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.
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ó.
És ha menjünk tovább VIEW-PSZ LÁNC:
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.
Ottrassiruem a lépcsőn, és magyarázza mindegyik.
A következő sor mozog a tényleges érték a fs: [0] bit EAX. Lássuk, mit Fs: [0] keresztül szeméttelep.
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.
Az érték mozgatása bit EAX.
Most már benyomni ezt az értéket.
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.
Elvégzése után a következő sort:
Azaz, ez történik, ha van egy kivétel:
Ha megnézzük PSZ láncot. most látjuk:
Látjuk, hogy vannak jelen, mint az aktív felvezető, minket, és a rendszer, amely jelenleg nem működik.
Kivételek a programban.
Megváltoztatni ezt a sort:
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.
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.
Azt látjuk, hogy nem tudja folytatni, és megy a rendszer processzor.
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.
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