Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140

Защита современный программ

02.04.2012, 00:00. Показов 1520. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.
Сегодня слушал о печальной судьбе PC как игровой платформы из-за разгула пиратства. Самая большая проблема состоит в том, что нет нормального алгоритма защиты от использования пиратской версии.
Проникнувшись этой проблемой, и поразмыслив над ней, я пришел к вроде простому и очевидному алгоритму. Но вот с кем поделиться сей мыслю не знаю, поэтому и решил написать сюда.

Суть алгоритма защиты.
Игра устанавливается без стартового exe-шника игры. Вместо него просто exe-файл который затребует код активации. Далее код активации отправляется на сервер вместе с MAC-адресом компьютера. На сервере происходят две вещи:
1) проверка кода активации
2) компиляция exe-шника.
Если с первым пунктом все понятно, то на втором остановлюсь поподробнее, ибо в этом и суть.
При создании проекта стартового exe-шника изначально закладывается следующий алгоритм динамического подключения библиотек игры:
1) Определяется обычный макрос:
C++
1
#define MACaddress string(<MAC-адрес>)
2)Перед подключением любой библиотеки идет проверка совпадения MACaddress и реальным MAC-адресом компьютера на котором запущена игра.
Так вот вернемся к серверу на который приходит запрос от пользователя. После проверки кода активации происходит замена в файле исходника метки "<MAC-адрес>" на строковый вариант MAC-адреса пришедшего от пользователя и компилируется стартовый exe-шник который отправляется игроку.
Вот, собственно, и всё.
Вроде всё просто и эффективно ибо смена MAC-адреса - отнюдь не тривиальная задача, в отличии от его проверки.

Критика приветствуется, а также приветствуются идеи куда можно отправить подобный алгоритм чтобы даром не пропал если, конечно, это не бред
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2012, 00:00
Ответы с готовыми решениями:

Защита программ
Изменилось ли сейчас что-нибудь в этом направлении? Можно ли защитить свою программу и скрыть исходный код, чтобы в нем не копались?...

Защита программ
Заинтересовался защитой программ сделанных на делфи. Видел, что многие программы так и делают. Например при включении программы Cheat...

Защита shareware-программ.
У вас на форуме уже как-то поднимался этот вопрос, но все-равно привязка к номеру жесткого - не самый лучший выход. Другое дело - номер...

14
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
02.04.2012, 00:15
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
Вроде всё просто и эффективно ибо смена MAC-адреса - отнюдь не тривиальная задача, в отличии от его проверки.
обычно используют mac-адрес сетевой карты, а он меняется из гуишечки

я так и не понял, что мешает крякнуть игру?
0
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
02.04.2012, 00:32  [ТС]
Цитата Сообщение от alex_x_x Посмотреть сообщение
смена mac-адреса
Смена mac-адреса теоретически порождает кучу проблем. И менять её для каждой отдельной игры - это безумство.

Цитата Сообщение от alex_x_x Посмотреть сообщение
я так и не понял, что мешает крякнуть игру?
Мешает сложность этого процесса. Т.к. принцип работы макроса #define заставит расскопировать код string("XX:XX:XX:XX") по всему проекту стартового exe-ника, что породит весьма большие проблемы по поиску и выявлению таких мест проверки для взломщика. Тем более подобную проверку можно осуществлять не только при подключении библиотек, а где-то еще и завершать выполнение программы.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
02.04.2012, 00:42
Russian_Dragon, боюсь все решится просто - код игры, который будет запрашивать мак-адрес будет успешно поправлен и после этого будет возвращать то что нужно
в конце концов на какие только ухищрения не идут
0
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
02.04.2012, 00:53  [ТС]
Цитата Сообщение от alex_x_x Посмотреть сообщение
Russian_Dragon, боюсь все решится просто - код игры, который будет запрашивать мак-адрес будет успешно поправлен и после этого будет возвращать то что нужно
По идее MAC-адрес должны возражать системные функции, а их исправление решение совсем уж из ряда вон...

Цитата Сообщение от alex_x_x Посмотреть сообщение
в конце концов на какие только ухищрения не идут
Взломать можно всё, но вроде такой вариант создаст кучу проблем, что в итоге, даже если и получиться взломать, приведет к тому, что овчинка выделки стоит не будет.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
02.04.2012, 01:15
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
По идее MAC-адрес должны возражать системные функции, а их исправление решение совсем уж из ряда вон...
1) это функция где-то вызывается в самой программе - можно подправить либо сам вызов, либо его результат
2) можно подсунуть подправленную системную dll (dll инъекция) которая вернет то что крэкеру нужно
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
04.04.2012, 14:52
такой алгоритм добавит только проблем пользователю,
1 нужно обязательно подключение к интернету
2 полетит у пользователя сетевуха, купит другую, и что тогда, или просто комп поменяет, что игру на выброс? или весь процесс будет повторяться с отсылкой серийника на сервер? Если так то что мешает человеку кто купит игру выложить серийник в интернет что бы другие юзали его.
3 когда уже придет в ответ скомпилированный exe, что мешает "пиратам" крякнуть его?
как было уже сказано alex_x_x просто в месте вызова ф-ции проверки на подлинность мак адреса ставят верное значение и все, exe будет работать везде.
0
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 15:24  [ТС]
Цитата Сообщение от anonimus Посмотреть сообщение
такой алгоритм добавит только проблем пользователю,
1 нужно обязательно подключение к интернету
По секрету скажу, что любая современная игра требует обязательно подключения при активации.

Цитата Сообщение от anonimus Посмотреть сообщение
2 полетит у пользователя сетевуха, купит другую, и что тогда, или просто комп поменяет, что игру на выброс? или весь процесс будет повторяться с отсылкой серийника на сервер? Если так то что мешает человеку кто купит игру выложить серийник в интернет что бы другие юзали его.
В данный момента так, и есть, даже еще "веселее" после переустановки windows требуется повторная активация с уменьшением счетчика.
Вообще лучше всего тебе купить новую лицензионную игру, например со старфорсем, и посмотреть, что происходит при её активации и какие ограничения накладываются при удалении игры и при повторной активации. Правил не так много но они есть. И я не добавил ни одной новой проблемы пользователю... только пиратам

Цитата Сообщение от anonimus Посмотреть сообщение
3 когда уже придет в ответ скомпилированный exe, что мешает "пиратам" крякнуть его?
Сложность данного процесса.

Цитата Сообщение от anonimus Посмотреть сообщение
как было уже сказано alex_x_x просто в месте вызова ф-ции проверки на подлинность мак адреса ставят верное значение и все, exe будет работать везде.
Отдельной функции проверки мак-адреса нет либо она inline. Проверка происходить путем сравнения строк, что само по себе отследить нереально.
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
04.04.2012, 15:40
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
Проверка происходить путем сравнения строк
она же происходит в exe? значит либо функция ее осуществляет и возвращает true или false или тупо ифом? и в том и в другом случаи ломается путем декомпиляции и внесение соответствующих изменений
0
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 15:54  [ТС]
Цитата Сообщение от anonimus Посмотреть сообщение
она же происходит в exe? значит либо функция ее осуществляет и возвращает true или false или тупо ифом? и в том и в другом случаи ломается путем декомпиляции и внесение соответствующих изменений
Если функция установлена как inline, то она встраивается в код не как ссылка на адрес памяти, а целиком.
Вот и получается, что, если даже, в одном месте удастся обойти проверку, то не факт, что найдут везде.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.04.2012, 16:02
Russian_Dragon, 100 раз пройдено
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
и компилируется стартовый exe-шник который отправляется игроку
Потом экзешник тупо патчится, из него убирается проверка по мак-адресу. И патченый экзешник распространяется вместе с игрой. Вот, собственно, и все, никаких адресов менять не надо...
0
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 16:21  [ТС]
Цитата Сообщение от Vourhey Посмотреть сообщение
Russian_Dragon, 100 раз пройдено

Потом экзешник тупо патчится, из него убирается проверка по мак-адресу. И патченый экзешник распространяется вместе с игрой. Вот, собственно, и все, никаких адресов менять не надо...
А как его "пропачить", т.е. как удалить места проверок? Ведь для этого их нужно сначала найти, а вот в этом и сложность.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.04.2012, 16:27
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
Сложность данного процесса.
Ты че, издеваешься? Твой экзешник, при желании, целиком можно переписать без исходного кода. И большой сложности это представлять не будет.
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
Проверка происходить путем сравнения строк, что само по себе отследить нереально
Гы-гы. Подмена возвращаемого значения. Ах, да, она же будет инлайн, ай-ай-ай. Это ведь так сложно поставить бряку на обращение к области памяти, где располагается наш мак-адрес и отследить все к нему обращение. И ужасно трудно найти дублирующиеся байты кода проверки мака в виртуальной памяти программы. Еще уверен, с таким рвением, у тебя и точка выхода будет одна и та же, и пути к ней ведущие слоооооожно отследить.
Не обманывай себя. Это даже не новый метод. Это ничем не отличается от проверки самого обычного ключа. А это крякается все достаточно просто, и максимум усложенения - это обфускация и криптование, но никак, блин, не анальные игры с маками и компиляцией всякой фигни на сервере. Ну вот, плять, никакой роли вообще не играет.

Добавлено через 3 минуты
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
А как его "пропачить", т.е. как удалить места проверок? Ведь для этого их нужно сначала найти, а вот в этом и сложность.
Очень просто в дебаггере. Ты объективно скажи, в чем там сложность будет? Хватит тут писать аморфные "сложность".
Даже если я тупой индюк и не знаком с винапи, и как узнать мак-адрес, то во время работы программы я в дампе найду свой же мак-адрес и поставлю бряку на обращение к этой области памяти. Все, твой код попался.
1
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
04.04.2012, 16:30
Цитата Сообщение от Vourhey Посмотреть сообщение
не анальные игры с маками
+5
0
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 16:31  [ТС]
Цитата Сообщение от Vourhey Посмотреть сообщение
Это ведь так сложно поставить бряку на обращение к области памяти, где располагается наш мак-адрес и отследить все к нему обращение. И ужасно трудно найти дублирующиеся байты кода проверки мака в виртуальной памяти программы. Еще уверен, с таким рвением, у тебя и точка выхода будет одна и та же, и пути к ней ведущие слоооооожно отследить.
Ладно, согласен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2012, 16:31
Помогаю со студенческими работами здесь

Защита от вредоносных программ
Всем здравствуйте! Помоги пожалуйста по информации на это тему &quot;Защита от вредоносных программ&quot; , так как тут люди опытные и...

Гугловская защита программ от кражи
Кто знаком, КАК они защищают свои программы? Я еще ничего не покупал у них и не продавал. Но хочу защитить свои программы хоть...

Защита программ от несанкционированного запуска
День добрый, нужна помощь материалом в написании курсовой работы. Материал требуется по двум тема: 1) Защита программ от...

Защита программ от свободного копирования
Народ, привет. Кто в курсе насчет того, как делается защита программ от копирования? Допустим, я написал программу, как сделать так,...

Защита программ от свободного копирования
Народ, привет. Кто в курсе насчет того, как делается защита программ от копирования? Допустим, я написал программу, как сделать так,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru