Сейчас на форуме: johnniewalker, NIKOLA (+7 невидимых)

 eXeL@B —› Крэки, обсуждения —› Исследование Actual Window Manager 8.10 - алгоритм генерации ключа
Посл.ответ Сообщение

Ранг: 3.1 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 09 января 2017 13:18 · Поправил: yuryrce
· Личное сообщение · #1

Разбираю Actual Window Manager 8.10
Написана на Delphi 5, не пакована.
Ссылки: --> Установка <--, --> Отдельно папка из установленной <--, --> Отдельно исследуемый файл <-- + --> MAP от IDR<-- + --> Декомпилированный код из IDA с небольшими правками <--

Общий вид ключика: aimZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYY
Определённую часть алгоритма разобрал:
1. 45 символов длина
2. Начинаться он должен с "aim"
3. ZZ - цифры равны версии - 81
4. YYYYYYYY - дата окончания лицензии. Там свой формат, вникать пока особо не стал, т. к. затруднений не вызовет его понять. Взята с потолка цифра 00000059, чуть позже должна быть 0000005A и т.д. (пока года хватит). С этим сам в состоянии разобраться.
5. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - это xTea

Вопрос именно по 5 пункту.
Ключ шифрования имеется:
Code:
  1. t8UpRU6vH4XzjN5&\Cvt7AN36Fnuz2F-S>6Nuc2zmYoa7Tw6iw

Шифрую сторонним софтом (KeygenerAssistant, например), а прога то ли что-то мудрит в недрах функции расшифровки, то ли там нашлёпка над xTea. В результате расшифровки прога видит совершенно не то, что было зашифровано

Тестовый юзер: AnyUserName
Тестовый ключ: aim81E7E898358D1D53CC655C80ACD11B5F6C00000059

C ними она доходит до проверки 5 пункта.

Список ключевых адресов:
Code:
  1. 0049CBB0  |.  E8 43FDFFFF   CALL _Unit148.sub_0049C8F8               ;Проверка валидности 5 части
  2. 0049C95A  |.  E8 8D230000   CALL _Unit150.sub_0049ECEC               ;Первое использование TCipher_Xtea
  3. 0049C970  |.  E8 0F210000   CALL _Unit150.sub_0049EA84               ;Второе использование TCipher_Xtea

CALL 0049F4E4 по адресам 0049C94F и 0049C965 можно не смотреть. Это копирование 5й части введённого ключа.

Весь мозг уже себе вынес. Обложился и декомпилированным файлом из IDA/HexRays и IDR и олькой.
Может кто-то свежим взглядом посмотрит и натолкнёт на мысль

PS: TCipher_Xtea похоже самопальный класс - не гуглится. Если у кого есть таковой в наличии, прошу поделиться. Может это хоть немного упростит процесс


Дополняю тут, т. к. запрещено постить
SReg пишет:
постарайся найти и заюзать такую же либу, как и в сабже

Так я и хотел - не гуглится TCipher_Xtea сраный. Похоже это разработка производителя софта.

DimitarSerg пишет:
внимательно дебажь цикл и рядом отлаживай и смотри оригинальный хтеа

Буду пробовать

Prober пишет:
По константе легко ищется

Можно саму константу хотябы посмотреть? Первый раз с подобными шифрами имею дело. Раньше только самопал и немодифицированные встречал PS: дёргать код невпервой. Дёргал полностью ещё с QIP2005 начиная

cryptX, дока помогла с константами разобраться



Ранг: 42.9 (посетитель), 13thx
Активность: 0.040
Статус: Участник

Создано: 09 января 2017 13:35
· Личное сообщение · #2

yuryrce
А IV (initialization vector) нашел ? Возможно там измененный вектор инициализаций или каличество раундов разное. Вот посмотри на имплементацию XTEA может найдешь разницы:

--> XTEA implementation <--

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

Ранг: 3.1 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 09 января 2017 13:41
· Личное сообщение · #3

cryptX, всё может быть. Не искал, даже идеи такой не было. Мозг уже кипит. Часов 10 безвылазно ковыряю.



Ранг: 42.9 (посетитель), 13thx
Активность: 0.040
Статус: Участник

Создано: 09 января 2017 13:49
· Личное сообщение · #4

yuryrce
В любой непонятной ситуаций - ложись спать (C) Еврейская мудрость

п.с: так надо анализировать дальше, у меня помню уже с MD5 был такой опыт...правда у меня добавлялось соль перед криптовкой, посмотри может там тоже так.



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 09 января 2017 14:26
· Личное сообщение · #5

