Re: [問題] C程式中取得EIP值!?

看板LinuxDev作者時間18年前 (2007/05/27 19:33), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串2/2 (看更多)
可以試試看這樣做 不過不太準確就是了 ^^" 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

05/27 20:22, , 1F
抱歉..我不太了解你寫的..可有更明確的說明呢!?
05/27 20:22, 1F

05/27 21:16, , 2F
因為 call 這個指令會把 eip push 到 stack
05/27 21:16, 2F

05/27 21:17, , 3F
就可以藉此知道 eip 了 ....
05/27 21:17, 3F
文章代碼(AID): #16MMnsfT (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #16MMnsfT (LinuxDev)