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
Anti-FrogsICE
3. října 2001, 00.00 | V dnešním článku si řekneme pár slov o tom, jak se bránit jednomu z nejpoužívanějších anti-anti-debugging nástrojů..
Upozornění: Tento díl seriálu předpokládá aspoň základní znalosti v oblasti přechodu mezi Ring módy. Je zbytečné abych se zabýval tímto tématem, protože již tak učinilo mnoho lidí přede mnou a pouze bych kopíroval jejich myšlenky a nápady. Všechny potřebné informace naleznete na I-netu.Dnes budeme hovořit o jednom z nejpoužívanějších anti-anti-debugger (spíše SoftICE) programů - programu s názvem FrogsICE (FI). Tento prográmek vám umožní nejenom detekovat snad všechny známé i neznámé detekční metody debuggeru, ale také kontroluje využívání některých hardwarových přerušení, operace s debuggovými registry a ještě mnoho víc. Prostě a jednoduše, pro útočníka prográmek k pohledání.
Při krátkém hledání na I-netu jsem našel algoritmus, který by měl zabránit používání tohoto programu:
|
Základem tohoto algoritmu je volání funkce VMM_GetDDBList, která v případě, že je FI aktivní, způsobí zhroucení programu (více níže..). Funkce VMM_GetDDBList musí být volána z Ring0 módu - vzhledem k tomu, že tento mód není ve Windows NT přístupný, nebude vám žádný zde uváděný algoritmus na tomto operačním systému pracovat .
Je patrné, že pro přechod do Ring0 módu je využito vektorové výměny - v našem případě je přepsána obsluha přerušení INT 3.Myšlenka je vcelku dobrá, ale provedení poněkud zaostává.
Stejně tak jako všechno kolem nás, také software se neustále mění a vyvíjí. A u crackingových nástrojů to platí dvojnásob.
Kvůli častému používání vektorových výměn zejména v anti-debugging algoritmech, přibyla v FI možnost: "IDT monitor/protector". Díky tomu FI při pokusu o vektorovou výměnu vše zachytí a uvede do původního stavu - funkce VMM_GetDDBList se tak nezavolá a FI bude nadále bez problému pracovat.
Řešení tohoto problému je vcelku jasné - přechod do Ring0 módu musí být proveden metodou, kterou FI neumí zachytit. Pro tyto potřeby je ideální "The Owl's method", využívající SEHu. Implementace je následující:
|
Zde bych rád upozornil na fakt, že pokud je při volání tohoto algoritmu FI aktivní, může dojít nejenom k jeho zhroucení či zhroucení programu, který algoritmus použil, ale také totálnímu kolapsu celého systému - pokud ale FI nepoužíváte, nemáte se čeho bát.
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í
Diskuse k článku
-
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