オブジェクトファイルをgdbで解析したのですが、
(gdb) info registers
rax 0x488600 4752896
rbx 0x41 65
rcx 0xfbad2a84 4222429828
rdx 0x41 65
rsi 0x7ffff7ffa000 140737354113024
rdi 0x1 1
rbp 0x7ffff7ffa000 0x7ffff7ffa000
rsp 0x7fffffffd9b8 0x7fffffffd9b8
・・・・
この中から、システムコール番号を見つけたいのです。
eaxレジスタにシステムコール番号が入っているみたいなのですが、64bitなのでraxですよね?
raxを見てみると4752896となっていました。
writeシステムコールを呼んでいます。
この番号おかしくないですか??
いくらなんでも400万は大きすぎるのではないでしょうか?
環境はlinux 64bitです。
システムコール番号はraxで本当にあっていますか?
またlinux 64bitでシステムコール番号が定義されているヘッダーファイルなどを教えていただきたいです。
追記
syscall以降は0x1になっていると書きましたが、
syscall_64.tblに
1 common write sys_write
のような一行を見つけました。
32bitだと 4 になっているようですね。
ん?? するとシステムコールの返り値はどこにあるんでしょうかね?
回答1件
あなたの回答
tips
プレビュー