進程調用ptrace(PTRACE_TRACEME,...)之後,tracee停止了嗎?進程調用ptrace(PTRACE_TRACEME,...)後會發生什麼?
是否在exec()
系統調用中停止了tracee? (似乎不是)
Tracee是否停留在動態鏈接器文本中?
...
如果我編譯沒有任何動態鏈接庫和glibc C運行時一個可執行文件,並指定入口點, 的tracee會停在入口點。
但是當我用glibc編譯一個可執行文件(gcc hello-world.c
)時,它會停止在/lib/ld-2.20.so offset + 0xfb0
。 (cat/proc/[pid]/maps)
希望瞭解更多細節。
man ptrace
似乎沒有幫助。
thx。所以,當tracee停止時,CPU EIP寄存器指向哪條指令? – songhir
好吧,我會說它包含'execve()'系統調用號碼,但我不確定,所以你可以用gdb自己檢查它,有一個命令('info reg')會告訴你你的進程寄存器的值! – bumblebeez
抱歉,我的含糊不清的陳述。當tracee停止時,CPU EIP寄存器指向一條指令。這條指令是什麼?它屬於glibc,動態鏈接器或其他? – songhir