[英]Why in GDB, the value of “frame at” is different from the value of ebp($fp) register?
[英]Access EBP register from C shellcode
我試圖理解一些匯編代碼,以便我可以在 C 中使用它。 假設以下 NASM 代碼
get_entry_point:
%define STACK_LIMIT 8
%define return_val [ebp-4]
%define base_ptr [ebp-8]
ebp
寄存器是否只是簡單地訪問 function 的參數並將它們存儲在base_ptr
和return_val
中,還是在做其他事情?
void __stdcall get_entry_point(unsigned long return_val, unsigned long base_ptr);
關於以下代碼
push ebp
mov ebp, esp
sub esp, STACK_LIMIT
pushad
在上面的原型 C function 內部會是什么樣子?
是ebp指令
ebp 不是指令,它是一個寄存器。 它是一個變量的程序集等價物。
%define return_val [ebp-4]
也不是指令。 這只是意味着,無論代碼說什么return_val
,匯編程序都會將其視為您編寫[ebp-4]
。
關於以下代碼......在上面的原型 C function 中會是什么樣子?
這是編譯器在需要時添加到每個 function 開頭的標准代碼。
它看起來像 function 開頭的{
,因為它自動插入到 function 的開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.