4

作成したアセンブリプログラムをnullのないシェルコードに変換しようとしています。

ただし、特定の手順でこれを実行する方法がわかりません。それらのいくつか(Intel構文)には次のものが含まれます。

push 0x1000

mov BYTE [eax],0x31

inceaxに1000回の呼び出しを使用することは避けたいです。私は多分xoring値で何か創造的なことを考えていました、そして第二に、多分それがたった8バイトの定数を取るように設定するフラグがあったかどうか。

どんな助けでも大歓迎です。

4

1 に答える 1

2
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
于 2011-07-28T04:11:23.983 に答える