例如,我有两个 C 二进制可执行文件。如何确定两者是否使用相同的源代码生成?
最佳答案
一般来说,这是完全不可能做到的。
可以通过不同方式添加版本信息。但是,如果您愿意,您可以很容易地欺骗所有这些方法。
这是一个可能对您有所帮助的简短脚本。请注意,它可能有缺陷。这只是为了展示这个想法。不要只是复制它并在生产代码中使用。
#!/bin/bash
STR="asm(\".ascii \\\"$(md5sum $1)\\\"\");"
NEWNAME=$1.aux.c
cp $1 $NEWNAME
echo $STR >> $NEWNAME
gcc $NEWNAME
它所做的基本上是确保源的 md5sum 作为字符串包含在二进制文件中。它是特定于 gcc 的,您可以在此处阅读有关该想法的更多信息:embed string via header that cannot be optimized away
关于c - 如何检查两个可执行二进制文件是否是从相同的源代码生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59818094/