[問題] x64 環境下的行程虛擬記憶體位置

作者: flypaper (一直飛)   2019-07-05 07:48:10
肥宅我最近試著寫些 debugger 的程式
但遇到些問題, 網路上常說程式的起始點位置是 0x8048xxx
但我利用 gdb 或者是 ptrace 會發現是個更大的數字 (e.g. 0x7f1baa1e8090)
Q1: 是因為處理器的差距嗎?
考量當時的環境主流應該是 x86 32 bits的版本 (我是 64 bits 的版本)
Q2: 我該如何得知子行程的 .text 或者 .plt 的位置?
作者: sarafciel (Cattuz)   2019-07-05 09:27:00
開gdb然後下info files看看?
作者: b0920075 (Void)   2019-07-05 10:01:00
0x8048通常是32位元架構下的地址子行程是child?
作者: Lipraxde (Lipraxde)   2019-07-05 10:26:00
因為有 ASLR 吧
作者: sarafciel (Cattuz)   2019-07-05 10:52:00
ASLR的位偏沒那麼大 應該是還有開PIE才對
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2019-07-05 14:37:00
0x80xxxxx 通常是 32bit 沒有 pie0x7fxxxxxxxxxx 通常會是 __libc_start_main 的位址
作者: Lipraxde (Lipraxde)   2019-07-05 15:07:00
https://tinyurl.com/y29xw98t看來我一直誤會 ASLR 了
作者: Astar5566 (一顆星5566)   2019-07-05 15:16:00
你看到的是libc start man或是stack吧
作者: tinlans ( )   2019-07-05 21:18:00
沒有,乖乖用 /proc/<pid>/maps 看吧。

Links booklink

Contact Us: admin [ a t ] ucptt.com