簡體   English   中英

從 C shellcode 訪問 EBP 寄存器

[英]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_ptrreturn_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM