Сейчас на форуме: (+6 невидимых) |
eXeL@B —› Протекторы —› Донглы DеsКеу |
Посл.ответ | Сообщение |
|
Создано: 08 марта 2017 18:09 · Личное сообщение · #1 Исследую программу, защищенную сабжевыми донглами. По началу все просто: Code:
Code:
И вот после вызова последней функции, которая возвращает 1000 псевдослучайных (seedable) значений, я не понимаю что происходит, но каждый раз приходим к окну с секьюрити еррор -3. От модератора: Используй тег ASM |
|
Создано: 08 марта 2017 20:00 · Личное сообщение · #2 |
|
Создано: 08 марта 2017 20:10 · Личное сообщение · #3 Они 100% не рандомные. Они генерятся на базе seed'а, известного донглу, известного программе. У вудмана есть допотопная статья на тему этих донглов, но мне она не помогла. Он там копал старую версию донгла и со стороны дллки. Распутать этот клубок у меня пока не выходит. На пятый день я обратился к комьюнити. |
|
Создано: 08 марта 2017 21:46 · Личное сообщение · #4 |
|
Создано: 08 марта 2017 23:01 · Поправил: BfoX · Личное сообщение · #5 не рандомные это точно. используются для трансформа (ака DK2_RandomNumbers) 2 большие таблицы. они уникальны для каждого производителя. обе высчитываются из данных, полученных от донгла. как-то так зы: давно существует полный эмулятор для данного типа ключей зы2: и еще два типа команд для обмена с донглом используются. ----- ...или ты работаешь хорошо, или ты работаешь много... |
|
Создано: 08 марта 2017 23:23 · Личное сообщение · #6 r_e Был бы у меня донгл, я бы не плодил постов на форумах, а жамкал кнопки в программе. BfoX Да, там еще команды чтения и записи есть. О существовании эмулей всего и вся по килобаксу за штуку, вообще никто не сомневается. Но это, во-первых, килобакс, а во-вторых, свистопляска с неподписанными драйверами. |
|
Создано: 08 марта 2017 23:27 · Поправил: BfoX · Личное сообщение · #7 |
|
Создано: 09 марта 2017 20:19 · Личное сообщение · #8 |
|
Создано: 09 марта 2017 22:17 · Поправил: BfoX · Личное сообщение · #9 ajax не, тут неправда ваша. свои 150 бакинских я прое... потерял - GoDaddy ничего не продали. там в NDA прописано что бабосы не возвращают если проблемы с показом юрика =) а тест моду автоматизировали - никаких бубнов с плясками. для ТС еще напишу пару строк - посмотрел я софт. без ключа анрил, ихмо. через трансформ ключа память прогоняется. можно попробовать только патчить сравнения на выходе, но это как кому по вкусу... все вышесказанное верно для deskey2 usb, хотя Saab и Xor37 разбирали lpt-шную железку и свой ресерч выложили на вудмане. по deskey3 usb не смотрел, но тоже очень похож ----- ...или ты работаешь хорошо, или ты работаешь много... |
|
Создано: 10 марта 2017 13:44 · Личное сообщение · #10 |
|
Создано: 10 марта 2017 16:31 · Поправил: BfoX · Личное сообщение · #11 |
|
Создано: 26 марта 2017 18:22 · Личное сообщение · #12 Потупив еще немного в дебаггере, имею следующие результаты: 1. ReadRandom вызывается один раз. Из нее генерится последовательность по алгоритму и сверяется с зашитой константой. В обратную сторону я восстановил 16 байт для прохождения этой проверки, на случай если когда-нибудь дорасту до написания эмулятора. 2. Шифрование - Программа в 3 этапа разными кусками вычитывает всю память ключа. Этот массив прогоняется через шифратор ключа. Дальше идет работа с полученным массивом. - Перед записью данных в ключ, данные прогоняются через процедуру шифрования. Имею мнение, что данные в памяти ключа находятся в зашифрованном виде, а программа внутри себя оперирует с плейнтекстом. 4. На текущий момент обхожу ошибки с истечением срока действия лицензии и с соответствием версии запускаемой программы к версии в лицензии. В дебаггере программа запускается без ошибок, но одним НО: доступный функционал у нее как у программы без какой либо лицензии вообще. То есть я упускаю момент, где из лицензии берутся доступные фичи и разблокируются. Получается отловить вызов "DeleteMenu" и не дать его выполнить, но это никак не меняет результат. Все еще надеюсь, что в донгле нет жизненноважной информации. |
|
Создано: 06 апреля 2017 13:18 · Личное сообщение · #13 Продолжаем донглострадания... Решил дальше действовать подменой дллки, реализующей API донгла. Споткнулся на реализации функции ReadMemory. Родная длл после вызова функции очищает стек от параметров, передаваемых функции и ESP принимает значение до первого пуша. Программой эта функция вызывается 3 раза. В моей же дллке после возвращения из вызова, стек не очищается. На третьем вызове один из передаваемых параметров передается с помощью Code:
А поскольку значение ESP похерено предыдущими вызовами, передается неверный параметр и ловим сегфолт. Как писать функции в длл, чтобы стек чистился? |
|
Создано: 06 апреля 2017 13:28 · Личное сообщение · #14 Язык-то какой? Менять конвенцию вызова с cdecl на stdcall? втыкать ret 0c вместо ret? | Сообщение посчитали полезным: deff0 |
|
Создано: 06 апреля 2017 14:09 · Личное сообщение · #15 |
|
Создано: 06 апреля 2017 14:38 · Поправил: -=AkaBOSS=- · Личное сообщение · #16 |
|
Создано: 06 апреля 2017 14:53 · Поправил: deff0 · Личное сообщение · #17 |
|
Создано: 06 апреля 2017 18:30 · Личное сообщение · #18 |
|
Создано: 06 апреля 2017 18:35 · Личное сообщение · #19 |
eXeL@B —› Протекторы —› Донглы DеsКеу |