windows程式堆疊分布

2022-08-24 02:51:14 字數 1414 閱讀 5446

引數、返回位址、區域性變數和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...