TPPpack, TrueEP, Unopix, UPX, VB AntiCrack, VMProtect, WinUpack, yoda Crypter, yoda Protector, [G!X]s Protector.
ΠΠΎΠΌΡ-ΡΠΎ ΠΈΠ· ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ β Π° Π²Π΅Π΄Ρ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄Π΅ΡΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΠ°ΡΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ± ΡΠΎΡ Π½Π΅ ΡΠΌΠΎΠ³ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ, ΡΠ΅ΠΌ Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΊΠΎΠ΄, Π²ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠΈΠ»ΠΈΡΡ ΡΠΈΠΏΠ° PEiD, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄. "ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ" ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π²ΠΈΡΡΡΠ° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π·Π°ΡΡΡΠ΄Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΡΠ΅ΠΌ ΡΠΈΠ³Π½Π°ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ²ΡΠΈΡΡΠΈΠΊΠΈ.
ΠΡΠΎΠ±ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΈ ΡΠ°ΠΌΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΠΌΡΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ. Π’Π°ΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΠΈΡΡΡΠ° Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ Π·Π°ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΡΡΠ° ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ: ΡΠ²ΡΠΈΡΡΠΈΠΊΠ° ΠΈ ΡΠΌΡΠ»ΡΡΠΎΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠΉ Π²ΠΈΡΡΡ 1260 Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ ΠΠ°ΡΠΊΠΎΠΌ ΠΠ°ΡΠ±Π΅ΡΠ½ΠΎΠΌ (Mark Washburn) ΡΠΆΠ΅ Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 1990 Π³ΠΎΠ΄Ρ.
ΠΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ±Π°ΠΉΡΠ½ΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΡ Π²ΠΈΡΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ XOR (Π»ΠΈΡΡΠΈΠ½Π³ 5.3).
ΠΠΈΡΡΠΈΠ½Π³ 5.3. ΠΠΎΠ±Π°ΠΉΡΠ½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
mov cx, code_length
mov si, offset begin_code
mov al, xor_key
_loop:
xor [si+cx], al ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π±Π°ΠΉΡ
loop _loop ;Π±Π΅ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π±Π°ΠΉΡ
jmp si
;...
;...
begin_code:
;Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠ΅Π»Π° Π²ΠΈΡΡΡΠ° β Π·Π΄Π΅ΡΡ!
;ΠΎΠ½Π° ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π° Π·Π° Π·Π°ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
;ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΌΠ΅ΡΡΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΡΡΠ° (www.virusList.com).
Virus.Win32.Zombie β ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠΉ Π²ΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ: Π²ΠΈΡΡΡ "ΡΠ°Π·Π±ΠΈΡΠ°Π΅Ρ" (Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈ-ΡΡΠ΅Ρ) PE EXE-ΡΠ°ΠΉΠ» Π½Π° ΡΠΎΡΡΠ°Π²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ, Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π·Π°Π½ΠΎΠ²ΠΎ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠΈΠ²Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄ Π·Π°ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Virus.Win32.Zombie ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π΄Π΅ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅Π»Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΠ²ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ².
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ (ΠΎΡ Π»Π°Ρ. obfuscare β Β«Π·Π°ΡΠ΅Π½ΡΡΡ, Π·Π°ΡΠ΅ΠΌΠ½ΡΡΡΒ») β ΡΠ΅Ρ Π½ΠΈΠΊΠ°, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π½Π° Π·Π°ΠΏΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ, Π½ΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΡΡΠ΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ· ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΡΡΠΎΠ²Π½Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. Π’Π°ΠΊ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ². Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠ³ΠΎ" ΠΊΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊ ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡβ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΡ.
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΎΠΊΡΡΡΠΈΡ Π²ΠΈΡΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ Π² Π½Π΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ, Π΄Π΅Π»Π°Ρ ΠΊΠΎΠ΄ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΡΠ·Π½Π°Π²Π°Π΅ΠΌΡΠΌ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΡΠΌ ΠΠ (Π»ΠΈΡΡΠΈΠ½Π³ΠΈ 5.4, 5.5).
ΠΠΈΡΡΠΈΠ½Π³ 5.4. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΡΠΈΠΌΠ΅Ρ β 1
int COUNT = 100;
float TAX_RATE = 0.2;
for (int i=0; i<COUNT; i++)
{
tax[i] = orig_price[i] * TAX_RATE; price[i] = orig_price[i] + tax[i];
}
ΠΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ:
for(int a=0;a<100;a++){b[a]=c[a]*0.2;d[a]=c[a]+b[a];}
ΠΠΈΡΡΠΈΠ½Π³ 5.5. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΡΠΈΠΌΠ΅Ρ β 2 (Perl)
my $filter;
if (@pod) {
my ($buffd, $buffer) = File::Temp::tempfile(UNLINK => 1);
print $buffd "";
print $buffd @pod or die "";
print $buffd
close $buffd or die "";
@found = $buffer;
$filter = 1;
}
exit;
sub is_tainted {
my $arg = shift;
my $nada = substr($arg, 0, 0); # zero-length
local [email protected]; # preserve caller's version
eval { eval "#" }; return length( [email protected]) != 0;
}
sub am_taint_checking {
my($k,$v) = each %ENV;
return is_tainted($v);
}
ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ:
sub z109276e1f2 { ( my $z4fe8df46b1 = shift ( @_ ) ) ; ( my
$zf6f94df7a7 = substr ( $z4fe8df46b1 ,
(0x1eb9+ 765-0x21b6) , (0x0849+ 1465-0x0e02) ) ) ; local [email protected] ;
eval { eval ( (
"" ) ) ; } ; return ( ( length ( [email protected] ) != (0x26d2+ 59-0x270d) ) )
; } my ( $z9e5935eea4 ) ; if ( @z6a703c020a ) { ( my (
$z5a5fa8125d , $zcc158ad3e0 ) =
File::Temp::tempfile ( "" , (0x196a+ 130-0x19eb) ) ) ; print (
$z5a5fa8125d "" ) ; ( print ( $z5a5fa8125d @z6a703c020a
) or die ( ( ( ( "" . $zcc158ad3e0 ) . "\x3a\x20" ) . $! ) ) ) ;
print ( $z5a5fa8125d "" ) ; ( close ( $z5a5fa8125d ) or die ( ( (
( "" ) ) ) ; ( @z8374cc586e = $zcc158ad3e0 ) ; ( $z9e5935eea4 =
(0x1209+ 1039-0x1617) ) ; } exit ; sub z021c43d5f3 { ( my (
$z0f1649f7b5 , $z9e1f91fa38 ) = each ( %ENV ) ) ; return (
z109276e1f2 ( $z9e1f91fa38 ) ) ; }
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΠΊΠΎΠ΄Π° Π² Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅ (Π½ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π΅) ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ β ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ "ΠΌΠΈΡΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ". ΠΡΠ»ΠΈ ΠΆΠ΅ Π΅Π΅ ΡΠΊΡΡΡΠ°ΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π²ΠΈΡΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΠ΅: ΡΠ°Π·Π²Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ΅ Π²ΠΈΡΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ (Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Afx!AVSpoffer, EPProt ΠΈ PETools.
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ:
β¦ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ°, ΡΠΊΡΠΏΠΎΡΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ;
β¦ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Entry Point (ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ);
β¦ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ.
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΎΠΊΡΡΡΠΈΡ ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΡΠΊΠΈΡ-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
Π ΡΡΠΊΠΈΡ-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
Π’Π΅ΡΠΌΠΈΠ½ ΡΡΡΠΊΠΈΡ (ΠΎΡ Π°Π½Π³Π». root kit β Β«Π½Π°Π±ΠΎΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°Β») Π΅ΡΡΡ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΠΊΡΡΡΠΎΠ³ΠΎ Π²Π·ΡΡΠΈΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΎΠΊΡΡΡΠΈΡ Π²ΠΈΡΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows ΠΏΠΎΠ΄ rootkit ΠΏΡΠΈΠ½ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ, Π±ΡΠ΄ΡΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Windows API). ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ API-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠΊΠΈΡΡ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π²ΠΎ Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ Π²ΡΠ΅ rootkit-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠΎΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
β¦ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (user-mode);
β¦ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ° (kernel-mode).
User-mode-ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΡΡΠΊΠΈΡΠΎΠ² ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°, kernel-mode β Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠΎΠ²Π½Ρ ΡΠ΄ΡΠ°.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° API-ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (user mode):
β¦ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°;
β¦ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ;
β¦ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° API-ΡΡΠ½ΠΊΡΠΈΠΈ;
β¦ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ LoadLibrary ΠΈ GetProcAddress.
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°. ΠΠΎΠΆΠ°Π»ΡΠΉ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΡΠΎΠΊΡΡΡΠΈΡ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΠ΅Ρ Π½Π° Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: rootkit Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅Ρ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° Π°Π΄ΡΠ΅ΡΠ° ΡΠ²ΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΎΠ². ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ.
Π ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° API-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΅Π΅ Π°Π΄ΡΠ΅Ρ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠΎΠΈΡΠΊ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ΡΠ»ΠΎΠΆΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ API-ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ°Π½Π½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ½Π° ΠΏΡΠΎΡΡΠ° Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ Ρ Π½Π΅Π΅ Π΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π·Π° Π²ΡΠ·ΠΎΠ² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ API-ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°, ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ ΡΡΠΎ Π±ΠΎΠ³Π°ΡΡΠΌ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²Π΅ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈ ΡΠ°ΠΌΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² API-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½Π°.
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° API-ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ rootkit Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΉΡΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π΅Π³ΠΎ API-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ. Π Π½Π°ΡΠ°Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π΄Π²Π΅-ΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΡ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ LoadLibrary ΠΈ GetProcAddress. ΠΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°: Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ GetProcAddress, ΡΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ, Π° Π°Π΄ΡΠ΅ΡΠ° ΡΠ²ΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΎΠ². ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ GetProcAddress ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ° (kernel mode). Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ user-mode ΠΈ kernel-mode.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠ΄ΡΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ntdll.dll, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ INT 2Eh. ΠΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΡΠ΄ΡΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° ΡΡΡΡΠΊΡΡΡΠ΅ KeServiceDescrip-torTable (ΠΈΠ»ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ SDT), ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² ntoskrnl.exe. SDT, β ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π°Π΄ΡΠ΅ΡΠ° ΡΠΎΡΠ΅ΠΊ Π²Ρ ΠΎΠ΄Π° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠ΄ΡΠ° NT.