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

问题描述 投票:3回答:1

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

c executable binaryfiles
1个回答
8
投票

通常,这完全是不可能做到的。

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

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

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

#!/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

© www.soinside.com 2019 - 2024. All rights reserved.