Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Assembler
Ochrana před debuggingem - detekce hardwarových breakpointů 2
2. července 2001, 00.00 | Pokračování povídání o detekci hardwarových berakpointů. Dnes se podrobněji vrátíme k příkladu z minulého dílu..
V dnešním díle podrobně rozeberu kód příkladu z minulého dílu:
|
Do bloku __try umístíme kód, o kterém si myslíme, že může způsobit chybu (ten náš ji způsobí zcela určitě) a do hlavičky bloku __except funkci, která zajistí opravení případné chyby (tzv. Handler).
Náš Handler je hlavní částí celého programu - opraví záměrně vyvolanou chybu v programu a struktury zaplněné při vzniku této chyby využije při nastavení breakpointů do aplikace. Vzhledem k tomu, že nastavené breakpointy způsobí další chyby, o které se opět postará Handler, stačí je jen spočítat a zkontrolovat, jestli opravdu došlo ke všem.
|
__try blok:
|
Záměrně jsem vyvolal chybu instrukcí INT3, protože jsme ji již použili při detekci debuggeru a chybu jsem následně ošetřili voláním API funkce SetUnhanldedExceptionFilter. Tím chci pouze ukázat, že volání této API funkce není jediným možným řešením.Takto vzniklou chybu opravíme posunem ve zpracování instrukcí o jeden bajt. Pokud zvolíte ke způsobení chyby instrukci, která zabírá větší počet bajtů, musíte náležitě upravit počet bajtů, o které posouváte zpracování dopředu.
A na závěr už jen zkontrolujeme, jestli opravdu došlo ke všem, tedy čtyřem (Dr0 - Dr3), nastaveným breakpointům:
|
Doufám, že již všichni aspoň trochu pochopili jak náš ukázkový příklad pracuje a v příštím díle si ukážeme nějaké další možnosti využití SEHu ke "zmatení soupeře".
Obsah seriálu (více o seriálu):
- Ochrana software - Úvod
- Obecné rady k ochraně softwaru
- Ochrana před debuggingem - základy
- Ochrana před debuggingem – standardy
- Ochrana před debuggingem - detekce breakpointů
- Ochrana před debuggingem - detekce hardwarových breakpointů
- Ochrana před debuggingem - detekce hardwarových breakpointů 2
- Poslední poznámky k SEHu
- Anti-disassembling - základy
- Pasivní SMC
- Aktivní SMC
- Anti-code editing
- Anti-FrogsICE
- Anti-ProcDump
- PE cryptor
- PE cryptor - přidání nové sekce do souboru
- PE cryptor - kódování
- Přesměrování Program Entry Pointu
- Přesměrování Program Entry Pointu - pokračování
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007