eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Sn00pY (+5 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Протекторы —› Донглы DеsКеу
Посл.ответ Сообщение

Ранг: 5.5 (гость)
Статус: Участник

Создано: 8 марта 2017 18:09 New!
Цитата · Личное сообщение · #1

Исследую программу, защищенную сабжевыми донглами.--> Link <--
По началу все просто:

Code:
  1. 001E179D call    FindDESkey
  2. 001E17A2 test    eax, eax

Code:
  1. 002DC4A8 call    DESkeyGetAPIVersion
  2. 002DC4AD push    offset unk_40786C
  3. 002DC4B2 push    dword_457588
  4. 002DC4B8 call    FindDESkey
  5. 002DC4BD test    eax, eax
  6. 002DC4BF jz      short loc_2DC469
  7. 002DC4C1 push    3E8h
  8. 002DC4C6 push    offset byte_5DBB20
  9. 002DC4CB push    0
  10. 002DC4CD push    dword_457588
  11. 002DC4D3 push    eax
  12. 002DC4D4 call    DESkeyReadRandomNumbers


И вот после вызова последней функции, которая возвращает 1000 псевдослучайных (seedable) значений, я не понимаю что происходит, но каждый раз приходим к окну с секьюрити еррор -3.

От модератора: Используй тег ASM

Ранг: 573.6 (!)
Статус: Модератор

Создано: 8 марта 2017 20:00 New!
Цитата · Личное сообщение · #2

deff0
Ну дык чего ж ты самую смакоту упустил. Может эти RandomNumbers не рандом совсем и как раз и проверяется предопределенные значения либо используются в расчете чего-то?

Ранг: 5.5 (гость)
Статус: Участник

Создано: 8 марта 2017 20:10 New!
Цитата · Личное сообщение · #3

Они 100% не рандомные. Они генерятся на базе seed'а, известного донглу, известного программе. У вудмана есть допотопная статья на тему этих донглов, но мне она не помогла. Он там копал старую версию донгла и со стороны дллки. Распутать этот клубок у меня пока не выходит. На пятый день я обратился к комьюнити.

Ранг: 573.6 (!)
Статус: Модератор

Создано: 8 марта 2017 21:46 New!
Цитата · Личное сообщение · #4

deff0
Дык задампь донгл в той же последовательности и потом используй таблицу для возврата рандома.

Ранг: 387.2 (мудрец)
Статус: Участник

Создано: 8 марта 2017 23:01 · Поправил: BfoX New!
Цитата · Личное сообщение · #5

не рандомные это точно.
используются для трансформа (ака DK2_RandomNumbers) 2 большие таблицы. они уникальны для каждого производителя. обе высчитываются из данных, полученных от донгла. как-то так

зы: давно существует полный эмулятор для данного типа ключей
зы2: и еще два типа команд для обмена с донглом используются.

Ранг: 5.5 (гость)
Статус: Участник

Создано: 8 марта 2017 23:23 New!
Цитата · Личное сообщение · #6

r_e
Был бы у меня донгл, я бы не плодил постов на форумах, а жамкал кнопки в программе.
BfoX
Да, там еще команды чтения и записи есть.
О существовании эмулей всего и вся по килобаксу за штуку, вообще никто не сомневается. Но это, во-первых, килобакс, а во-вторых, свистопляска с неподписанными драйверами.

Ранг: 387.2 (мудрец)
Статус: Участник

Создано: 8 марта 2017 23:27 · Поправил: BfoX New!
Цитата · Личное сообщение · #7

deff0 пишет:
Да, там еще команды чтения и записи есть.


я не про это. это связано с шифрованием пакетов через трансформ.


Ранг: 333.9 (мудрец)
Статус: Участник
born to be evil

Создано: 9 марта 2017 20:19 New!
Цитата · Личное сообщение · #8

deff0 пишет:
а во-вторых, свистопляска с неподписанными драйверами

многие купили серты в этом году. пару раз уже видел от разных типов. тот же bfox не зря пиарится

Ранг: 387.2 (мудрец)
Статус: Участник

Создано: 9 марта 2017 22:17 · Поправил: BfoX New!
Цитата · Личное сообщение · #9

ajax
не, тут неправда ваша. свои 150 бакинских я прое... потерял - GoDaddy ничего не продали. там в NDA прописано что бабосы не возвращают если проблемы с показом юрика =)
а тест моду автоматизировали - никаких бубнов с плясками.

для ТС еще напишу пару строк - посмотрел я софт. без ключа анрил, ихмо. через трансформ ключа память прогоняется. можно попробовать только патчить сравнения на выходе, но это как кому по вкусу...

все вышесказанное верно для deskey2 usb, хотя Saab и Xor37 разбирали lpt-шную железку и свой ресерч выложили на вудмане. по deskey3 usb не смотрел, но тоже очень похож


