作者shane123 (家產有八十七億  ﰩ
看板LinuxDev
標題Re: [問題] C程式中取得EIP值!?
時間Sun May 27 19:33:07 2007
可以試試看這樣做
不過不太準確就是了 ^^"
unsigned int EIP;
__asm("call t0\n\t"
"t0:\n\t"
"popl %0"::"g"(EIP));
※ 引述《showbizz (藍色咆哮)》之銘言:
: 我在linux 2.6版上,希望寫一個C語言應用程式
: 可以在執行到某段code時,我要把esp(stack pointer)
: 及ebp(base pointer or frame pointer)及eip(instruction pointer)的值
: 先存入程式變數中。
: 目前我利用的方式是在C程式中,加入assembly code
: 如下,
: unsigned int ESP,EBP;
: __asm__ __volatile__ ("mov %%esp, %0\n\t"
: "mov %%ebp, %1"
: : "=r" (ESP), "=r" (EBP)
: : "0" (ESP), "1" (EBP)
: : "0");
: 但是現在系統好像不行直接允取讀到eip暫存器的值,
: 我該如何做才能取得eip值呢 !?
: Thx
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.97.25
→ showbizz:抱歉..我不太了解你寫的..可有更明確的說明呢!? 05/27 20:22
→ shane123:因為 call 這個指令會把 eip push 到 stack 05/27 21:16
→ shane123:就可以藉此知道 eip 了 .... 05/27 21:17