Anti-ProcDump - 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

Anti-ProcDump

15. října 2001, 00.00 | Seznámení s "ProcDumpem" a uvedení pro někoho možná dobře známých triků, jak zabranit dumpování v tímto programem..

Co je to ProcDump? 


Abych řekl pravdu - ProcDump(PD) je taková "správná multifunkční hračka". Je to univerzální PE unpacker/decryptor kombinovaný s dumperem a ještě několika dalšími užitečnými funkcemi. Úžasná je jeho neuvěřitelná flexibilita. I když byl jeho vývoj zastaven už před téměř dvěma lety, pořád si můžete stahovat nové plug-iny pro neustále se zvětšující trh softwarových ochran.
Zkrátka a dobře může být tento prográmek pro softwarového vývojáře noční můrou. 
Tento díl se nebude zabývat tím, jak zabránit samotnému používání PD (jak tomu bylo u FI), ale zaměří se na jednu konkrétní funkci - dumping. Říkáte si: "proč bránit něčemu, o čem ani nemám tušení, co to vlastně je"..

Co je to dumping a k čemu je dobrý?


Dumping by se zjednodušeně dal definovat jako ukládání obsahu paměti na disk. Z toho už také přímo plyne k čemu je vlastně užitečný. Představte si, že váš program (při nějaké činnosti) dekóduje část programového kódu aby s ním mohl dál pracovat. S dumperem jen počkáte až se data "pro vás" dekódují a pak si je z paměti uložíte na disk…jednoduché že?

Jak tedy zabránit dumpování v PD?


Poměrně snadno - stačí zvětšit velikost dumpovaných dat, přesněji řečeno délku procesu (interní proměnná Windows), kterou PD k dumpování používá. PD se tak pokusí o přístup k datům, které fyzicky neexistují a vše to skončí chybou.

; Délka procesu je na Win32 platformách umístěna na jiných místech, proto musíme na začátku algoritmu rozlišit o jakou platformu se jedná.

push fs:[30h] 
pop eax
TEST EAX, EAX
JS is_W9x

is_NT:

MOV EAX, [EAX+0Ch]
MOV EAX, [EAX+0Ch]
ADD DWORD PTR [EAX+20h], 500h ;zvětšíme
JMP finished

is_W9x:

PUSH 0
CALL _GetModuleHandle
TEST EDX, EDX
JNS finished
CMP DWORD PTR [EDX+8], -1
JNE finished
MOV EDX, [EDX+4]
ADD DWORD PTR [EDX+50h], 500h ;zvětšíme

finished:

Samozřejmě, že je k sehnání široká paleta nejrůznějších dumperů, toto je obranu proti nejpoužívanějšímu z nich.

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: