二進位制安全學習: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網路安全
相關文章
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 二進位制函式JSON資料分類問題——機器學習函式JSON機器學習
- ROP【二進位制學習】
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- Java基礎系列-二進位制操作Java
- 藍橋杯 基礎練習 十六進位制轉八進位制
- Function(函式分享)第二節Function函式
- JavaScript入門-函式function(二)JavaScript函式Function
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript function 函式JavaScriptFunction函式
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制與二進位制運算
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 十進位制——二 (八、十六 )進位制
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 二進位制、十進位制與十六進位制相互轉化
- Python進階 函式快取 (Function caching)Python函式快取Function
- 二進位制
- (二進位制)
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 資訊學奧賽初賽天天練-71-NOIP2016普及組-基礎題2-進位制轉換、二進位制轉八進位制、八進位制轉二進位制、二叉樹陣列儲存、定址空間二叉樹陣列
- 二進位制轉十進位制快速方法
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 什麼是二進位制?二進位制如何轉換?
- JavaScript十進位制轉換為二進位制JavaScript
- 十進位制轉二進位制推導(草稿)
- [pwn基礎]Linux安全機制Linux
- Java 8 Function 函式介面JavaFunction函式
- js的函式function(一)JS函式Function
- Cocoapods 二進位制
- 04 二進位制
- leetcode -- 二進位制LeetCode
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 牛客網 二進位制數(進位制轉換、北郵機試)