На чем писать сервер чтобы усложнить декомпиляцию?

Есть сервер, реализован на Node.js к которому обращается приложения для проверки лицензии и привязки к железу, а также получения и сохранения некого списка. К этому серверу мы не предоставляем доступ заказчику. Но заказчик хочет чтобы сервер-приложения было на его хостинге и он имел к нему доступ, поэтому единственный выход, который я вижу - это переписать часть приложения-сервера, которое обслуживает приложения-клиент на Go. На Go я не писал, но это не проблема. Впорос только насколько подлежит скомпилированый код на Go реверсной инженерии или можно ли для этого использовать другое например Cython (а вот Python я неплохо знаю)?
Закажчик не должен снять ограничения на количество лицензий, а также сервер закажчика обязательно должен передавать на наш сервер данные о зарегистрированом пользователе. И это, возможно, не все, что закажчик изменить не должен. В любом случае надо, чтобы найти специалиста, который взломает сервер, было дорого, долго/сложно
  • Вопрос задан
  • 1521 просмотр
Пригласить эксперта
Ответы на вопрос 5
@dinegnet
Переписывать все - не круто.
Достаточно небольшой кусок с ключевыми алгоритмами.
Не обязательно весь сервер целиком.

Декомпиляция возможна всегда, но вопрос - на каком уровне будет декомпилированный код. Если ты получишь почти что ассемблер - смысла в декомпиляции мало.
Любой компилируемый в native подходит - Go, C/C++, Pascal, Haskell на порядки лучше, чем Python, Java, NodeJS.

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

Но в конечном итоге все упирается насколько занитересован человек.
Если продукт очень массовый или очень дорогой - больше интереса взламывать.

А что, заказчик идиот?
Если он хочет заполучить сервер как некий гарант, то разве он не хочет еще и исходники?

Имхо, поддержка разработчика (устранение багов, которые и год спустя могут быть выявлены) существенный плюс, чтобы оставаться с вами.
Ответ написан
Комментировать
Sly_tom_cat
@Sly_tom_cat
.
Декомпиляция скомпилированного - это всегда вопрос времени/денег.

Я бы подумал над построением проверки с использованием асимметричных схем шифрования. И раз уж у вас на ваш сервер все равно уходит информация - то на нем и давать разрешения/проводить проверку.

Но лучше не загибать ценник - не будут и взламывать.
Ответ написан
lxsmkv
@lxsmkv
Test automation engineer
мне кажется, что нет такого компилята который нельзя было бы расколдовать в исходый вид. можно выдавать лицензию под имя пользователя, на основе имени пользователя генерировать файл-лицензию (простыня шифрованых букв). Клинет сверяет данные на основе файла-лицензии и или запускается либо нет. А иметь пользователей с одинаковым именем в сети по-моему винда не разрешает.
Ответ написан
@rustler2000
погромист сикраш
У coreos rkt наверняка криптованные образы поддерживает. Если железо с TPM и UEFI Secure Boot то все теоретически должно быть хорошо и с нодой
Ответ написан
sim3x
@sim3x
cython vs golang vs js (obfuscated)

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

Заинтересованному лицу, нужно будет только выяснить какой блок кода отвечает за "лицензию" и обрезать его или сделать тоже самое, но после прохождения квеста

Привязка к железу - емулируется

ИМО, 40% за установку норм доля для разработчиков

Лучшим вариантом привязки клиентов к себе - возьмите на себя всю поддержку (или не всю ,а фичи + второй лвл поддержки), кроме финансовой
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
GigAnt Санкт-Петербург
от 80 000 ₽
MediaSoft Санкт-Петербург
от 90 000 до 200 000 ₽
Сбер Москва
от 380 000 до 480 000 ₽