私はLinux用のアセンブラを習っていますが、このサンプルプログラムでは、write syscallを呼び出して、 'Hello、World!'と表示することになっていますが、segfaultが生成されます。私は宿題ではなく、私の自由な時間に学びます、私はもはや学校に行くことはありません!linux asm x86 production segfault
誰でもこのコードで何か問題が見えることはありますか?
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
jmp short string
code:
pop ecx
mov bl,1
mov dl,13
mov al,4
int 0x80
dec bl
mov al,1
int 0x80
string:
call code
db 'Hello, World!'
私は、あなたの文字列のアドレスを 'ecx'にロードするのは、まれな方法です。 –
segfaultを出力する前にsegfaultを出力するか出力を生成しませんか? –
@Greg:それは位置独立したシェルコードを書いている最も一般的な方法の一つですが、合意しました... –