Загрузка...

Kaspersky KeygenMe

Тема в разделе Реверсинг / Assembler создана пользователем Happy 19 ноя 2018. 574 просмотра

Загрузка...
  1. Happy
    Happy Автор темы 19 ноя 2018 Держу курс на заебись 539 23 апр 2017
    После запуска файла, я понял что сам файл – это что-то вроде инжектора (об этом свидетельствовали частые ошибки при попытках инжекта, которые свойственны при работе через ntdll).

    Открыв файл в IDA, я в этом убедился, он грузит свои ресурсы и запускает:

    [IMG]
    [IMG]
    Я запустил файл, после запуска окна кредитной карты сдампил процесс при помощи PeTools и открыл дамп в IDA.

    В main функции приложение запускало окно с функцией для callback’а DialogFunc:

    [IMG]
    Перейдя в нее, я заметил несколько интересных вещей:

    [IMG]
    Во-первых, текст, который появляется при вводе неверных данных в окна программы, подтверждающий что я на правильном пути, во-вторых, блок, судя по всему, содержащий логику регистрации и одну-единственную функцию в этом блоке.

    Перехожу на эту функцию и вижу заветное “Serial is valid”:

    [IMG]
    Выше распологается if/else, которое, судя по всему, является валидатором серийного номера.

    Выглядит это примерно следующим образом: вызывается некая функция, куда передается почта, введенный серийник и длина обоих строк, по ее результату (1 / 0) определяется, правильно введены данные или нет:

    [IMG]
    Переходим в функцию проверки серийника. Там видим 3 if/else для валидации данных:

    [IMG]
    Одна из валидаций прямолинейно говорила что длина серийника должна быть 32 символа (подсчитал с помощью перебора цифр, скрипт ниже):

    [IMG]
    for i in range(99999):
    if (i**2 - 24) % 1000 == 0:
    print(i)

    [IMG]
    Далее видим функцию MD5, которая используется на почте и строке “Z3r0_N1ghts”:

    [IMG]
    Почему это именно MD5 можно понять, **** в гугл hex-значения из этой функции:

    [IMG]
    Далее, md5-хэши конвертируются в байтовый вид и побайтово вычитаются, попутно проверяя результат разности с введенным серийником:

    [IMG]
    Алгоритм расшифрован, осталось только лишь написать к нему кейген:

    import hashlib
    import binascii

    zero_nights = hashlib.md5('Z3r0_N1ghts'.encode()).digest()
    mail = hashlib.md5("dmr0@protonmail.com".encode()).digest()
    result = []
    for i in range(len(zero_nights)):
    result.append((zero_nights - mail) % 256)

    print(binascii.hexlify(bytearray(result)))

    Получаем MD5 в байтовом виде от мейла и строки ‘Z3r0_N1ghts’, далее побайтово в цикле вычитаем одну строку из другой и выводим результат в виде HEX-строки.

    Вводим полученные данные и получаем “Serial is valid”:

    [IMG]
    [IMG]
     
  2. uregame
    бро от души
     
  3. Zarus
    Zarus 17 янв 2019 127 31 окт 2017
    копипаст с блоги сорика
     
Top