能力值:
( LV9,RANK:180 )
|
-
-
2 楼
确保Stack平衡防溢出
|
能力值:
( LV6,RANK:90 )
|
-
-
3 楼
不是吧?现在很多软件有这个动作,还真的没仔细体会。
|
能力值:
( LV9,RANK:180 )
|
-
-
4 楼
因为我也是乱猜的.
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
应该是用来验证堆栈是不是有溢出。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
0060DB56 |. mov eax, dword ptr [72CFD0]
前一句是上面的吧。
eax内的的地址应该还是本程序空间内,
sub则是椎栈平衡,不会是递归算法中对椎栈的核对吧?
难不成是花指令?!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
还是一头雾水,大家来个肯定的答案啊,好完结了它!
|
能力值:
( LV6,RANK:90 )
|
-
-
8 楼
楼上已经给出了正确的答案,结贴吧
xor eax, esp是为了增加[72CFD0]种子的随机性,防止[72CFD0]的随机值被猜到,从而绕过检测.
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
没错,是为了防止栈越界(缓冲区溢出),楼主的代码没给出eax的值放在了何处,它应放在函数栈的栈底,一旦发生栈内的缓冲区溢出,在破坏函数返回地址以前则极大的可能性(不是绝对的)先破坏该值。在函数尾部应对该值进行检查:
mov ecx,...
xor ecx, esp
...
call __security_check_cookie
如果函数开头保存在栈底的值被破坏,则__security_check_cookie则不返回,转出错处理。
72CFD0处的值为__security_cookie,对于有异常处理的函数,它的作用是做栈结构一致性检查。
|
能力值:
( LV8,RANK:130 )
|
-
-
10 楼
安全COOKIE
VS编译的bin默认都有
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢__半道出家....
说得很详细了,懂了.....
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
编译开关生产的防止缓冲区溢出的cookie
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
应该不是为了防止堆栈溢出的,因为这样做根本起不到作用,防溢出一般是在堆栈中写入一个值,再ret之前检测这个值。
可以在贴出一些后续的代码 看看eax后续干什么用了!
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
DEBUG模式.........
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
正解!!
估计下面代码有一句mov [esp+498],eax这样的语句
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
楼主可以试试在函数中自行给esp+4或者其他的
你看你这函数出不出错
|
|
|