牢記VC程式內的三大檢測函式

2021-10-10 03:57:56 字數 2430 閱讀 3595

vc編譯的程式中,時常會出現一些常見的檢測函式,為了節省逆向的時間,我們有必要記住這些檢測函式的特徵,今天我就記錄一下vc程式的三大檢測函式。

如果是在ida中分析vc程式, shift+f5 加入vc的簽名搞定,但是在od中就需要經驗了。

加入簽名後,就可以看到函式名了。

一、checkstackvars

看名稱就知道知道這是乙個檢測堆疊相關的函式,它的主要特徵:

(1)call 上面一行**是lea edx, ***x。

(2)函式內部存在**cmp ***,0xcccccccc

.text:00463934                 push    eax

.text:00463935 lea edx, dword_463960

.text:0046393b call j_@_rtc_checkstackvars@8 ; 檢測堆疊

.text:00463940 pop eax

// 內部

.text:004661e4 mov ecx, [ebx+4]

.text:004661e7 mov eax, [ebp+var_4]

.text:004661ea mov edx, [ecx+edi]

.text:004661ed cmp dword ptr [edx+eax-4], 0cccccccch

.text:004661f5 jnz short loc_466209

.text:004661f7 mov eax, [ecx+edi+4]

.text:004661fb add eax, edx

.text:004661fd mov edx, [ebp+var_4]

.text:00466200 cmp dword ptr [eax+edx], 0cccccccch

.text:00466207 jz short loc_466219

二、security_cookie

安全cookie 以前因為棧溢位的問題是在太嚴重,所以vs引進了security_cookie,主要用來防止棧溢位的。主要特徵:

// 外部 call上面有xor ***,***

.text:00463948 xor ecx, ebp

.text:0046394a call j_@__security_check_cookie@4 ; 安全cookie

// 內部對比cookie

.text:00466270 cmp ecx, ___security_cookie

.text:00466276 bnd jnz short $failure$4

.text:00466279 bnd retn

三、checkesp

檢測棧頂,同樣也有外部和內部特徵

// 外部 call 上面有** cmp ebp, esp

.text:00463955 cmp ebp, esp

.text:00463957 call j___rtc_checkesp ; 檢測esp

// 內部呼叫了乙個庫函式,第二個引數為0,函式外平衡棧,8個位元組。

.text:00466251 push 0 ; int

.text:00466253 push eax ; void *

.text:00466254 call j_?_rtc_failure@@yaxpaxh@z ; _rtc_failure(void *,int)

.text:00466259 add esp, 8

VC與VB的三大區別

這是我以前碰到的乙個面試題,當時我對這兩者都不甚熟悉,且發現面試官態度傲慢,就胡亂的說了兩個答案。突然間有想到這個問題,本著對自己負責任態度,得出的答案如下 1.兩者的設計出發點不一樣.vc更注重程式的效率,而vb則強調易用性 2.vc為編譯型,編譯後得到的程式可直接執行。vb為解釋型,編譯後得到的...

React內三種函式的寫法

寫法一 讓函式內部的this指向這個類的例項,它是用bind實現的,bind的第乙個引數表示context,就是this。寫法一class manageaddress extends react.component 切換位址型別,重新獲取位址列表 param key handlechangeaddr...

程式設計師的「三大死穴」

模糊了雙眼,哦,近視!這點不用過多解釋了吧,戴眼鏡的人太多了。看看現在中小學,無論是因為看書 看電視 看電腦,幾乎各個都是四眼神童,此後的人生中,要一直忍受各個眼鏡店的無情盤剝。想要保護眼睛,有哪些簡單的方法呢?最重要的,是每看 1 小時電腦,就去看看遠處的綠色植物 10 分鐘。但是請注意,這裡最重...