程序中的编译器信息

Compiler information in Program

本文关键字:信息 编译器 程序      更新时间:2023-10-16

是的,我想知道这个程序包含哪些关于编译它的编译器的信息。编译器名称、版本等信息。这通常在帮助框(像Vlc这样的程序)菜单中提到,但我的问题是编译器会把任何东西写到.exe.中吗

我问这个问题的原因是通过在任何反汇编程序(IDA、OLLY)中反汇编程序来获得有关编译器的信息。

由于您特别提到了VLC,玩家将以以下方式进行操作:在configure脚本的第50935行(至少在我的VLC源包上,它是2.1.4)中,有以下语句:

cat >>confdefs.h <<_ACEOF
#define VLC_COMPILER "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`"
_ACEOF

正如您所看到的,它使用编译器的版本更新confdefs.h文件。事实上,如果您执行以下语句:

$ gcc -v 2>&1 | tail -n 1 | sed -e 's/ *$//'
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

稍后,这个confdefs.h被"注入"到config.h中,这一行将有683(仅对我和我的编译来说,这对您来说可能不同,但您需要照顾VLC_COMPILER

/* compiler */
#define VLC_COMPILER "gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)"

当VLC想要打印出编译器时,它只需打印这个字符串(在version.c中,定义了VLC_Compiler()方法来返回这个。

最后回答你的问题:我记得Borland编译器(Turbo C)的一些(旧)版本注入了版权信息,但我在最近的任何编译器中都没有经历过这种情况,但这并不意味着它们没有。这是编译器特有的,没有任何东西可以让他们或阻止他们这样做。在最坏的情况下,你总是可以通过(十六进制)查看器查看二进制文件,以查看任何有趣的内容。。。