Поиск моего исходного кода в продукте только для двоичных файлов [закрыт]

StackOverflow https://stackoverflow.com/questions/339833

  •  19-08-2019
  •  | 
  •  

Вопрос

Допустим, у меня есть проект, который я выпустил под лицензией GPL, с исходными текстами, доступными любому.Позже я нахожу очень похожий продукт, но с закрытым исходным кодом, распространяемый в двоичном формате - только кем-то другим.

Есть ли хороший способ узнать, что они используют мой исходный код в своем продукте?

Если решение состоит в том, чтобы каким-то образом перепроектировать двоичный файл, возможно ли каким-то образом его автоматизировать?

Редактировать:Разъяснение.Поиск ошибок - это один из вариантов, но не окончательный, особенно если проект представляет собой библиотеку, а двоичный файл добавил свой собственный графический интерфейс, например.Ситуация, которая меня интересует, - это когда не очевидно, что код отменен.

Это было полезно?

Решение

Ищите программные родимые пятна. Этот метод пытается установить связь между программным обеспечением на основе двоичного кода или динамического поведения. Кристиан Коллберг (Christian Collberg) - эксперт по программным водяным знакам, из которого были получены родимые пятна. Это все еще на исследовательской земле.

Другие советы

Жуки.

Если релиз с закрытым исходным кодом разделяет большинство своих ошибок с вашим проектом, он, вероятно, "исправлен".

Вы также можете попробовать декомпилировать свой собственный двоичный файл с помощью декомпилированной версии двоичного файла с закрытым исходным кодом...хотя это, вероятно, было бы ненадежно.

Очевидно, что если предполагаемый двоичный файл не является stripped, вы можете просто найти любые символы, которые имеют то же имя, что и ваш код.

Существует большой объем работ по декомпиляции и обратному проектированию двоичных кодов. Мировым экспертом, вероятно, является Кристина Сифуэнтес . Она много сделала с декомпиляцией. Также было бы интересно написать Алексу Айкену и спросить, есть ли у него инструмент для Мера сходства программного обеспечения может быть адаптирована для двоичных кодов.

Очевидный метод - поиск строк. запустите инструмент unix strings и посмотрите, содержит ли двоичный файл какие-либо буквенные строки из вашего кода. в основном такие вещи, как сообщения об ошибках и текст в ящиках сообщений.

Вы можете попытаться разобрать обе программы и сравнить сборку, но если они используют другой компилятор, у их программы могут быть незначительные различия. Есть несколько бесплатных дизассемблеров или отладчик, который может пройти через сборку.

Кроме этого, на самом деле нет простого способа выяснить подобные вещи.

Самый верный способ, которым я могу придумать, похож на слово «Esquivalience» в Оксфордский словарь.
Просто добавьте некоторый двоичный массив с уникальным содержимым где-то в коде и не забудьте использовать его просто, чтобы компоновщик не оптимизировал его. Вам, вероятно, следует несколько запутать это, чтобы обычному читателю не было очевидно, что это избыточно.
Затем откройте скомпилированный двоичный файл с шестнадцатеричным редактором и найдите его.

Почему бы вам не посмотреть на таблицу символов, используя nm?

$ nm a.out
...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top