Предлагаю в данной теме собирать всевозможные замены пресловутому Code (Text): db 90h . Главное условие - последовательность инструкций не должна изменять ни одного регистра, включая флаги, портить стек и т.д. Итак, мои варианты: Code (Text): 1) mov eax, eax 2) lea eax, [eax] 3) cmc cmc 4) xchg eax, ebx xchg eax, ebx ну и так далее, кому на сколько хватит фантазии...
Надо ввести ограничение на количество команд, иначе во флуд тема перерастет, т.к. холостых действий бесконечно много можно придумать. Мои варианты: 1) jmp/jcc/jecxz $+5 2) ADD/OR/XOR/etc. с нулем 3) все cдвиги и вращения на величину, кратную 20h 4) xhcg с самим собой (не видать было) 4) всё в категории Действие-Отменяющее Действие (+в мн. числе) и тд
Ладно, ставим ограничения: 1) Не больше 7 инструкций 2) Не больше 32 байт машинного кода 3) Сделаем послабление - инструкции могут менять флаги и пользоваться стеком _BC_ А с джампами ты неплохо придумал. Мне это как-то в голову не приходило
ADD/OR/XOR/etc сотрет флаги, можно использовать все сдвиги на 0 битов (к bsr\bsf тоже относится) add: на счет bsr\bsf я не прав, забыл что у него нет imm
Имхо jmp $+x и без разницы что за ним - лучшее что можно придумать. Code (Text): marco calign16 { jmp @f align 16 @@: }
bogrus bsr/bsf к тому же и регистр-приемник затрет. Предлагаю для каждой последовательности указывать, изменяет ли она флаги
Да это фигня 7 инструкций. push reg(s)/flags --- any action(s) --- pop reg(s)/flags Слишком много сюда входит. Предлагаю ограничиться двумя, максимум 3.
Чтобы всем было интереснее, ужесточим ограничения: не больше двух инструкций (в сумме не больше 16 байт машинного кода)