作者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
1F:→ showbizz:抱歉..我不太了解你写的..可有更明确的说明呢!? 05/27 20:22
2F:→ shane123:因为 call 这个指令会把 eip push 到 stack 05/27 21:16
3F:→ shane123:就可以藉此知道 eip 了 .... 05/27 21:17