Сейчас на форуме: site-pro, Rio, johnniewalker, vsv1 (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Нужно понять алгоритм проверки ключей
Посл.ответ Сообщение

Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 ноября 2012 21:56 · Поправил: Barash
· Личное сообщение · #1

Всем привет.
Есть программа, в которую необходимо ввести ключ. Собственно прощу помочь разобраться/написать алгоритм генерации ключей. В ассемблере я не слишком силен, но кое-что своими силами выяснить сумел. В общем-то я доковырял до той библиотеки, внутри которой происходит проверка ключа на валидность.

Сама библиотека: тут
Судя по информации PEiD: Microsoft Visual C++ 6.0 DLL [Debug], не упакован.
Функция IsValidRegInfo принимает 4 параметра:
1 и 2 параметры содержат адреса строк, содержащие данные водимые при установке программы. Они, как я понял, никак не влияют на процесс проверки ключа.
3 параметр содержит адрес строки с ключом. (XXXXXX-YYYYYYYYYYYY-ZZZZZ)
Примеры ключей в аттаче. Пароль: pass
4. Параметр зависит от типа лицензии – server, desktop, ещё может какая.
Соответственно, если ключ валиден, то в регистре AX поднимается 1, если невалиден, то, 0.
В самом ключе тоже есть информация о типе лицензии (первые 6 символов ключа). Поэтому тип лицензии указанный в ключе и в 4-ом параметре должны совпадать.

Для версии server:
4 параметр - 91130
Ключ: NRMS10-YYYYYYYYYYYY-ZZZZZ
Для версии desktop:
4 параметр - 1130
Ключ: NRMA10-YYYYYYYYYYYY-ZZZZZ
Насколько я понял, путем каких-то вычислений происходит проверка второй части ключа(Y) и третьей(Z). Если они совпадают, то ключ верный. Также, насколько я понял, третья часть ключа(Z), по сути, это номер ключа, т.е. не может быть два ключа с одинаковой третьей частью.
Прощу помочь


52b0_22.11.2012_EXELAB.rU.tgz - serialNum_.rar



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 22 ноября 2012 22:12 · Поправил: Vovan666
· Личное сообщение · #2

Гадать на одной дллке, меня ломает, но посмотрев ключи и прогнав дллку в канале, похоже что средняя часть это часть MD5 от чего-то, чего именно х.з.



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

Создано: 23 ноября 2012 19:12 · Поправил: sivorog
· Личное сообщение · #3

-



Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 ноября 2012 19:59 · Поправил: Barash
· Личное сообщение · #4

sivorog пишет:
случайно не софт от Xilisoft / ImTOO ?
их легко запатчить, старые версии особенно

нет.
Программа называется nоrmасs. Собственно библиотека эта используется на этапе установки программы: во время установки вводится ключ. Обходить проверку ключа на этапе установки - не вариант, т.к. программа использует FLEXlm, и в файле лицензии должен быть прописан тот же самый ключ. А ломать саму программу я думаю гораздо сложнее чем, разобраться в алгоритме генерации ключа, на основе которого можно сгенерировать файл лицензии.
Кроме того, если ломать программу, то с каждым обновлением придется всё это проделывать заново.



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

Создано: 23 ноября 2012 22:26
· Личное сообщение · #5

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

Я думаю, вы не правильно думаете
В генерацию лицензии включили новый параметр CSSIGN, по мне так проще его обойти, чем разбираться как он генерируется.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 23 ноября 2012 22:28 · Поправил: Vovan666
· Личное сообщение · #6

основная процедура проверки находится по адресу 10001140
похоже что помимо мд5 еще и рса там
для каждой первой части ключа захардкорено число N
Нужно понять что происходит в CALL 10001460 который принимат
Code:
  1. push 0x13
  2. push 214397422595311 ;(захардкореный N)
  3. push AFFCEC80D522 ;(средняя часть ключа)
  4. push OUT ;(на выходе получается 89CE1A6E440C)
  5. CALL 10001460


после чего считается md5 от 0x301100005E510000 где
30110000 - вроде тоже захардкорено для каждой первой части
5E510000 - последняя часть ключа (20830)

мд5 сравнивается с OUT
ВСЁ!



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

Создано: 23 ноября 2012 22:32
· Личное сообщение · #7

Vovan666 пишет:
средняя часть это часть MD5 от чего-то, чего именно х.з.

Если не изменяет память, то это контрольная сумма первой и второй части серийника.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 23 ноября 2012 22:36
· Личное сообщение · #8

c7111981 пишет:
Если не изменяет память, то это контрольная сумма первой и второй части серийника.

изменяет



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

Создано: 23 ноября 2012 22:45 · Поправил: c7111981
· Личное сообщение · #9

И почему все ДЛЛ ковыряют, ведь RegWizard.exe тоже серийник сверяет, по моему его проще исследовать.
А нет, сейчас все принимают, только что проверил. Раньше точно ругался, если серийник левый вводишь.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 24 ноября 2012 07:13
· Личное сообщение · #10

кейген с исходниками для NRMA10, для остального додумывай сам, пинок в нужном направлении получен.
http://rghost.ru/41770744

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

Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 ноября 2012 15:57
· Личное сообщение · #11

Vovan666, спасибо большое. Буду разбираться...


 eXeL@B —› Крэки, обсуждения —› Нужно понять алгоритм проверки ключей
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати