Возможный дубликат:
Можно ли декомпилировать C ++ Builder exe? C ++ Builder exe безопасен?
Я использую Microsoft Visual C ++ 2010 Express для написания своих программ. Когда я хочу распространить свою программу, я компилирую ее с конфигурацией «Release», а также устанавливаю компоновщик, чтобы он не добавлял отладочную информацию. Итак, мой вопрос: мой исполняемый файл безопасен или кто-нибудь может декомпилировать его и посмотреть исходный код? Если это небезопасно, как я могу предотвратить его декомпиляцию?
Все программы могут быть декомпилированы до определенной степени. Однако большая часть полезной информации в вашем исходном коде удаляется во время компиляции. Исходный код, который создает декомпилятор, является бледной имитацией оригинала.
Имена переменных, имена функций, имена классов и т. Д. Не будут доступны после декомпиляции. Поэтому лучшее, что может сделать декомпилятор, — это включить ваши функции так:
double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);
в довольно бессмысленный код, подобный этому:
double Function85(int p1, int p2);
И даже преуспеть в этом очень точно может быть очень сложно для декомпилятора.
Может ли кто-нибудь декомпилировать его, чтобы увидеть исходный код? Маловероятно, но исходный код не так важен. Например:
int x = 1 - 1;
а также
int x = 0;
будет эквивалентен в двоичных файлах, но это не имеет значения, не так ли?
Для достаточно большого проекта декомпиляция не является проблемой, потому что вы не можете использовать сгенерированный код. Требуются годы, чтобы узнать даже небольшую часть крупномасштабного проекта, учитывая, что вы получаете выгоду от передачи знаний, документирования и правильного наименования. Я думаю, что это невозможно просто с помощью декомпилятора.
Для определенных функций, да, я думаю, что есть риск, но тот, который не может быть полностью, на 100% устранен.
Единственный способ сохранить «безопасность» в том виде, в каком вы подразумеваете, — это не развертывать его, то есть вы делаете веб-сервис или что-то подобное.
Вы не можете сделать это безопасным от людей, выполняющих это, не делая невозможным для них выполнить это.
Учитывая, что то, что вы уже сделали, декомпиляция потребует значительных усилий, мой вопрос будет таким. Зачем кому-то мешать, потому что, скорее всего, это потребует больше усилий, чем просто «сворачивание своего»
Вы не можете полностью защитить код.
ИМХО время, которое вы тратите на защиту своего кода, лучше потратить на то, чтобы сделать ваш продукт функциональным и безошибочным, чем делать частые выпуски. Создание запутанного кода тем или иным способом может привести к появлению труднодоступных ошибок, которые очень трудно исправить.