Сейчас на форуме: (+6 невидимых) |
eXeL@B —› Протекторы —› HWID в Enigma 5.X |
Посл.ответ | Сообщение |
|
Создано: 08 апреля 2020 10:23 · Личное сообщение · #1 Добрый день. На T4U ( Там виртуальная машина. Немного разобрал генерацию хвида под ней, например, хвид 01296-5398B-3F772-FECC6 хранится как F67EBA8ED185CC75422B, где каждый байт это позиция в строке "ABCDEF1234567890-", т.е. 0-F, 1-6, 2-7 т и т.п. Хвид всегда выплёвывается на выходе из одной и той же функции по [esp+128] (ниже часть кода функции). Там же мы его можем и подменить. Как я понимаю, это не всё, т.к. не регистрируется данными из челленджа Может кто-н подсказать в каком направлении дальше копать? Я просто думаю, что может эта функция генерит только информацию для внешнего представление хвида, а где-то там есть ещё само число.. Code:
|
|
Создано: 11 апреля 2020 01:19 · Личное сообщение · #2 Странно, 400+ посмотров, а нет ни одного ответа. На карантине время есть) Отвечу сам - вдруг будет интересно. Исходные данные: 1. Программа, накрытая последней Энигмой (6.x 32-bit). 2. Рабочая связка HWID+Name+Key. По замыслу, HWID + Name отправляются разработчику, который отправляет в ответ Key и программа регистрируется. Задача: получить HWID 01296-5398B-3F772-FECC6 (из той рабочей связки) Решение: 1. Изменим вид на более читабельный: 0129-6539-8B3F-772F-ECC6 2. Используем шаблон "ABCDEF1234567890" (без кавычек) для преобразования во внутреннее представление, т.е. "0" в нашем хвиде будет "F", "1" - "6" и т.д. 3. Получим внутреннее представление: F67E-BA8E-D185-CC75-422B (в памяти он хранится без тире) 4. Применим блочный RC5 (Ronald Rivest, 1994) на последние 16 цифр, используя вшитый в программу 256-битный ключ. 5. Результат дешифровки (в нашем случае): F67E-1500-959C-D202-7875 После серии экспериментов были установлены следующие зависимости: 1. Часть "F67E" - контрольная сумма, получается автоматически при верных остальных 2. Часть "1500" - постоянна для одной программы (вшита?) 3. Часть "959C" - младшее слово серийного номера винчестера. 4. Часть "D202" - младшее слово хэша (XOR + ADD + mod 2) множественного вызова CPUID с различными параметрами. 5. Часть "7875" - постоянная, т.к. это младшее слово хэша обработки вызова "//./Device/PhysicalMemory", а он завершается на Win10 как STATUS_OBJECT_TYPE_MISMATCH ==>> просто хэш нулей. Таким образом достаточно подменить только SN SDD и результаты CPUID при загрузке, чтобы получить нужный HWID 01296-5398B-3F772-FECC6. Конечно, если привязка была сделана также по другим параметрам, то HWID просто будет длиннее на нужное количество используемых входных данных (видел длиной 8). | Сообщение посчитали полезным: TryAga1n, CyberGod, Nightshade, mak, v00doo, Jaa, Hugo Chaves |
|
Создано: 14 апреля 2020 16:33 · Личное сообщение · #3 |
|
Создано: 14 апреля 2020 18:08 · Поправил: Illuzion · Личное сообщение · #4 bartolomeo пишет: плотно ковырял пятую версию - там всё гораздо круче наворочено. эээ... Может быть Вы что-то путаете "круче наворочено"? Это последняя энигма ( Звучит сомнительно, что в 5-ой версии было сложно, а в 6-ой стало просто) Раскладывается как по нотам. Более того, есть погуглить, то до версии 5.4 хвид менялся просто подменой, и есть паблик скрипты. Сейчас этого не сделать, т.к. по-сути там нет цельного понятия хвид, он только для пользователся в таком виде представлен. А для более поздних версий в паблике я не нашёл ничего (может плохо искал), потому и поделился. P.S. а то, что я алгоритм такой просто написал, то это же уже результат - остальное за кадром же. |
|
Создано: 16 апреля 2020 20:59 · Поправил: difexacaw · Личное сообщение · #5 Так а в чём проблема. Инфа получается через сервисные запросы. Лог может быть сложным для поиска инфы в нём из за размера, может например сканиться весь реестр, будет трудно выделить нужные ключи.. Что касается всяких констант/строк/сигнатур так это детская задача, крутнуть автоматикой она всё сама находит. ----- vx |
|
Создано: 19 апреля 2020 02:53 · Личное сообщение · #6 |
eXeL@B —› Протекторы —› HWID в Enigma 5.X |