二進位制安全學習:Example:Function Prologue and Function Epilogue(基礎函式呼叫機制)
NTUS
例項程式:
分析:
程式解釋:
定義val,val = function add(2)
add(2):
2=num-1 ==> num=3
return num =num+add(2)=3+2=5
val=num=5
編譯成彙編:
彙編程式碼部分分析:
#Function Prologue部分:
push rbp
mov rbp,rsp
sub rsp,0x10
#分配新的local varibal,即Stack中開闢新空間
mov edi,0x2
#val=add(2);在stack中分配空間
call 4004e7 <add>
#stack pointer point to address 4004e7
Main函式在不一定是第一個被執行的函式,編譯器會首先執行library等初始化函式。
Stack中首先放入Address: _libc_start_main+231,等到Main函式執行完後, Return: _libc_start_main+231.
call 完函式後,進入函式:
現在進入add函式:
#開闢stack新空間
push rbp
#切一個新的localvaribal
mov rbp,rsp
sub rsp,0x10
mov DWORD PTR [rbp-0x4],edi
#edi暫存器放到localvaribal[rbp-0x4]地址
cmp DWORD PTR [rbp-0x4],0x1
#判斷是否等於1
#CMP指令用法
#cmp(compare)
#CMP OPR1,OPR2
#CMP (OPR1)-(OPR2)
jne DWORD 4004ff <add+0x18>
#jne是一個條件轉移指令。當ZF=0,轉至標號處執行。
mov eax,0x1
jmp 4005313 <add+0x2c>
#把2放到localvaribal
#然後跳到地址4005213
mov eax,DWORD PTR [ebp-0x4]
待更,敬請期待。
關注:Hunter網路安全 獲取更多資訊
網站:bbs.kylzrv.com
CTF團隊:Hunter網路安全
相關文章
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 基礎練習 十六進位制轉八進位制
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- ROP【二進位制學習】
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- 【轉帖】Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- Java基礎系列-二進位制操作Java
- java二進位制相關基礎Java
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 藍橋杯 基礎練習 十六進位制轉八進位制
- 函式(FUNCTION)函式Function
- JavaScript入門-函式function(二)JavaScript函式Function
- Function(函式分享)第二節Function函式
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制與二進位制運算
- JavaScript學習總結(四)function函式部分JavaScriptFunction函式
- sql實現10進位制16進位制轉換函式SQL函式
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 十進位制——二 (八、十六 )進位制
- JavaScript function 函式JavaScriptFunction函式
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 二進位制、十進位制與十六進位制相互轉化
- (二進位制)
- 二進位制
- 【C++基礎】純虛擬函式 - pure virtual functionC++函式Function
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 二進位制轉十進位制快速方法
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- oracle 給的轉換函式實現 十六進位制---->十進位制Oracle函式
- php二進位制安全的含義PHP
- 資訊學奧賽初賽天天練-71-NOIP2016普及組-基礎題2-進位制轉換、二進位制轉八進位制、八進位制轉二進位制、二叉樹陣列儲存、定址空間二叉樹陣列
- oracle中進位制轉換函式Oracle函式
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制