64bit AsmでSecurity Tubeのexecveチュートリアル(http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html)を模倣しようとしています。バスエラーがどこから来ているのか分かりません。私はGDBのアプリケーションを踏みとどったが、エラーは私がフレーム外になるまで起きなかった。誰かが何が起こっているか知っているなら、私はあなたから聞くのが大好きです。ExecveのOSX x86_64のバスエラー
.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
xor %rax, %rax
push %rax
movabsq $0x68732f6e69622f2f, %rdi
push %rax
mov %rsp, %rsi
push %rdi
mov %rsp, %rdx
mov $0x2000059, %rax
syscall
、 'push'は、32ビットの符号が即時に拡張して、64ビットから64ビットモードになっています。だから実際にスタック上に '2f 2f 62 69 00 00 00 00 6e 2f 73 68 00 00 00 00'となってしまいます。代わりに 'movabsq $ 0x68732f6e69622f2f、%rax;を試すことができます。 push%rax' – Jester
ありがとう@Jester。しかし、まだバスのエラーを取得します。あなたの指示を反映するためにコードを更新します。 – JLegendre
'rdi'をロードしましたが、' rax'をプッシュしましたか? – Jester