引數、返回位址、區域性變數和ebp的關係
debug版本:
0x004000d0 local_3 ebp-20 <-- 區域性變數3
0xcccccccc
0xcccccccc
0x004000dc local_2 ebp-14 <-- 區域性變數2
0xcccccccc
0xcccccccc
0x004000e8 local_1 ebp-8 <-- 區域性變數1
0xcccccccc
0x004000f0 ebp_old ebp <-- 舊ebp值
0x004000f4 retn_addr ebp+4 <-- 返回位址
0x004000f8 parem_1 ebp+8 <-- 引數1
0x004000fc param_2 ebp+c <-- 引數2
0x00400100 param_3 ebp+10 <-- 引數3
release版本:
0x004000e4 local_3 ebp-c <-- 區域性變數3
0x004000e8 local_2 ebp-8 <-- 區域性變數2
0x004000ec local_1 ebp-4 <-- 區域性變數1
0x004000f0 ebp_old ebp <-- 舊ebp值
0x004000f4 retn_addr ebp+4 <-- 返回位址
0x004000f8 parem_1 ebp+8 <-- 引數1
0x004000fc param_2 ebp+c <-- 引數2
0x00400100 param_3 ebp+10 <-- 引數3
堆疊由高位址到低位址增長
程式執行堆疊
堆疊是個特殊的儲存區,屬於ram空間的一部分 堆疊用於函式呼叫 中斷切換時保護和恢復現場資料 堆疊中的物體具有乙個特徵 第乙個放入堆疊中的總是最後被拿出來 堆疊中定義了一些操作,兩個重要的是push和pop push入棧 堆疊指標sp加1,然後在堆疊的頂部加入乙個元素 pop出棧 先將sp所指示的內...
Windows堆疊溢位全面解析
關於堆疊溢位,前面寫的多期文章都是關於具體漏洞分析和shellcode的編寫技術,而有朋友希望我能寫點入門級的文章。今天,我就和大家一起,來全面解析windows下堆疊溢位的具體細節及利用過程。過程雖然簡單,但自己又走了一遍,才發現裡面的確有一些值得注意的地方。廢話少說,我們直接切入正題!基礎知識 ...
Windows下C 列印堆疊
搜尋了下在windows下c 列印堆疊的相關資料,發現很多都是類似,且方法比較複雜,因此自己封裝了乙個介面。主要用到了capturestackbacktrace,symfromaddr,symgetlinefromaddr64這三個介面。capturestackbacktrace用於獲取當前堆疊,s...