2018/10/03-函式呼叫約定、cdecl、stdcall、fastcall- 《惡意程式碼分析實戰》
cdecl是最常用的約定之一,引數是從右到左按序被壓入棧,當函式完成時由呼叫者清理棧,並且將返回值儲存在EAX中。
stdcall約定是被呼叫函式負責清理棧,其他和cdecl非常類似。
fastcall呼叫約定跨編譯器時變化最多,但是它總體上在所有情況下的工作方式都是相似的。在fastcall中,前一些引數(典型的是前兩個)被傳到暫存器中,備用的暫存器是EDX和ECX(微軟fastcall約定)。如果需要的話,剩下的引數再以從右到左的次序被載入到棧上。通常使用fastcall比其他約定更高效,因為程式碼不需要涉及過多的棧操作。
相關推薦
2018/10/03-函式呼叫約定、cdecl、stdcall、fastcall- 《惡意程式碼分析實戰》
cdecl是最常用的約定之一,引數是從右到左按序被壓入棧,當函式完成時由呼叫者清理棧,並且將返回值儲存在EAX中。 stdcall約定是被呼叫函式負責清理棧,其他和cdecl非常類似。 fastcall呼叫約定跨編譯器時變化最多,但是它總體上在所有情況下的工作方式都是相似的。在fastcall
2018/10/03-字串指令(重複指令、操作資料緩衝區指令)、rep與movx指令-《惡意程式碼分析實戰》
重複指令是一組操作資料緩衝區的指令。資料緩衝區通常是一個位元組陣列的形式,也可以是單字或者雙字。(Intel'稱這些指令為字串指令) 最常見的資料緩衝區操作指令是movsx、cmps、stosx和scasx,其中x可以是b、w後者d,分別表示位元組、字和雙字。這些指令對任何形式的資料都有效。
2018/11/03-棧、x86架構和暫存器-《惡意程式碼分析實戰》
棧用於函式的記憶體、區域性變數、流控制結構等被儲存在棧中。棧是一種用壓和彈操作來刻畫的資料結構,向棧中壓入一些東西,然後再把他們彈出來。它是一種先入後出(LIFO)的結構。 x86架構有對棧的內建支援。用於這種支援的暫存器包括ESP和EBP。其中,ESP是棧指標,包含了指向棧頂的記憶體地址。一些東西
2018/11/06-異常-《惡意程式碼分析實戰》
異常機制允許一個程式在普通執行流之外處理事件。多數時間裡,異常是由錯誤引起的,諸如除零錯誤。當一個異常發生時,執行轉移到處理這個異常的特殊例程。有些異常,比如除零異常,是由硬體丟擲的;其他的,比如無效記憶體訪問,是由作業系統丟擲的。你也可以在程式碼中使用RaiseException呼叫,顯示地丟擲一個異常
2018/11/08-偵錯程式-《惡意程式碼分析實戰》
偵錯程式是用來檢測或測試其他程式執行的以來軟體或硬體。由於剛完成的程式包含錯誤,因此偵錯程式在軟體開發過程中可以大顯身手。偵錯程式讓你能夠洞察程式在執行過程中做了什麼。偵錯程式的目的是允許開發者監控程式的內部狀態和執行。 從偵錯程式獲得程式的資訊可能比較困難,但並不意味著不可能,可以從反彙編器中獲得
2018/10/03-函數調用約定、cdecl、stdcall、fastcall- 《惡意代碼分析實戰》
實戰 std 高效 返回 cde 似的 工作 負責 棧操作 cdecl是最常用的約定之一,參數是從右到左按序被壓入棧,當函數完成時由調用者清理棧,並且將返回值保存在EAX中。 stdcall約定是被調用函數負責清理棧,其他和cdecl非常類似。 fastcall
cdecl、stdcall、fastcall、thiscall函式呼叫約定區別 (轉)
在C語言中,假設我們有這樣的一個函式: int function(int a,int b) 呼叫時只要用result = function(1,2)這樣的方式就可以使用這個函式。但是,當高階語言被編譯成計算機可以識別的機器碼時,有一個問題就凸現出來:在CPU中,計算機沒有辦法知道一個函式呼叫需要
cdecl、stdcall、fastcall函式呼叫約定區別
論函式呼叫約定 在C語言中,假設我們有這樣的一個函式: int function(int a,int b) 呼叫時只要用result = function(1,2)這樣的方式就可以使用這個函式。但是,當高階語言被編譯成計算機可以識別的機器碼時,有一個問題就凸現出來:在CPU中
2018/10/03-字符串指令(重復指令、操作數據緩沖區指令)、rep與movx指令-《惡意代碼分析實戰》
分析 casb 形式 使用 如果 常見 緩沖區 字符串 osb 重復指令是一組操作數據緩沖區的指令。數據緩沖區通常是一個字節數組的形式,也可以是單字或者雙字。(Intel‘稱這些指令為字符串指令) 最常見的數據緩沖區操作指令是movsx、cmps、stosx和sca
2018-10-14 函式值遞迴呼叫
1.遞迴 遞迴演算法是一種直接過間接呼叫自身函式或者方法的演算法 【自己呼叫自己】 2.遞迴原則 (1)函式會一直呼叫自己,直到滿足特定條件(遞迴要有一個結束條件) (2)遞迴呼叫時會傳遞些引數,每次呼叫都會將一個新的引數傳遞給自己; static void Main(st
常見函式呼叫約定(x86、x64、arm、arm64)
我學習逆向,整理的一些常見的函式呼叫約定反彙編筆記。由於我是新手,肯定有一些疏漏不完善的,我遇到了會實時更新的。 X86 函式呼叫約定 X86 有三種常用呼叫約定,cdecl(C規範)/stdcall(WinAPI預設)/fastcall
push、pop及函式呼叫約定
push: 把一個32位的運算元壓入堆疊中。這個操作導致esp被減4。esp被形象地稱為棧頂。我們認為頂部是地址小的區域,那麼,壓入堆疊中資料越多,這個堆疊也就越堆越高,esp也就越來越小。在32位平臺,esp每次減少4位元組。 pop: 相反,esp被加4,一個數據
2018-10-18讀文獻總結之DCB分碼多重進接、零基線、訊號產生
---恢復內容開始--- 今天心血來潮,想開始把自己讀文獻的過程和每篇文獻的收穫總結一下,不知道CSDN怎麼回事,一直登陸不進去,搞得我註冊了一個部落格園的賬戶,部落格園新註冊的還需要認證,但是很快,所以我就來這邊了。文筆不好,主要是一些流水賬,用來自己看看。 前兩天一直搞不清DCB怎麼消除,看了一些文
x64函式呼叫約定——MSVC & GCC
傳參 MSVC 前4個引數使用rcx、rdx、r8、r9,剩下的引數用棧 GCC 前6個引數使用rdi、rsi、rdx、rcx、r8、r9,剩下的引數用棧。注意rdx、rcx的順序和MSVC上不一樣 caller saved registers 這類暫存器可由子函式自由使用,
從彙編角度檢視C語言函式呼叫約定【非常有用】
轉自:https://blog.csdn.net/Holmofy/article/details/76094986 為了防止出現不必要的程式碼影響組合語言的檢視,所以程式中不使用任何庫函式,以保持彙編程式碼的簡潔。 這裡所使用的彙編是VC的MASM。 預設函式呼叫方式_
2018.10.03 bzoj2527: [Poi2011]Meteors(整體二分)
傳送門 整體二分經典題目。 直接整體二分當前區間中的詢問操作需要下幾場雨。 令當前詢問區間是[l,r][l,r][l,r],修改區間是[ql,qr],mid=(ql+qr)/2[ql,qr],mid=
2018.10.03 bzoj1610:Line連線遊戲(計算幾何)
傳送門 計算幾何入門題,直接算出所有直線的斜率看有多少種不同就行了。 注意處理斜率不存在的情況。 程式碼: #include<bits/stdc++.h> #define N 205 usi
2018.10.03 bzoj3707: 圈地(計算幾何)
傳送門 計算幾何好題。 本蒟蒻表示不看題解只會O(n3)O(n^3)O(n3)。 正解是先考慮把直線按照斜率從小到大排序,然後把點按座標排序。 這樣每次列舉到直線(a,b)(a,b)(a,b)時,離直
2018.10.03 學習筆記 // 前端Javascript // BOM與DOM
題目: 如何檢測瀏覽器的型別 拆解url的各部分 知識點 navigator screen location history //navigator var ua = navigator.userAgent //字串 var isChrome = ua.inde
2018.10.03 NOI+模擬賽 解題報告
得分: 30+5+0=3530+5+0=3530+5+0=35(考得真不咋滴) T1T1T1:奧義商店(點此看題面) 以為很簡單,對著這題想了一個多小時,最後果斷打了個暴力交了… … 看完題解發現其實