Ранг: 333.9 (мудрец)
Статус: Участник
born to be evil

Создано: 10 марта 2017 13:44 New!
Цитата · Личное сообщение · #10

BfoX
за 150 серт без юр лица... открыть чтоль конторку по разводу Sab, без а

Ранг: 387.2 (мудрец)
Статус: Участник

Создано: 10 марта 2017 16:31 · Поправил: BfoX New!
Цитата · Личное сообщение · #11

ajax
Sab, без а

c одним 'a'

Ранг: 5.5 (гость)
Статус: Участник

Создано: 26 марта 2017 18:22 New!
Цитата · Личное сообщение · #12

Потупив еще немного в дебаггере, имею следующие результаты:
1. ReadRandom вызывается один раз. Из нее генерится последовательность по алгоритму и сверяется с зашитой константой. В обратную сторону я восстановил 16 байт для прохождения этой проверки, на случай если когда-нибудь дорасту до написания эмулятора.

2. Шифрование
- Программа в 3 этапа разными кусками вычитывает всю память ключа. Этот массив прогоняется через шифратор ключа. Дальше идет работа с полученным массивом.
- Перед записью данных в ключ, данные прогоняются через процедуру шифрования.

Имею мнение, что данные в памяти ключа находятся в зашифрованном виде, а программа внутри себя оперирует с плейнтекстом.

4. На текущий момент обхожу ошибки с истечением срока действия лицензии и с соответствием версии запускаемой программы к версии в лицензии. В дебаггере программа запускается без ошибок, но одним НО: доступный функционал у нее как у программы без какой либо лицензии вообще. То есть я упускаю момент, где из лицензии берутся доступные фичи и разблокируются. Получается отловить вызов "DeleteMenu" и не дать его выполнить, но это никак не меняет результат.

Все еще надеюсь, что в донгле нет жизненноважной информации.

Ранг: 5.5 (гость)
Статус: Участник

Создано: 6 апреля 2017 13:18 New!
Цитата · Личное сообщение · #13

Продолжаем донглострадания...

Решил дальше действовать подменой дллки, реализующей API донгла. Споткнулся на реализации функции ReadMemory. Родная длл после вызова функции очищает стек от параметров, передаваемых функции и ESP принимает значение до первого пуша. Программой эта функция вызывается 3 раза.

В моей же дллке после возвращения из вызова, стек не очищается. На третьем вызове один из передаваемых параметров передается с помощью
Code:
  1. push    [esp+20h+arg_C]

А поскольку значение ESP похерено предыдущими вызовами, передается неверный параметр и ловим сегфолт.

Как писать функции в длл, чтобы стек чистился?


Ранг: 1989.1 (!!!!)
Статус: Модератор
retired

Создано: 6 апреля 2017 13:28 New!
Цитата · Личное сообщение · #14

Язык-то какой? Менять конвенцию вызова с cdecl на stdcall? втыкать ret 0c вместо ret?

| Сообщение посчитали полезным: deff0


Ранг: 5.5 (гость)
Статус: Участник

Создано: 6 апреля 2017 14:09 New!
Цитата · Личное сообщение · #15

C++, функция типа VOID.


Ранг: 149.4 (ветеран)
Статус: Участник

Создано: 6 апреля 2017 14:38 · Поправил: -=AkaBOSS=- New!
Цитата · Личное сообщение · #16

deff0 пишет:
Родная длл после вызова функции очищает стек от параметров, передаваемых функции

очищает после вызова или при возврате?
определись, как выглядит вызов этой функции в программе.

если в программе код вида
push aaa
push bbb
call dword [ReadMemory]
add esp, xx
тогда это нифига не stdcall.

Ранг: 5.5 (гость)
Статус: Участник

Создано: 6 апреля 2017 14:53 · Поправил: deff0 New!
Цитата · Личное сообщение · #17

Получилось вот так
__declspec(dllexport) VOID __stdcall ReadMemory

программе код вида
push aaa
push bbb
call dword [ReadMemory]
push aaa
push ccc
call dword [ReadMemory]
push aaa
push [esp+20h+arg_c]
call dword [ReadMemory]

Ранг: 387.2 (мудрец)
Статус: Участник

Создано: 6 апреля 2017 18:30 New!
Цитата · Личное сообщение · #18

#ifndef APIENTRY
#define APIENTRY FAR PASCAL
#endif

void APIENTRY DK2ReadMemory( WORD DataReg,
LPSTR Id,
WORD Seed,
WORD Address,
LPSTR Buffer,
WORD BytesToRead );

Добавлено спустя 1 минуту
это для DK2

Ранг: 5.5 (гость)
Статус: Участник

Создано: 6 апреля 2017 18:35 New!
Цитата · Личное сообщение · #19

В третьем так же.
 eXeL@B —› Протекторы —› Донглы DеsКеу

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS