能力值:
( LV2,RANK:10 )
|
-
-
26 楼
[QUOTE=君君寒;571097]http://www.chinaaspx.com/archive/vc/8703.htm
对const声明变量的奇异行为的探讨
发表时间:2004-8-10
作者:未知[获得此文档时候没有作者记录,深感抱歉,本文档全为转载]
对const声明变量的奇异行为的探讨
Ar...[/QUOTE]
大哥,此ECX非彼ECX。
此ECX被当作循环计数用,LZ的ECX只是当作一个基本的变量用。。。
很明显不同。。。。。。
转君君寒转帖的时候得看看情况吧
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
[QUOTE=君君寒;571097]http://www.chinaaspx.com/archive/vc/8703.htm
对const声明变量的奇异行为的探讨
\\ 第六步,给段寄存器预先赋值:
0040125C mov ecx,12h
\\ ECX寄存器是段寄存器的一种,为计数器 SS 堆栈段。设为12h。
00401261 mov eax,0CCCCCCCCh
\\ EAX寄存器是段寄存器的一种,为累加器 CS 代码段;设为0CCCCCCCCh。
00401266 rep stos dword ptr [edi]
\\ 这句话是干吗的?
[/QUOTE]
我来给你解释,这段代码是把刚在堆栈中分配的空间填充为0xcc,也就是int3的。
eax=要填充的字节
ecx=循环的次数
rep stos [edi]
完成这个填充。
由此可见,此处ECX仅仅作为循环的计数用,和LZ说的ECX完全不是一回事。。。。
君君寒转帖要看贴啊,不要乱转
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
不懂啊,
冒泡啊。。。
|
能力值:
( LV9,RANK:180 )
|
-
-
29 楼
那文章越后面越天才
最后面已经是无敌了
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
00401250 push ebp
00401251 mov ebp,esp//这两步用的着解释吗
00401253 sub esp,48h//分配0x48字节,一共0x12=18个DWORD
00401256 push ebx
00401257 push esi
00401258 push edi//这三句也不用解释
00401259 lea edi,[ebp-48h]
0040125C mov ecx,12h
00401261 mov eax,0CCCCCCCCh
00401266 rep stos dword ptr [edi]//数据填充0xcc int3
00401268 mov dword ptr [ebp-4], 2710h//不解释
0040126F mov dword ptr [ebp-8],0
00401276 lea eax,[ebp-4]
00401279 mov dword ptr [ebp-8],eax//给指针赋值
0040127C mov ecx,dword ptr [ebp-8]
0040127F mov dword ptr [ecx],0Ah//不解释
00401285 push 2710h
0040128A push offset string "%d\n" (0042f01c)
0040128F call printf (004082f0)
00401294 add esp,8//不解释
00401297 mov edx,dword ptr [ebp-8]
0040129A mov eax,dword ptr [edx]
0040129C push eax
0040129D push offset string "%d\n" (0042f01c)
004012A2 call printf (004082f0)
004012A7 add esp,8//不解释,自己看源码
004012AA xor eax,eax//eax=0
004012AC pop edi
004012AD pop esi
004012AE pop ebx//用不着解释
004012AF add esp,48h//不解释
004012B2 cmp ebp,esp
004012B4 call __chkesp (00408190)//不解释
004012B9 mov esp,ebp//恢复esp
004012BB pop ebp//恢复ebp
004012BC ret//返回
|
能力值:
( LV4,RANK:45 )
|
-
-
31 楼
。。。。没仔细看。转了下别人的大作,被众人虐了。闪人。我知道错了。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
强烈同意,写那文章的淫完全是瓜的
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
[QUOTE=unnamed;-1]
这样,当全局声明const变量时,我们企图将一个DWORD值写入一个0CCCCCCCCh指向的未分配的内存中,所以遭遇到访问禁止!!
而局部声明const变量时,是将一个DWORD值写入一个00000012h指向的内存中,这是可以的!!
[/QUOTE]
特别是这句,完全就是本着不懂装懂的精神来的。
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
高级语言不就是这样
忍忍吧
反正我看不出有什么区别
|
|
|