一意のバイトのみを持つ(小さな)シェルコードを持つことは可能ですか?
これまでのところ、オンラインで見つけることができる最小のシェルコードはLinux x86では19バイトであることに気付きましたが、特に「/ bin/sh」の「/」は繰り返しバイトを実行し、一部のオペコードにも繰り返しバイトが含まれています。あなたができるx86_64の素晴らしいトリックに気づきました
mov rax, 0xFF978CD091969DD1 ; garbage at first look
neg rax ; rax = /bin/sh
しかし、それでもオペコードからのいくつかのバイトが繰り返されます。 x86またはx86_64のいずれかの解決策を知っている人はいますか?
条件を尊重し、非常に短い間にこれを思いついた:
mov rbx, 0x68732f6e696221
or r8b, 0xe
add rbx, r8
Push rbx
Push rsp
pop rdi
mov al, 0x3b
Syscall