首页
社区
课程
招聘
[求助]怎样禁止编译器对函数时行优化?
2008-9-9 10:29 5030

[求助]怎样禁止编译器对函数时行优化?

2008-9-9 10:29
5030
我用VC2005写的一个函数,用于远程注入的,这个函数里面没有任何调用任何子函数,但是编译后发现它调用了一个子函数(运行出错后用OD载入分析发现的).  我猜可能是调试信息,或是被编译器优化的原因.  现在我想问一下,怎么样让这个函数编译时不会被加入其它信息.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (11)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
Isaiah 10 2008-9-9 10:41
2
0
security_cookie
不是优化。是堆栈检查
雪    币: 4111
活跃值: (3102)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
scz 5 2008-9-9 11:32
3
0
cl什么版本?

给cl指定/Gs65536这个,一般没问题。你是在用C写整体可移动代码吧。
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
祝蜚 2008-9-9 11:33
4
0
原来如此.
能不能详细说一下, 怎么设置或声明让函数不用堆栈检查? 我在网上没找到.
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
祝蜚 2008-9-9 11:41
5
0
如你所说,我是用C写整体可移动代码. 不过你说的cl是什么我不懂是什么.
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
祝蜚 2008-9-9 13:00
6
0
cl原来是编译器,现在才知道. 我就是想知道怎么设置编译环境,
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 7 2008-9-9 19:44
7
0
在release模式下你可以尝试一下:"Project settings"->"C/C++"->"Project Options"中的"/02"去掉,就表示不优化
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 7 2008-9-9 19:46
8
0
上面说的方法是在VC6下,不好意思,VC2005不知道怎么办
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
Isaiah 10 2008-9-9 20:32
9
0
应该是在语言或者代码生成里面把堆栈检查去掉。

工程属性-C/C++
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
祝蜚 2008-9-9 21:47
10
0
找到解决方法了,非常感谢几位指点迷津.
堆栈检查开关在  项目 -> XX属性 -> 配置属性 -> c/c++ -> 代码生成 -> 缓冲区安全检查
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 7 2008-9-10 16:05
11
0
原来这样,受教了
雪    币: 3758
活跃值: (3212)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
曾半仙 12 2008-9-11 00:09
12
0
我用过手写的naked函数不会被加入这个, 即使工程有溢出检查.
嫌麻烦可以对单文件设置编译选项.
这个还是开着好, 如果你根本没有用n系列函数和s系列的习惯
游客
登录 | 注册 方可回帖
返回