精确控制GCC的输出

Jav*_*Man 1 c c++ x86 assembly gcc

出于某些原因,我希望能够微调为我的C++程序生成的最终可执行文件 - 直到单个指令.我记得,GCC应该生成一些文本汇编程序文件作为中间输出,然后将其提供给汇编程序以生成最终的二进制目标文件.

我是否有可能提取此汇编源,以编程方式编辑它并将此修改后的版本提供给最终的汇编程序以生成我的自定义目标文件?我的目标是Windows平台.

MSVC++是否支持类似的功能?

如果你想知道为什么,部分原因是通过包含我们的自定义多态代码生成逻辑来防止逆向工程.另一个原因是,在分发给客户的每个副本中创建隐藏的标识,以阻止任何人破解我们的保护并分发他的破解版本.

kar*_*lip 6

看看-S旗帜:

g++ -S file.c -o output.s
Run Code Online (Sandbox Code Playgroud)

然后,让你的微调output.s,并编译最终的可执行文件:

g++ output.s -o application
Run Code Online (Sandbox Code Playgroud)