<br/>
VC编译的程序中,时常会出现一些常见的检测函数,为了节省逆向的时间,我们有必要记住这些检测函数的特征,今天我就记录一下VC程序的三大检测函数。
<br/>
如果是在IDA中分析VC程序, Shift+F5 加入VC的签名搞定,但是在OD中就需要经验了。
<br/>
加入签名后,就可以看到函数名了。
<br/>
看名称就知道知道这是一个检测堆栈相关的函数,它的主要特征:
(1)call 上面一行代码是lea edx, XXXX。
(2)函数内部存在代码cmp xxx,0xCCCCCCCC
<br/>
安全cookie 以前因为栈溢出的问题是在太严重,所以VS引进了Security_Cookie,主要用来防止栈溢出的。主要特征:
<br/>
检测栈顶,同样也有外部和内部特征
.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
.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
[注意]APP应用上架合规检测服务,协助应用顺利上架!