读书人

为什么VS2010创建的C++应用程序dumpbi

发布时间: 2012-02-03 22:02:47 作者: rapoo

为什么VS2010创建的C++应用程序dumpbin数据段后看不到数据?
最近在学习反汇编,用了一个很小的例子:

C/C++ code
#include <iostream>using namespace std;#define pwd "mypassword"void main(){    char userPwd[100];    cout<<"crackme1"<<endl<<"enter password:";    cin>>userPwd;    if(strcmp(pwd,userPwd))        cout<<"wrong password\n";    else        cout<<"password OK!\n";}

用VS2010命令行工具输入:dumpbin /SECTION:.data /RAWDATA test.exe >.data
生成的.data文件中没有代码里写的数据,用VC++6.0生成的程序却可以看到!
而且用VS2010生成的程序.data文件是4KB,而VC6的有80KB!
请高手解惑!

[解决办法]
和编译设置有关,你在VC6里和VC10一样动态链接多线程版的CRT的话,这些字符串也在rdata里面。
VC6默认连的是单线程版的CRT,这个在VC2005里面去掉了。

读书人网 >汇编语言

热点推荐