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
Pasivní SMC
9. srpna 2001, 00.00 | V poslední době se v mnoha programech zaměřeným nejenom proti crackerům začala objevovat poměrně stará, ale přesto ne moc známá a málo využívaná metoda, jak zmást případného útočníka. Ano, řeč je o využití mnohotvárnosti vyjádření kódu v assembleru.
V poslední době se v mnoha programech zaměřeným nejenom proti crackerům začala objevovat poměrně stará, ale přesto ne moc známá a málo využívaná metoda, jak aspoň částečně zmást případného útočníka. Ano, řeč je o využití mnohotvárnosti vyjádření kódu v assembleru. I přesto, že tato technika není tak účinná jako její "aktivní" varianta, je využívána mnohem častěji.Domnívám se, že asi neexistují žádné obecné rady pro tvorbu pasivních SMC algoritmů. Vždy to chce určité množství času, zkušeností a trpělivosti. Podívejte se na následující algoritmus - tvořil jsem ho asi 20 minut a je typickou ukázkou "znepřehlednění" kódu.
|
Po zpracování instrukce call vypadá kód takto:
|
Výše zmíněný kód zvětší návratovou hodnotu, která byla do stacku uložena díky volání funkce call. Po zavolání funkce ret se proto zpracování kódu přesune dál (konkrétně na adresu 00401026), než za instrukci call, jak tomu běžně je . Tuto metodu proto můžete využít k nečekaným skokům v programovém kódu.
Po skoku na adrese 00401016 vypadá kód takto:
|
Po dalším skoku:
|
Po skoku:
|
Po předchozím skoku se konečně dostáváme na konec callu:
|
Po instrukci ret:
|
Jistě jste už přišli na to, že tento algoritmus nedělá naprosto nic!! Ale svůj účel - tedy zmatení a znepřehlednění samotného kódu plní dokonale. Bez jakýkoliv okolků ho použijte kdekoli chcete, ale ručím vám za to, že pokud se aspoň na půl hodiny zamyslíte, vymyslíte jistě něco mnohem lepšího.
Více bych vám ale doporučoval nějaký opravdu funkční SMC, který plní třeba nějakou výpočtovou úlohu nebo něco podobného. Na druhou stranu, pokud vložíte více podobných algoritmů, jako je ten můj, mezi kriticky důležité části programového kódu, svůj účel jistě splní.
No a pokud se někomu z vás podaří sestavit nějaký opravdu dobrý SMC algoritmus a budete se chtít podělit s ostatními, klidně mi jej zašlete. Vyberu ty nejlepší a rád je uveřejním.
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