привет!
есть программа на С++, и, к примеру, в программе есть такая строка:
int main() {const char *str = "123456"; }
теперь, если скомпилять такую программу и просмотрет экзешник даже в текстовом редакторе, то мы сможем без труда найти эту строку.
как одно из решений, думаю, поступить так:
1. каждую такую строку оборачиваем, к примеру, в 'const char* protect_string(const char *str) {return str;}', т.е. получится такое: 'const char *str = protect_string("123456");'
2. пишем парсер исходников, который запускается в 'pre-build steps'
3. парсер, находя такую функцию, берет ее аргумент, кодирует каким-то алгоритмом, вырезает 'protect_string()', и вставляет результат, к примеруц получится такое: 'const char *str = "a7d6e844a178c5";'
4. после этого исходники компиляются
5. программа протектится специальным протектором, который не позволяет проводить дизасемблирование, отладку, етц...
6. уже во время работы программы, для использования этих строк, происходит декодирование
вопрос в том, как быть с ключем, которым кодировались строки? ибо если его не закодировать, то возможно кто-то таки раскусит и ключ и алгоритм кодировани.
кто-то задумывался о чем-то подобном?
спасибо.
12.05.14 15:36: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)