0CCCCCCCCh很特殊吗???

Yibans 2007-06-10 07:01:36
我写个最简单的C程序,然后DEBUG看汇编代码,其中有一段非常之不懂,它总要在程序开始前执行:
mov eax,0CCCCCCCCh
不知道这是个什么特殊的值吗?为什么要这样呢??
==========================
汇编代码前部分如下:
7: int main(int argc, char* argv[])
8: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,44h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-44h]
0040101C mov ecx,11h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
//下面就是开始其它内容了。。。
=========================================
还有包括上面的44H也非常之不懂。。。。,有达人关照一下解疑吗?
=========================================
谢谢解答!!!!
...全文
671 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yibans 2007-06-10
  • 打赏
  • 举报
回复
嗯,我看了一下,int 3对应的汇编码是CC。
它一次写入4个CC,应该是因为eax寄存器本身就是32位,所以以32位为单位来写入。
而之所以要写入CC(也就是int 3),应该是因为如果程序没有按照正常的轨道运行的话,就会去执行int 3的内容,从而报错。也就是为了便于检错与调试!!!
谢谢大家的回答!!!:)
Yibans 2007-06-10
  • 打赏
  • 举报
回复
也就是是不是说0CCCCCCCCh对应的汇编代码就是int 3?
Yibans 2007-06-10
  • 打赏
  • 举报
回复
XXX.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。。。。。。。
原来int 3就是这个作用的???
yutaooo 2007-06-10
  • 打赏
  • 举报
回复
调试 -> int 3 -> 0xcc

以下为测试:

// test5.cpp
// xp + vc-7_1
// cl -FAsc test5.cpp
int main() {
__asm int 3;
}

编译后, 观察一下输出的文件内容.
  • 打赏
  • 举报
回复
sub esp,44h是为局部变量在栈上开辟空间。
mov eax,0CCCCCCCCh
rep stos dword ptr [edi]
是给这部分空间设置一个“特征值”,
估计是用于调试的,诸如检测缓冲区溢出、非法篡改局部变量等。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