Шифрование скриптов для встраивания в текстовые файлы - PullRequest
3 голосов
/ 30 января 2010

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

Я хочу зашифровать скомпилированные сценарии, чтобы защитить исходный код во время распространения, но поскольку язык, формат байт-кода и схема кодирования двоичного текста являются частными, нужно ли мне вообще беспокоиться о шифровании? Если это так, я должен просто возмущать некоторые байты и называть это днем, или я должен использовать полнофункциональное решение для шифрования? Шифрование не должно чрезмерно увеличивать размер исполняемого файла, поскольку скрипты могут быть большими и время загрузки важно.

Ответы [ 4 ]

1 голос
/ 31 января 2010

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

Таким образом, если сценарии не нужно менять отдельно от вашего .exe, вы можете вставить их в .exe, что затруднит их изменение пользователями, даже если они смогут их найти. Однажды я написал небольшую утилиту, которая превратила файлы данных в файлы .obj, которые действительно очень легко вставляли данные в мой exe-файл - оказалось довольно легко написать объектный файл, содержащий только данные.

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

1 голос
/ 31 января 2010

То, о чем вы говорите, не будет шифрованием, потому что вам нужно будет доставить ключ дешифрования вместе с ним. Это просто запутывание. Независимо от того, сколько вы пытаетесь скрыть ключ дешифрования, если ваша программа может найти его, то может пользователь.

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

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

1 голос
/ 30 января 2010

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

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

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

0 голосов
/ 01 февраля 2010

Шифрование не принесло бы вам большой пользы.

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

Что делает шифрование, так это то, что оно несколько повышает планку доступа к данным. Это требует некоторых навыков разборки. Простое встраивание файлов в исполняемый файл уже отфильтровывает случайного не очень хорошего хакера. Те, кого не пугает такое встраивание, также могут следовать пути обработки данных, находить логику дешифрования и выкачивать дешифрованный код по желанию. Уровень шифрования может также повысить чувство важности: то, что было зашифровано, безусловно, стоит. Следовательно, слишком забавные вещи могут только усугубить вашу ситуацию, а не улучшить ее.

С другой стороны, встраивание файлов в исполняемый двоичный файл, вероятно, является хорошей идеей. Это избавило бы от необходимости находить их во время выполнения в файловой системе (известно, что во время выполнения поиск вещей в системах Unix несколько сложнее, чем в Windows из-за жестких ссылок: в Windows исполняемый файл может легко получить свой собственный путь, но в Unix наличие жестких ссылок означает, что путь к исполняемому файлу не определен).

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