Как экспортировать имена функций и имена переменных, используя GCC или Clang? - PullRequest
0 голосов
/ 11 декабря 2018

Я делаю коммерческое программное обеспечение, и я не хочу, чтобы оно было легко взломать.Он предназначен для Linux, и я компилирую его с помощью GCC (8.2.1).Проблема в том, что когда я его компилирую, технически любой может использовать дизассемблер, такой как IDA или Binary Ninja, чтобы увидеть все имена функций.Вот пример (вы можете увидеть названия функций на левой панели):

screenshot

Есть ли какой-нибудь способ защитить мою программу от такого рода в случае реверс-инжиниринга?Есть ли способ экспортировать все, если эти имена функций и переменные из кода автоматически (с GCC или clang?), Так что я могу сделать простой сценарий, чтобы перед компиляцией они были полностью случайными.

1 Ответ

0 голосов
/ 11 декабря 2018

Итак, вы хотите скрыть / замаскировать имена символов в вашем бинарном файле.Вы решили, что для этого вам нужно получить их список, чтобы вы могли создать скрипт для их изменения.Ну, вы могли бы получить этот список с помощью nm, но вам ничего не нужно (перезаписывать имена в скомпилированном двоичном файле? Oof… recipe for катастрофа).

Вместо этого просто делайте то, что все делают ввыпустить сборку и strip символы!Вы также увидите намного меньший двоичный файл.Конечно, это не мешает реверс-инжинирингу (ничего не делает), хотя, возможно, делает эту задачу более трудной.

Честно говоря, вы все равно должны удалять свои релизные файлы, а не предотвращать взлом.Общая мудрость заключается не в том, чтобы слишком стараться предотвратить взлом, потому что вы неизбежно потерпите неудачу и за счет потерянного времени на разработку (и, возможно, более сложной кодовой базы, которую труднее поддерживать / более сложного исполняемого файла, который менее быстр)и / или полезно для честного клиента).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...