C语言 如何检查两个可执行二进制文件是否由同一源代码生成?



例如,我有两个C二进制可执行文件。如何确定两者是否使用相同的源代码生成?

一般来说,这是完全不可能做到的。

  • 您可以从同一源生成不同的二进制文件
  • 可以从不同的源生成两个相同的二进制文件

可以通过不同的方式添加版本信息。但是,如果需要,您可以非常轻松地欺骗所有这些方法。

这是一个可能对您有所帮助的简短脚本。请注意,它可能有缺陷。这只是为了展示这个想法。不要只是复制它并在生产代码中使用。

#!/bin/bash 
STR="asm(".ascii \"$(md5sum $1)\"");"
NEWNAME=$1.aux.c
cp $1 $NEWNAME
echo $STR >> $NEWNAME
gcc $NEWNAME

它的作用基本上是确保源的 md5sum 作为字符串包含在二进制文件中。它是 gcc 特定的,你可以在这里阅读更多关于这个想法的信息:通过无法优化的标头嵌入字符串

相关内容

最新更新