yuryrce
ничего не смотрел по конкретной проге, но могу дать совет: постарайся найти и заюзать такую же либу, как и в сабже. На дельфях их не так уж и много и почти все опенсорс.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 09 января 2017 15:01
· Личное сообщение · #6

Я в паре-тройке своих кейгенов с теа/хтеа использовал это:
http://www.shokhirev.com/nikolai/programs/code/Cryptography/uTeaSet_pas.html

и внимательно дебажь цикл и рядом отлаживай и смотри оригинальный хтеа.
Code:
  1. <004689DE>
  2.  
  3. @L_57_00000001:
  4.          MOV EBX,0x1
  5.          MOV ESI,0x1
  6.          TEST EAX,EAX
  7.          JLE SHORT 00468A53
  8.          MOV DWORD PTR SS:[ESP+0x14],EAX
  9.  
  10. @L_57_00000002:
  11.          MOV EDX,EBX
  12.          MOV EAX,EDI
  13.          CALL 0046879C
  14.          MOV DWORD PTR SS:[ESP+0x4],EAX
  15.          ADD EBX,0x4
  16.          MOV EDX,EBX
  17.          MOV EAX,EDI
  18.          CALL 0046879C
  19.          MOV DWORD PTR SS:[ESP+0x8],EAX
  20.          ADD EBX,0x4
  21.          MOV EAX,DWORD PTR SS:[ESP+0x4]
  22.          MOV DWORD PTR SS:[ESP+0xC],EAX
  23.          MOV EAX,DWORD PTR SS:[ESP+0x8]
  24.          MOV DWORD PTR SS:[ESP+0x10],EAX
  25.          LEA EDX,DWORD PTR SS:[ESP+0x18]
  26.          LEA EAX,DWORD PTR SS:[ESP+0x4]
  27.          CALL 0046870C
  28.          MOV EDX,EBP
  29.          MOV ECX,ESI
  30.          MOV EAX,DWORD PTR SS:[ESP+0x4]
  31.          CALL 004687DC
  32.          ADD ESI,0x4
  33.          MOV EDX,EBP
  34.          MOV ECX,ESI
  35.          MOV EAX,DWORD PTR SS:[ESP+0x8]
  36.          CALL 004687DC
  37.          ADD ESI,0x4
  38.          DEC DWORD PTR SS:[ESP+0x14]
  39.          JNZ SHORT @L_57_00000002
  40.  
  41. <004689B8>
  42.  
  43.          JNZ SHORT @L_57_00000001
  44.  


-----
ds




Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 09 января 2017 15:52
· Личное сообщение · #7

Ставить не хотелось, взял вторую ссылку:
yuryrce пишет:
--> Отдельно папка из установленной <--

Хотя ставить всё-таки пришлось

Версия оказалась 8.9.2, но вряд ли это принципиально. В алгоритме 32 раунда, похож на TEA/XTEA, но модифицированный, стандартный код не даст нужный результат. Там рядом 2 процедуры лежат, одна - дешифратор, ну а вторая - по всем признакам обратная, т. е. шифратор. По константе легко ищется. Проще будет её выдернуть, чем разбираться с модификациями и в ЯВУ их переводить.

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

Ранг: 3.1 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 10 января 2017 04:00 · Поправил: yuryrce
· Личное сообщение · #8

Вроде нашёл что дёргать - sub_468820 и sub_468968. Там дельта 0x9E3779B9.
Похоже придётся выборочно дёргать руками. Натравил TMG Ripper Studio - много лишнего тащит. Половина функций стандартные Delphi.

Добавлено спустя 5 часов 19 минут
--> Код <-- Кому не трудно, помогите дураку определить, какая из этих двух функций шифрует, а какая расшифровывает?
Уже рипнул вторую полностью, работает как часы на примере из проги.

PS: в одной из них есть константа C6EF3720 в недрах, в другой её нет. Я правильно понял, что та, которая содержит эту константу, та и расшифровывает?

Методом научного тыка определил, что можно их менять местами. Т.е. одной шифровать, второй расшифровывать и наоборот. Взрыв мозга

Добавлено спустя 7 часов 20 минут
Успешно рипнуты обе функции. Работают идеально. Почти 600 строк в итоге вышло.
Теперь можно продолжить разбирать алгоритм.
Всем спасибо. Остальное сам. Пожалуй, прикрою топик.


 eXeL@B —› Крэки, обсуждения —› Исследование Actual Window Manager 8.10 - алгоритм генерации ключа
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати