@kaktak255

Как зашифровать алгоритм внутри программы?

Речь не об обфускации.
К примеру маленькая программа там что то считает туда сюда, в общем какой то алгоритм, как можно скрыть этот алгоритм, что бы было не понятно как он работает ?
  • Вопрос задан
  • 306 просмотров
Решения вопроса 3
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Никак.

Вы можете только усложнить реверс инжениринг. Самый эффективный способ, если не очень важна производительность, то можно реализовать собственную виртуальную машину с кучей похожих, но немного разных инструкций, и реализовывать алгоритм на ней. Надо еще впихнуть в алгоритм всяких неважных действий, типа тут прибавить 5 к числу, оно потом в алгоритме умножается на 2, потом вычесть 8 и 2. Можно написать транслятор с простого скриптового языка на ЭТО, иначе вы и сами запутаетесь.

Но это все замедляет программу, сильно усложняет написание и поддержку, и в итоге все-равно ломается. В общем случае, "злоумышленник" может просто скопировать ваш алгоритм вместе с виртуальной машиной. Вы можете лишь сделать ему сложнее найти нужную часть кода.

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

Единственный достаточно надежный способ - это выполнять алгоритм на сервере и выдавать клиенту лишь его результат. Но это совсем не то, что вы имеете ввиду.
Ответ написан
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Вынести программу на смарт-карту или USB-токен. Эти устройства физически защищены, в том числе от послойного травления разного рода кислотами - выудить их прошивку чрезвычайно дорого.
Ответ написан
Комментировать
MvcBox
@MvcBox
Software Developer [C/C++/JS(for Node.js)/etc]
Если ценность Вашего алгоритма превышает 200 евро и существенное замедление работы алгоритма не очень критично, то можете воспользоваться готовым коммерческим продуктом - https://oreans.com/Themida.php
В данный момент у продуктов Oreans самые "сильные" виртуальные машины.
Но стоит помнить, что это не защищает Ваше приложение на 100%, а лишь значительно усложняет его реверс.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AntonSazonov
Есть замечательная библиотека. Называется AsmJit.
С её помощью вы можете написать программу, которая в процессе выполнения создаст заданную вами функцию с нужным алгоритмом. С помощью этой библиотеки можно генерировать код именно под тот набор инструкций, который есть в наличии на запускаемой машине.
Короче можно добиться максимального быстродействия на любой x86 архитектуре, а дизасемблировать и понять ваш алгоритм будет намного сложнее.
Ответ написан
@Lolxdxd
Themida/Vpmrotect code virtualizer, обфускация системных вызовово. Если прям очень важно, то у себя на сервере выполнять алгоритм.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы