Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» x32dbg, ключ из txt файла.

Автор: digital422
Дата сообщения: 27.07.2016 15:38
Есть программа, купленная за деньги. В ней стоит защита на основе текстового файла, при установке генерируется код машины, отсылается разработчику и он присылает специальный файл с опциями и ключем. При замене мат. платы, HDD и т.д. код машины меняется и приходится отсылать заново, а это время, т.к. не всегда быстро разработчик реагирует на создание файла. Хочу сделать временную "заглушку", т.е. самому генерировать такие файлы на время пока разработчик не отвечает.

Пробовал x32dbg, Ollydbg, но там не могу понять, как формируется ответный ключ и можно ли вообще его получить? Подскажите, как работает этот механизм защиты?
Автор: RedLord
Дата сообщения: 27.07.2016 17:33
http://forum.ru-board.com/topic.cgi?forum=55&bm=1&topic=11721&start=800#lt
Автор: digital422
Дата сообщения: 27.07.2016 17:59
За деньги не надо, хочу сам понять. Насколько я понимаю идет процесс сравнивания 2-х значений, то, которое было загружено из файла и значение, сформированное самой программой. Тут без знания Ассемблера не обойтись.
Автор: ne_viens
Дата сообщения: 27.07.2016 21:30
Обычно разработчик формирует структуру данных лицензии из ему присланного мак адреса, серийного номера BIOS'а итд; а также из разрешённых опций, имени, названия фирмы, итд; шифрует RSA приватным шифром и высылает файл клиенту. Прога расшифровывает файл RSA публичным шифром, читает структуру данных лицензии, проверяет мак адрес, серийный номер BIOS'а, разрешает разрешённое, вешает имя, название фирмы в About'е. Как-то так, если коротко.
Автор: digital422
Дата сообщения: 28.07.2016 07:26
Тут все гораздо проще. Программа генерирует код: например EGDHSN, этот код посылается разработчику, он в своем генераторе прописывает имя клиента, кол-во подключений и т.д. и присылает файл с уже сформированными полями и ключем WBSM-JRFNF-EDSM. Если в файле изменить хоть одну букву, программа не принимает файл регистрации.
Автор: KDPoid
Дата сообщения: 28.07.2016 07:48
digital422
Если действительно происходит симметричное кодирование, ваша программулька генерирует код из параметров железа, разработчик у себя и них создаёт ключ.
Программулька на вашей стороне по тому же алгоритму из кода генерирует ключ и сравнивает с ключом в файле.
Вы правы, чтобы узнать алгоритм на вашей стороне
Цитата:
Тут без знания Ассемблера не обойтись.


Вы какого результата ожидаете?
Чтобы кто-то вдруг угадал способ перевести EGDHSN в WBSM-JRFNF-EDSM?

Моя попытка:
Берём маску WBSM-JRFNF-___M
на пустые позиции подставляем 1-й, 3-й и 5-й символ исходного кода.
На имеющемся наборе примеров мой способ даёт 100%-е совпадение
Автор: ne_viens
Дата сообщения: 28.07.2016 09:05

Цитата:
...присылает файл с уже сформированными полями и ключем WBSM-JRFNF-EDSM. Если в файле изменить хоть одну букву, программа не принимает файл регистрации.


Это вариант электронной подписи. В классическом случае все данные лицфайла кроме ключа хешируются MD5 или SHA или другим алгоритмом, хеш шифруется приватным RSA ключём, приводится в читаемый вид, добавляется в лицфайл и высылается клиенту.
Прога читает лицфайл, хеширует все данные кроме ключа, переводит подпись (ключ) из ASCII в бинарный вид, расшифровывает его публичным RSA шифром, сравнивает расшифрованный хеш с подсчитанным на первом этапе.
В данном случае или всё сильно упрощено или в качестве алгоритма подписи использован HFE, у которого подпись очень короткая по сравнению с RSA, DSA, ECC алгоритмами. Если там всё просто, анализируем код и пишем генератор лицензии, если там HFE, тоже анализируем код и патчим прогу.
Автор: digital422
Дата сообщения: 28.07.2016 18:59
KDPoid - пример я просто набил от руки . С маской подставления не проходят, в имеющемся ключе даже нет тех символов, что генерируется у клиента. Пока мои исследования заканчиваются на том что я вижу как происходит импорт из файла и превращается это все в 16-ричный код. Дальше не хватает знаний и опыта.
ne_viens - в ASCII выводится подозрительный набор случайных символов (31 шт.), расположены они возле того места, где происходит принятие решение о принятии и непринятии ключа.

Каким кодом в OllyDBG можно посмотреть результат расшифровки после этих случайный символов? Пробовал pop, но он выводит тоже самое, что в окне регистров.
Автор: ne_viens
Дата сообщения: 28.07.2016 23:40
Результат расшифровки можно посмотреть в левом нижнем окне данных. Ctrl-g и ввести адрес массива.
Автор: NeoAnomaly
Дата сообщения: 29.07.2016 11:17
digital422 опыт приходит с практикой, теорию чтения асма можно подчерпнуть здесь: http://beginners.re/

Страницы: 1

Предыдущая тема: Помогите написать программу в matlab


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.