Null Free Shellcode - PullRequest
       7

Null Free Shellcode

4 голосов
/ 28 июля 2011

Я пытаюсь преобразовать написанную мной программу сборки в нулевой шелл-код.

Тем не менее, я не уверен, как это сделать для определенных инструкций. Некоторые из них (в синтаксисе Intel) включают в себя:

push 0x1000

и

mov BYTE [eax],0x31

Я хочу не использовать тысячу звонков в inc eax. Я подумал, может быть, что-то креативное с сохранением значений, а во-вторых, может быть, если бы был установлен флаг, чтобы он принимал константу всего 8 байтов.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 28 июля 2011
push 0x1000

Если вы можете сэкономить регистр (и вы не против засорять флаги), как насчет чего-то вроде:

xor eax, eax
inc eax
shl eax, 12
push eax

mov BYTE [eax],0x31

Ноль здесь идет не от константы, а от режима адресации. Попробуйте:

xchg eax, ecx
mov BYTE [ecx],0x31
xchg eax, ecx
...