Какой метод развертывания создает программу, которая сложнее
Я написал программу на MATLAB и обдумываю три способа развертывания программы для конечных пользователей. Первый метод включает преобразование файлов.m в p-код, а затем его развертывание для конечных пользователей, которые могут использовать p-код в MATLAB, но сами не видят код. Второй метод включает компиляцию файлов.m в C# с использованием MATLAB Compiler и MATLAB Builder NE, а затем с помощью Visual Studio, чтобы запутать код, а также создать конечный продукт. Третий метод заключается в использовании MATLAB Compiler и MATLAB Builder EX для создания надстройки Excel и развертывания надстройки Excel для конечных пользователей.
Мне интересно, как трудно кому-то перепроектировать или взломать и получить доступ к коду в каждом из этих трех методов развертывания, которые я рассматриваю. Я знаю, что по сути невозможно создать программу, которая не может быть взломана или подвергнута обратной разработке, но труднее ли взломать какой-либо метод развертывания, чем другие методы? Я знаю, что p-код дает конечному пользователю доступ к именам файлов, которые, как я полагаю, могут помочь кому-то реконструировать вашу программу.
Заранее спасибо за вашу помощь!
2 ответа
В итоге я позвонил в MathWorks по этому вопросу. Инженер MathWorks сказал мне, что ему не разрешено указывать тип шифрования, потому что это конфиденциальная информация.
Я также спросил инженера MathWorks, какой тип шифрования используется для Compiler и Builder EX или Builder NE. Он сказал, что для шифрования m-файлов используется 128-битное AES-шифрование, но другие типы файлов, используемые в вашей программе, не шифруются, как.dll или файлы изображений.
Затем я спросил, у кого более надежное шифрование, p-код или развернутая программа, используемая компилятором и компоновщиком. Он сказал, что трудно сказать, потому что это разные виды шифрования, но перед использованием Compiler и Builder вы можете на самом деле превратить ваши файлы.m в p-код, что делает продукт защиты, развернутый с использованием Compiler и Builder, как минимум таким же сильным, как p- код.
С точки зрения возможности обратного инжиниринга вашего кода из развернутой версии, между этими методами практически нет различий.
Builder для.NET не конвертирует MATLAB в C#. Компилятор MATLAB и продукты Builder архивируют и шифруют ваш код, а также создают небольшую оболочку (сборку.NET или надстройку Excel), которая разархивирует ее и выполняет в среде выполнения компилятора MATLAB. Во время выполнения разархивированные файлы, хотя они и остаются зашифрованными, видны во временном каталоге, поэтому имена файлов доступны так же, как и при p-кодировании.
P-кодирование будет самым простым и дешевым для вас, но потребует от ваших конечных пользователей наличия копии MATLAB и любых наборов инструментов, которые вы используете. Продукт, развернутый с продуктами Compiler и / или Builder, не будет требовать от них ничего, но вам нужно будет купить эти продукты, и процесс развертывания будет немного более сложным.