PE cryptor - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

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

PE cryptor

22. října 2001, 00.00 | Úvod do podrobného návodu, jak naprogramovat váš první PE cryptor. Aneb pokračování úspěšného seriálu "Cracker proof".

Jak jste si jistě všimli, probrali jsme snad všechny možné "anti-…" metody a tak nadešel čas všechny získané vědomosti zúročit a tak nějak sjednotit. Pokud jste pečlivě nestudovali doprovodný seriál PE file format, budete tak muset učinit, aby jste rozuměli následujícím dílům seriálu.
Naprogramujeme totiž náš první PE cryptor. 

Co je to PE cryptor/compressor ?


Pokusím se to vysvětlit tak jednoduše, jak to jen půjde.
PE cryptor je v současné době asi nejpoužívanější možností obrany před softwarovým pirátstvím. Základní myšlenka spočívá v zakódování (v případě compressoru zkomprimování) jednotlivých sekcí v PE souboru a jejich dekódování při jeho spuštění. Za tímto účelem je do programu přidán režijní kód, který může obsahovat také řadu anti-cracking prvků. Může a nemusí - některé dnešních PE compressory jsou zaměřeny pouze na zmenšení, nikoli ochranu programu.
Dalo by se tedy říct, že PE cryptor je jakousi komplexní ochranou, která umožní spojení všech "anti-…" prvků v jeden.

Zní to zajímavě, co říkáte? Musím vás ale upozornit, že naprogramovat kvalitní PE cryptor není nic jednoduchého a budete k tomu potřebovat poměrně hodně času, úsilí a hlavně silné nervy!!
Jako programovací prostředí využívám kombinaci C++ a ASM., čehož jste si už jistě všimli z ukázkových příkladů. Na oba jazyky jsem si zvykl už na tolik, že nevidím důvod, proč je od sebe oddělovat. Přece jenom, proč nevyužít ty nejlepší vlastnosti obou jazyků. A vůbec - pokud se to někomu nelíbí, nenutím ho k tomu, aby četl následující řádky. 

Jak pracuje PE cryptor - základy


Základem je již zmiňované zakódování (popř. zkomprimování) jednotlivých sekcí PE souboru. Následně musí být do souboru přidán režijní kód s požadovanými funkcemi. Teď ovšem vyvstává otázka - kam ho přidat ? Nelze spoléhat na to, že bude v nějaké sekci dostatek volného místa a proto přidáme novou sekci s požadovanou velikostí do souboru. Aby vše fungovalo správně, musíme přesměrovat tok dat při spouštění soboru na nově vloženou sekci a po provedení potřebného kódu skočit zpět.
Dalším problémem jsou funkce (nejčastěji API), které režijní kód využívá. PE soubor, do kterého kód přidáváme nemusí nutně importovat všechny požadované funkce a tak se o jejich importování musíme postarat sami. Způsobů řešení tohoto problému je vícero, ale dle mého názoru je nejlepším způsobem napsat vlastní tabulky importů, která obsahuje nezbytné funkce pro režijní kód (samozřejmě musíme přesměrovat patřičné hodnoty) a do kódu pak vložit manuální importovač funkcí, který zpracuje funkce z původní tabulky. 
Je třeba mít na mysli, že data potřebná pro PE loader jako např. TLS (thread local storage), resources, tabulka exportů, relokace, tabulka importů...atd. nesmí být zakódována.

Nevýhody PE cryptorů


Mezi největší nevýhody PE cryptorů patří fakt, že poté, co jsou prolomeny, může být na většinu z nich napsán a následně použit univerzální decryptor/decompressor. Dalo by se tak říct, že se člověk při jejich používání pohybuje mezi dvěma extrémy - bezpečnost a bezúčelnost. Řádově je ale doba prolomení několikanásobně vyšší (samozřejmě u kvalitního cryptoru) než u běžných tipů ochran (kdo ale dnes používá "běžné ochrany"..?!). Nenechte se znepokojit faktem, že každý PE cryptor je po čase prolomen - tak to máte dnes se vším. A nebudeme znova začínat s tou ohranou písničkou, že nemá cenu chránit software.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Assembler  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: