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

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

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

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
security_cookie
不是优化。是堆栈检查
2008-9-9 10:41
0
雪    币: 4822
活跃值: (3822)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
3
cl什么版本?

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

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