2008-12-04 4 views
0

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

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

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

EDIT: Уточнение. Охота за ошибками - это один из вариантов, но не окончательный, особенно если проект является библиотекой, а двоичный файл, например, добавил свой собственный графический интерфейс. Меня интересует ситуация, когда неясно видно, что код снят.

+0

Ответ от lindig был выбран потому, что это то, что я был после. Очевидно, что это не готовое решение, но я думаю, что он решает вопрос лучше всего.Большинство других ответов предполагают, что украденный код распространяется почти как есть, будучи идентичной копией. Может быть, я был неясен. Продолжайте размещать больше вариантов! – Tuminoid 2008-12-12 06:42:46

ответ

2

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

+0

lindig отправил мне личное сообщение со ссылкой на их бумагу, я полагаю, что его можно было бы также использовать здесь: http://www.st.cs.uni-sb.de/birthmarking/schulerase -2007.pdf – Tuminoid 2008-12-08 10:14:03

5

Ошибки.

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

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

1

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

Кроме того, на самом деле это нелегкий способ узнать об этом.

3

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

+0

К сожалению, обычный выпуск с двоичным кодом имеет символы и отладки:/ – Tuminoid 2008-12-04 09:06:40

2

Существует большой объем работ по декомпиляции и двоичным кодам с обратным преобразованием. Мировым экспертом, вероятно, является Cristina Cifuentes. Она много сделала с декомпиляцией. Было бы также интересно написать Alex Aiken и спросить, может ли его инструмент для Measure o f Software Similarity быть адаптирован к двоичным кодам.

2

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

+0

Также повод поместить много сообщений об ошибках в код! :) – 2008-12-04 10:52:33

0

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

0

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

$ nm a.out 
... 

 Смежные вопросы

  • Нет связанных вопросов^_^