我想知道是否有一個Linux工具可以讓你讀取程序堆棧的值?例如運行包含該行程序的二進制時:Linux工具讀取堆棧的值
foo(parameter);
該參數將被放在堆棧上,我想知道是否有訪問它的工具。
謝謝。
我想知道是否有一個Linux工具可以讓你讀取程序堆棧的值?例如運行包含該行程序的二進制時:Linux工具讀取堆棧的值
foo(parameter);
該參數將被放在堆棧上,我想知道是否有訪問它的工具。
謝謝。
既然你這個標記爲security
,你可能會想讀「砸堆棧的樂趣和利潤」:
Gdb?
glibc中還有一些回溯函數。 http://www.gnu.org/s/libc/manual/html_node/Backtraces.html
是的,這聽起來像你只是想運行一個調試器。如果你用-g選項編譯程序,那麼你可以使用gdb的,如:
的gdb myprogram
現在在你的函數設置一個斷點,您可以在當前範圍內查看變量的值。
如果你是C初學者,學習gdb(Gnu調試器)非常值得你花時間學習。
你不需要編譯使用-g二進制。很明顯,更多的調試信息會有所幫助,但是您可以在調用堆棧中看到extern(即shared-linker-visible)函數,並讀取它們參數的數值。它的優化阻礙了調試器的使用(特別是gcc上的-fomit-stack-pointer!),而不是缺少-g。 – 2009-10-17 17:46:01
偉大的鏈接,這正是我正在尋找! – woolagaroo 2009-10-17 17:59:47
一定要善用你的力量,而不是邪惡的:) – Grandpa 2009-10-17 18:09:49