Как проверить, генерируются ли два исполняемых двоичных файла из одного и того же исходного кода? - PullRequest
3 голосов
/ 20 января 2020

Например, у меня есть два C двоичных исполняемых файла. Как я могу определить, были ли эти два сгенерированы, используя тот же исходный код или нет?

1 Ответ

8 голосов
/ 20 января 2020

В общем, это абсолютно невозможно сделать.

  • Вы можете создавать разные двоичные файлы из одного источника
  • Два разных двоичных файла могут быть созданы из разных источников

Можно добавить информацию о версии в различные пути. Однако вы можете легко обмануть все эти методы, если хотите.

Вот краткий скрипт, который может вам помочь. Обратите внимание, что он может иметь fl aws. Это просто чтобы показать идею. Не просто скопируйте это и используйте в производственном коде.

#!/bin/bash 

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

В основном это делается для того, чтобы убедиться, что сумма md5 источника включена в двоичную строку как строку. Это g cc speci c, и вы можете прочитать больше об этой идее здесь: вставлять строку через заголовок, который не может быть оптимизирован

...