首页
社区
课程
招聘
[旧帖] [求助]《c++反汇编与逆向技术分析》 0.00雪花
发表于: 2012-6-3 11:00 1660

[旧帖] [求助]《c++反汇编与逆向技术分析》 0.00雪花

2012-6-3 11:00
1660
书中的实例都是在VC6.0编译环境下完成的。原来刚买书的时候只是简单的看了看代码,没有逐个进行调试,有的知识点也就理所当然的认为是一样的结果。
    但是今天在调试的时候发现了一个小问题。在VS2008的编译环境下,局部变量在堆栈中的存储不是连续的啊。好像也不是内存对齐的原理。因为每两个变量之间间隔了8个字节,即,用16进制的“cccccccc cccccccc”进行了间隔。不知道这是VC最新的改动么?还是我的程序调试方法不正确。
    请多多指教

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
2
应该是加入的保护措施之类的吧
2012-6-3 15:56
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也觉得应该有可能是保护措施,看书上都是在VC6.0下调试是连续存储的。我一直在用VS2008,所以调试了很久感觉很困惑。不知道楼上的能够指点一下。
2012-6-3 17:38
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
诂计是DEBUG编译,RELEASE编译试试,应该没有。
2012-6-4 07:05
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嗯,我再Release模式下查看了一下内存,的确是连续存储的了。多谢楼上的提醒。
2012-6-4 10:43
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这里发出来跟大家分享一下,共同进步学习。
“Visual Studio2008中的 /GZ 选项:这个选项会做以下这些事:
  初始化内存和变量。包括用 0xCC 初始化所有自动变量,0xCD ( Cleared Data ) 初始化堆中分配的内存(即动态分配的内存,例如 new ),0xDD ( Dead Data ) 填充已被释放的堆内存(例如 delete ),0xFD( deFencde Data ) 初始化受保护的内存(debug 版在动态分配内存的前后加入保护内存以防止越界访问),其中括号中的词是微软建议的助记词。这样做的好处是这些值都很大,作为指针是不可能的(而且 32 位系统中指针很少是奇数值,在有些系统中奇数的指针会产生运行时错误),作为数值也很少遇到,而且这些值也很容易辨认,因此这很有利于在 Debug 版中发现 Release 版才会遇到的错误。要特别注意的是,很多人认为编译器会用 0 来初始化变量,这是错误的(而且这样很不利于查找错误)。”
2012-6-4 11:13
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习了
2012-6-15 17:13
0
游客
登录 | 注册 方可回帖
返回
//