繁体   English   中英

拆卸简单的Hello World程序

[英]Disassembling Simple Hello World program

我写了这个小C ++程序并构建了它(发布)

#include<iostream>
int main(){
     std::cout<<"Hello World";
     return 0;
}

当我反汇编它时,它有很多额外的代码(安全cookie等。)。 我相信Visual Studio会添加所有这些内容。 我如何在没有任何额外信息的情况下编译该程序,以使其易于理解其反汇编代码?

我知道汇编相对较难,但是我的意思是从hello world c ++程序中获取hello world asm代码。 这可能吗?

您从<iostream>庞大的代码库入手。 您可能想要做的是完全避免使用运行时库。 尝试这样的事情:

#include <windows.h>

int main() {
    HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteFile(stdout, "Hello world\n", 12, NULL, NULL);
    return 0;
}

在打开程序集清单的情况下进行编译,这应该为您提供一些“原始的” Win32代码。

您可以在项目属性->配置属性->输出文件->汇编器输出中生成汇编输出

这将使您看到编写的代码的程序集。

拆装后,您将获得许多其他相关联的东西。

要控制Visual Studio代码生成功能,请在VS->属性->配置属性-> c / c ++->代码生成中右键单击项目。

不要忘记选择正确的构建配置(调试,发行版等)。

可以通过玩缓冲区安全性检查来删除安全性cookie(默认情况下为/ GS)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM