Навеяло соседней темой про "mov который меняет поток команд". Не знаю, может уже кто придумал такое до меня. Код (Text): call @Offset @Offset: pop eax lea esp,[eax+(@Next-@Offset)] @Next: db 8Fh, 44h, 24h, 00h ; pop dword ptr [esp+0] mov eax,ds:[0] mov eax,ds:[0] mov eax,ds:[0] mov eax,ds:[0] ...
тогда уж так Код (Text): @Next: call @Offset @Offset: pop eax lea esp,[eax+(@Next-@Offset)] jmp @Next
spa Да я не уверен что это то, что нужно автору топега. И вообще они тама счас "nuclear bomb" разрабатывают - таблицы страничной адресации меняют о-О max7C4 Если эта команда однажды получила ESP=EIP то она уже больше ничего не даст выполнять - будет только сама выполняццо. Немного позже Ваш код потрассирую - а то возможно я "в уме" плохо это делаю
PSR1257 Придумали-придумали. Правда по ошибке, т.к. PROFi имел в виду совсем другое: http://www.wasm.ru/forum/viewtopic.php?pid=267995#p267995
Хотя больше всего продвинулся в самокопировании Black_mirror: http://www.wasm.ru/forum/viewtopic.php?pid=255608#p255608
PSR1257 Эквивалентно mov dword ptr ss:[(cs:Next)],XXXX. Недостатки: o Стек переключается, чего делать нивкоем случае нельзя. o Защиту от записи никто не отменял. o Дельтаоффсет зло Лучше просто подождать: Код (Text): push 3 pop gs @@: mov ax,gs test ax,ax jnz @b
max7C4 О, это очаровательно. Однобайтовая stosb (с AL) или movsb. l_inc Ничто не ново под Луной (c) Увы. CrystalIC Да я по приколу, балуюся. Вообще была идея в "ползуне" который не гробит код а только перемещает себя по нему. Еще работаем над тем как его тормознуть, seh неинтересно. О, это прикол кстати. Как-то все пользовалсо одним и тем же батничком и уже "привык" что запись в код ничего не вызывает но вот прямо вчера использовал "обычную" сборку и сразу вспомнил зачем нужен VirtualProtect. Однака. При вскрытии первого батничка выяснилося что я все время юзал ALIGN:64 (masm) и этого хватало Код (Text): push 3 pop gs О, я конечно же читал про этот ваш трюк. Элегантно!