在VC++编写的程序编程成Debug版,反汇编代码,函数入口处经常看到如下一段代码:

00EA14E0 55                push        ebp  
00EA14E1 8B EC             mov         ebp,esp
00EA14E3 81 EC C0 00 00 00 sub         esp,0C0h
00EA14E9 53                push        ebx  
00EA14EA 56                push        esi  
00EA14EB 57                push        edi  
00EA14EC 8D BD 40 FF FF FF lea         edi,[ebp-0C0h]
00EA14F2 B9 30 00 00 00    mov         ecx,30h
00EA14F7 B8 CC CC CC CC    mov         eax,0CCCCCCCCh
00EA14FC F3 AB             rep stos    dword ptr es:[edi]

其中主要分为3部分,最上面3行完成本函数局部变量栈空间的开辟,中间部分保存需要保护的寄存器(这部分并非必须),最后4行完成栈空间所有字节初始化为0xCC。

0xCC对应汇编代码 int 3,即软中断。

一方面,0xCC可以为某些检查提供标记(_RTC_CheckStackVars);另一方面,在栈操作错误或调试汇编代码(如使用OD调试shellcode)时可以对感兴趣的逻辑进行细致的分析,这通常可以通过加入

__asm {

int 3  ;         // 或 _emit 0xcc

};

来加入断点。

debug版函数初始化入口 0xcc相关推荐

  1. Linux内核深入理解系统调用(1):初始化-入口-处理-退出

    Linux内核深入理解系统调用(1):初始化-入口-处理-退出 rtoax 2021年3月 1. Linux 内核系统调用简介 这次提交为 linux内核解密 添加一个新的章节,从标题就可以知道, 这 ...

  2. main函数的入口函数

    操作系统装载程序之后,首先运行的代码并不是main的第一行,而是某些别的代码,这些代码负责准备好main函数执行所需要的环境,并且负责调用main函数, 运行这些代码的函数称为入口函数或入口点(Ent ...

  3. 同时生成 Release版和Debug版DLL的方法

    同时生成 Release版和Debug版DLL的方法 warning LNK4070的解决办法 重命名了一个MFC常规DLL的工程文件(VS C++ 2005编译环境),结果在编译时出现这样的警告:1 ...

  4. GPIO_init()函数初始化详解

    目录 1.GPIO_init()函数初始化示例 1.1 GPIO_InitTypeDef 1.2 GPIO_Init(GPIOB, &GPIO_GPIO_InitStructure) 1.3 ...

  5. 关于Debug版正常运行,release版运行崩溃的问题

    关于Debug版正常运行,release版运行崩溃的问题 通常情况下,Debug版用于程序的调试优化,尽可能将遇到的BUG找到并解决掉: 这样编译出的Release版才可能有效可靠的运行.然而如果编译 ...

  6. C语言编程的Debug版和Release版

    C语言编程的Debug版和Release版 简单的来说:Debug版是调试版,可以调试,让程序员用的.Release版是发行版,是用户用的,不能调试. 专业解释 Debug版: Debug 是&quo ...

  7. 区分Debug版还是Relase版

    // test.cpp : 区分Debug版还是Relase版 // #include "stdafx.h" //提示使用Debug环境会定义宏_DEBUG int _tmain( ...

  8. 二维数组传入函数_C++二维动态数组memset()函数初始化

    来源:https://blog.csdn.net/longhopefor/article/details/20994919 先说说memset函数: void *memset(void *s,int ...

  9. 旧的非flash版Metalink的入口

    很多人怀念那个界面十分古典.可以迅速打开的html版Metalink,在Oracle让My Oracle Support来代替Metalink后仍提供了一个旧版Metalink的入口,很多人在沿用这个 ...

最新文章

  1. java.io.FileNotFoundException: /storage/emulated/0/one.mp4 (Permission denied)
  2. 一周内咸鱼疯转2.4W次,最终被所有大厂封杀!
  3. MyBatisPLus3.x中代码生成器自定义数据库表字段类型转换
  4. Rust 编程语言极简教程 --- 实例学习
  5. 【翻译】C#表达式中的动态查询
  6. workbench提示工作负载高度不平衡_功率因数负载组
  7. 第一个程序python-HelloWorld
  8. 第一章节 ASP.NET Web应用程序基础(二)
  9. tp6 workerman
  10. SAP VK11 报错“条件不能创建在分销渠道 10 中”
  11. 中科院信工所经验_信工所六室面试经历
  12. 算法原理系列:红黑树
  13. Random Projection 随机投影法
  14. COPY NAV导航网格寻路(4) -- 生成nav网格
  15. idea 选中代码生成方法
  16. 操作系统内存换入-请求调页---14
  17. 名企笔试真题精选 (六)
  18. 文末送书 | 李航老师新作!机器学习经典著作《统计学习方法》全新升级
  19. 趣图:众人眼中的深度学习
  20. linux repo

热门文章

  1. 整理的一份古代诗词集+C语言固定大小文本替换
  2. 期待的东软一面,好易通二面
  3. python+pywinauto+lackey实现pc端exe自动化
  4. getResourceAsStream 探究
  5. 社团娱乐--记录大学美好生活摄影
  6. CTP开发(2)行情模块的开发
  7. 微信打开链接被提示已停止访问该网页怎么解决
  8. 实验四 获取C程序中一个逻辑地址对应的物理地址
  9. rabbitMq一收一发
  10. Java 代码实现阿姆斯特朗炮的原理