Я как-то читал статью К.Касперски. В ней говорилось, для того чтобы код мог самоизменяться, нужно определить кусок кода некоторый, выделить под него память и обрабатывать его именно в памяти. Но ведь можно изменять код и без выделения памяти. Можно просто выставить атрибуты на RWX и все. Я написал прогу таким методом - она себя изменяла без проблем, ида это подтверждала. Может у такого способа есть минусы? Или его просто не хорошо использовать? Но ведь теже самые антивирусы обращают внимание на запросы к памяти больше, чем на запросы к файлам. Или я в чем-то не прав?
Ну например такой ( прошу ногами не пинать. я просто экспериментировал section '.UPX!' code executable readable writeable ein: ;----------------------------------------------------------------; __gen: push 666h sub ecx,ecx call my_rnd mov [.666],eax xor [$$],eax neg dword [_d] mov [_lo],eax call my_rnd ;----------------------------------------------------------------; .666: xor eax,ebx mov eax,4 m: jmp _aa_ _d: cmp eax,5 je _lo inc eax jmp _d ;----------------------------------------------------------------; _lo: xor [$$],byte $55 ;; some good 55h and [$$+$c],dword 'serg' sub eax,eax push eax nop nop _aa_: nop nop invoke ExitProcess,0 .end ein ;--------------------------------------------------------------- my_rnd: ; how to use ; push 5 ; call my_rnd ; nop ; ur code pop eax imul eax,eax,100 mov edi,eax rdtsc add eax,edi imul eax, 214013 add eax, 2531011 shr eax, 16 imul eax, [esp+4] shr eax, 16 push $$+$c ret ; возврат Теоретически этот код должен работать и на unix машинах. Но это отдельная тема.
на unix я пока не проверял. Может в скором будущем. И прошу к коду относиться "снисходительно". Я не кодер. тут только некий общий принцип. Но вроде у меня на winxp работал.
При создании стека устанавливаются атрибуты PAGE_READWRITE как для XP, так и для Vista. Код push 0C3h/Call Esp вызывает исключение. Насчёт TermoSINteZ - у тебя могло работать только под отладчиком.
bPED Да это работает. Память есть память хочешь пиши, хочешь выполняй, с соответствующими атрибутами конечно. Может Крис и имел ввиду как раз палево AV. Clerk Не думаю, процессор должен уметь обрабатывать такие ситуации.
Да я не думаю что аверы настолько умны. Если очень постараться и правильно спланировать код и все проходы по нему - думаю аверы тут ничего не запалять. Можно даже будет попробовать