Сейчас на форуме: (+9 невидимых) |
eXeL@B —› Протекторы —› Armadillo (Туторы, скрипты, плагины etc) |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . >> |
Посл.ответ | Сообщение |
|
Создано: 13 апреля 2012 17:49 · Поправил: Модератор · Личное сообщение · #1 Armadillo Key Tool Tutorial: PDF: Видео: | Сообщение посчитали полезным: matrix, huckfuck, AKAB, Isaev, plutos |
|
Создано: 01 мая 2012 21:28 · Личное сообщение · #2 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 01 мая 2012 21:35 · Личное сообщение · #3 Vovan666 пишет: Смотри KeyMaker.c там из encryption_template высчитываются все значения. Хотя при формирования ключа Y не нужен,P и Pub статичны(и вроде тоже не нужны для формирования).Симметрик ни что иное как crc32(без последнего not eax) от encryption_template. как брутить теперь понял, правда наврятли эт к чему-то приведёт. вообшем может не правильно изъясняюсь, попробую ещё раз: пихаю в ген от вела P, Y, Pvt, Pub, SymmetricKey, Name (имя юзера) и hwid. и получаю валидный ключ который прога хавает. и вроде всё ок, но пихать в релизы веловский ген штоле?! а рипать ипанёшься. |
|
Создано: 01 мая 2012 21:54 · Личное сообщение · #4 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 01 мая 2012 22:13 · Поправил: MasterSoft · Личное сообщение · #5 int пишет: Для этого обычно модифицируют исходник KeyMaker.c, убирая оттуда этапы получения P, Y, Pvt, Pub, SymmetricKey из encryption_template. Воооот, самое оно))) Может подскажешь конкретней, чо вырезать от туда надо? а то как я говорил в сях не оч. FrenFolio Спс, ща будем пробовать) | Сообщение посчитали полезным: DimitarSerg |
|
Создано: 02 мая 2012 01:15 · Поправил: FrenFolio · Личное сообщение · #6 Vovan666 пишет: Симметрик ни что иное как crc32(без последнего not eax) от encryption_template. Вообще-то не совсем верно. Для схем Short V3 используется хеширование Encryption template (он же Private Key в тулзе vel'а, обычная текстовая строка) по алгоритму MD5, но а для всех предыдущих - CRC32, точнее алгоритм CRC32 JamCRC (включая схему Unsigned). int пишет: Для этого обычно модифицируют исходник KeyMaker.c, убирая оттуда этапы получения P, Y, Pvt, Pub, SymmetricKey из encryption_template. MasterSoft пишет: Воооот, самое оно))) Может подскажешь конкретней, чо вырезать от туда надо? а то как я говорил в сях не оч. В принципе, в кг можно вставлять P и Pub и без предварительного расчета, потому как это константы для определенной схемы и уровня ключа (кроме Unsigned, там не используется подпись ключа). Для кг нужно закомментировать строки с получением Symmetric Key (подставив вместо них значения, полученные после брута и последующего фильтрования по значению Check Sum из массива публичных ключей): в функции CreateSignedKey 2 раза - это расчет для схем V2, V3 Signed (а) и V3 Short, включая подпись ECDSA (б) а) symmetrickey=crc32(temp, strlen(temp), NewCRC32)^hardwareID; б) symmetrickey=i[0]^i[1]^hardwareID; где hardwareID - форматированное значение из строки в число HWID (число типа int, 32 бита). Для Unsigned ключей - в функции CreateKey: k[0]=((unsigned long)crc32(cooked, strlen(cooked), NewCRC32))^hardwareID^HWIDXOR; - первые 4 байта в буфере k - это symmetrickey, поксоренный на HWID. Второе изменение, которое нужно сделать, - это заменить вызов функции GenerateKeyNumberFromString для расчета Pvt из MakeSignature (подсчет значений a, b для сообщения по схеме Эль-Гамаля) на свой Pvt (уже подсчитанный), то есть заменить GenerateKeyNumberFromString(pvtkeystring, p, &pvt, keysystem, ((keysystem==KS_V3 || keysystem==KS_SHORTV3) ? level+1 : 0)); на вызов BigInt_FromString(YOUR_PVT, &pvt); где YOUR_PVT - твой Pvt, в ASCII формате (причем должен быть обязательно записан как десятичное число!), &pvt - это буфер, куда будет записан заданный Pvt, уже в формате большого числа. В принципе, можно и не заморачиваться с сырцом армы вообще, а просто взять и пропатчить библиотеку "CodeGen.dll" - это стандартная библиотека для генерации ключей, которая есть в каждой версии армы. Могу показать, каким образом ее пропатчить, чтобы можно было использовать в кейгене при своих значениях Pvt и Symmetric Key, без знания приватного ключа (то есть как в тулзе vel'а при нажатии на Create) . Если кому-то это нужно, конечно. ----- Программист SkyNet | Сообщение посчитали полезным: MasterSoft, DimitarSerg, Gideon Vi, mak, obfuskator |
|
Создано: 02 мая 2012 11:47 · Поправил: FrenFolio · Личное сообщение · #7 Итак, пропатчить "CodeGen.dll" (здесь эта библиотека взята из армы v8.60 Public Build) можно следующим образом. Для примера ниже использованы значения Symmetric Key = 79D02C58 и Pvt = 325777739216451639733 (число в десятичной системе счисления). Эти значения получены для игры "Luxor Evolved", скачать ее можно I. Схема Unsigned изменено с Code:
на Code:
Так как коллизий для CRC32 очень много, то можно легко сбрутить Encryption Tempate (но он будет не тот, что задан разрабом!) по известному Symmetric Key и тогда не нужно будет патчить "CodeGen.dll". На моем компе < 1 минуты уходит для нахождения хотя бы одной строки длиной 8 символов из набора {0...9 | A...Z} . II. Схемы V2 и V3 Signed изменено с Code:
на Code:
III. Схема Short V3 патч Symmetric key изменено с Code:
на Code:
Патч расчетного Pvt на свой (этот патч будет общим также для схем Unsigned и Signed V2 и V3 > подмена расчетного Pvt) замена ф-ии GenerateKeyNumberFromString(pvtkeystring, p, &pvt, keysystem); на ф-ию BigInt_FromString(const char *string, BigInt target) (с параметром = строке Pvt как ASCII -> = "325777739216451639733") Code:
на Code:
----- Программист SkyNet |
|
Создано: 02 мая 2012 12:13 · Личное сообщение · #8 |
|
Создано: 02 мая 2012 12:24 · Поправил: FrenFolio · Личное сообщение · #9 В одно сообщение всё не влезло, так что пришлось продолжить здесь. В кейгене (ниже код для MASM) нужно объявить вызов CreateCode3 из внешней dll и задать полученный Pvt (в десятичном виде). Code:
Вот ссылка на кейген с пропатченной dll (пример)- ----- Программист SkyNet |
|
Создано: 02 мая 2012 12:55 · Личное сообщение · #10 Iona пишет: На современном компе с NVIDIA за пару дней вполне реально… Где-то была статья про то, как в ECC на кривой Коблица По поводу DLP калькулятора: выложить не могу, т.к. не я писал. Как выяснилось благодаря vel'у, писал и не BUBlic, а взял готовый и сгенерировал константы под арму. Если TSRh одобрит, то могу рипнуть из ArmaTool, как уже сделали пару негодяев из ROGUE (ребята с этой команды, собственно, и сообщили о рипе). В любом случае для уровней 5 - 9 инструмент от vel'а работает в десятки раз быстрее. |
|
Создано: 02 мая 2012 17:19 · Личное сообщение · #11 Обновил дампер зашифрованных сертификатов(certs_crypted.bin) для армы 8.x 9.x Теперь извлекается соль и дополнительная информация по сертификатам. bf1b_02.05.2012_EXELAB.rU.tgz - Arma_sert_extractor.rar | Сообщение посчитали полезным: DimitarSerg, tihiy_grom, ajax, mak, obfuskator |
|
Создано: 02 мая 2012 17:26 · Личное сообщение · #12 |
|
Создано: 02 мая 2012 17:29 · Личное сообщение · #13 DimitarSerg http://exelab.ru/f/action=vthread&forum=3&topic=16291 | Сообщение посчитали полезным: givses |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 06 мая 2012 11:52 · Личное сообщение · #14 |
|
Создано: 06 мая 2012 12:56 · Личное сообщение · #15 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 06 мая 2012 13:11 · Личное сообщение · #16 |
|
Создано: 06 мая 2012 13:14 · Личное сообщение · #17 MasterSoft Помнишь нулевую подпись в аспре? Так вот это тоже самое. При проверке цифровой подписи должны соблюдаться обязательные условия. Для каждой ЭЦП они свои. Ну так вот для ECDSA надо проверять подпись на бесконечно удаленную точку. Look here: http://en.wikipedia.org/wiki/Elliptic_Curve_DSA Глава "Signature verification algorithm". Смотри только на формулы. Что будет, если нам удастся сделать w = 0? А будет вот что: r == 0 * G + 0 * Qa Чтобы это было верным, надо просто сделать r = 0. Едем дальше. Надо сделать w = 0. Если просто для этого попытаться сделать s = 0, то Armadillo падает (баг первый). А можно, учитывая данное выражение: w = s^(-1) mod N s = 0 не катит. Что можно сделать еще? Можно еще s = N сделать. Итак, в KeyMaker.c наблюдаем N (он такой для всех программ): 5192296858534827627896703833467507 Переводим в HEX: FFFFFFFFFFFFFFFDBF91AF6DEA73 Обратный порядок байт: 73EA6DAF91BFFDFFFFFFFFFFFFFF r это координата x точки эллиптической кривой. Подсчитываем r: 1267584991505177 480DCA1242B19 192B24A1DC800400000000000000 Получаем таким образом две половинки ЭЦП. О проблемах: 1) Исправление данной ошибки можно сделать БЕЗ изменения алгоритма генерации ключа и вообще каких-либо изменений в схеме. Требуется просто вставить проверку бесконечно удаленной точки в алгоритме проверки ключа. Все! Значит в следующих версиях армы этой ошибки уже не будет (если она все еще есть). 2) Как вы могли заметить, hash игнорируется. А что это значит? Значит подпись "верна" для любого ключа. А значит если в программе 3 сертификата, например таких (и в таком порядке): Продленная trial-лицензия на 60 дней (дополнительные 60 дней к 30 дням триала) Лицензия на 10 устройств Неограниченное кол-во устройств В таком случае мы сможем сделать ключ только для первого сертификата. А он отстой полный. Вывод: Armadillo лохи, NGEN молодцы, метод отстойный и не пригодный. P.S. У меня есть мой авторский перевод этой статьи. Но выкладывать не хочу, т.к. нужно дорабатывать. Если кто-то очень сильный и смелый хочет довести его (перевод) до ума, велкам в ЛС. | Сообщение посчитали полезным: MasterSoft |
|
Создано: 06 мая 2012 13:16 · Поправил: bbuc · Личное сообщение · #18 MasterSoft Почти литературный перевод его поста на английский язык: http://sebsauvage.net/paste/?d29fe48fbdcce4ab#rBLWM0STwdOg1NNC0XZ+9G3iKTyVEZb5AGytJDSZ9n4= | Сообщение посчитали полезным: MasterSoft |
|
Создано: 06 мая 2012 13:22 · Личное сообщение · #19 Да, а еще в конце статьи, он дрочит на TEA и пытается доказать "что сбрутить нереально". Приводит в пример 200 дней на своем компьютере (это уже не 1000 лет) и вот он перевел на CUDA (как ему это удалось??? ) и выиграл множитель 3 - 4. Для сравнения. Мой брутер требует 18 дней на моем компьютере и на CUDA не переносится вообще! Я уже не говорю о распараллеливании вычислений на несколько машин и более мощном компьютере. Нереально, да? Короче кг/ам статейка. Всю работу сделали NGEN, а уже по ключу видно, что надо было сделать. |
|
Создано: 06 мая 2012 13:29 · Поправил: NikolayD · Личное сообщение · #20 |
|
Создано: 06 мая 2012 15:46 · Личное сообщение · #21 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 06 мая 2012 16:14 · Личное сообщение · #22 |
|
Создано: 06 мая 2012 16:56 · Личное сообщение · #23 |
|
Создано: 06 мая 2012 21:52 · Личное сообщение · #24 |
|
Создано: 07 мая 2012 00:05 · Личное сообщение · #25 Ну понятно. Короче рассказываю. Я не придумал, что это работает только для одного сертификата. Да, можно найти программу, где это будет работать на всех сертификатах. Но в некоторых версиях (причем я не разобрался, это кастомные версии исключительно или просто начиная с какой-то версии) есть ДОПОЛНИТЕЛЬНАЯ проверка, введенная против патча публичных ключей, либо патча функции CheckECDSASignature. Проверка заключается в том, что из симметричного ключа получается контрольная сумма. Далее идет перебор массива публичных ключей - совпала подпись, значит проверяем полученную из серийного номера контрольную сумму с тем, что стоит в массиве для данного публичного ключа. Не совпало - ключ неверный (патч обнаружен!). Эту проверку тоже начали патчить. Т.е. делали патч CheckECDSASignature и патч в 1 - 2 - ух местах, чтобы "разблокировать заблокированные сертификаты", как называли это в TSRh. Таким образом, чтобы работали все сертификаты, можно сделать ключ с нулевой подписью + запатчить эти проверки. Какая нафиг разница патчить CheckECDSASignature или делать ключ с нулевой подписью, если все равно надо что-то патчить? В любом случае, я свое мнение озвучил. Метод отстой и не пригодный. Как было верно замечено, сейчас уже вполне пора задуматься о взломе ECDSA-113. Без всяких "но", которыми являются патчи и некорректные реализации проверок. |
|
Создано: 07 мая 2012 05:38 · Личное сообщение · #26 |
|
Создано: 07 мая 2012 09:46 · Личное сообщение · #27 Iona Ну дык если ты так уверен в своей правоте, приведи прогу, где нормальный серт будет 2-м или 3-м, ну и сгенеренную валидную пару для этого серта. Если ты прав - интег признает, что он лошок. А так, нет оснований не доверять знаниям интега. ----- SaNX | Сообщение посчитали полезным: DimitarSerg |
|
Создано: 07 мая 2012 12:10 · Личное сообщение · #28 @SaNX Не вижу смысла что-то доказывать. В прошлый раз инт по удалял все мои доказательства. Пусть каждый останется при своем мнении, а кому надо тот разберется. А то одни не смогли сбрутить симкей и выложили релиз по нулевой точте. Другие не смогли разобраться как кейгенить под разные сертификаты, и выложили брут. А между прочим разработчики не пофиксили баг по нулевой точке, Просто после очередной перекомпиляции он исчез сам собой. Так что в будущем он еще может вернуться. |
|
Создано: 07 мая 2012 13:55 · Личное сообщение · #29 Iona пишет: У меня такое впечатление, что мы учились по разным туторам. У меня такое впечатление, что вам надо получать знания исследуя программы в дизассемблере/отладчике, а не читая чужие статьи в стиле "HowTo". Без обид. SaNX пишет: приведи прогу, где нормальный серт будет 2-м или 3-м А смысл? Я такую прогу тоже могу найти))) Задача найти прогу, где это не работает. И вот вам пример: VBto Converter Брутим симметричные ключи (armabrut_cuda -a 0 -h 04c3b887, ...): 04c3b887 = 05d7c05c VB=>VJ# 0918289a = f614cb51 VB=>Delphi 1854411b = dbbceae9 VB=>VBNET 290f0746 = 47462cc0 VB=>MSVC++ 529aa7f3 = 143bd728 VB6=>C#, VBNET 49bc23e6 = 47bea239 VB=>VBNET 60c6de0c = 642e7301 VB=>Delphi 6c5ba562 = 08fc7ea6 VB=>MSVC++ 6d61b46f = 391c4023 Full version Time Expert 59375011 = 139616b6 VB=>CPP Builder 8bd6f1ec = f3782773 VB=>VJ# b9470c9f = 9a4f6d96 VB=>CPP Builder c4865161 = e65626ce VB6=>VCNET f72ad6f4 = 2218248e VB6=>VCNET f76c591e = 4a82be7e Full version Time Пытаемся сделать ключ для Full Version Time Expert BC54-6640 Test 01END8-GVMD74-M3QQ7U-KDNY8V-ZZFZZZ-ZZZZZZ-ZWCJP9-51VJ00-800000-000000 Получаем "Key valid and has been stored". Пробуем сделать тоже самое для "Full Version Time" 01END8-GVMHVU-BUT77U-KDNY8V-ZZFZZZ-ZZZZZZ-ZWCJP9-51VJ00-800000-000000 Получаем "The name/key you entered does not appear to be valid. Please try again." (и так для любого из оставшихся 13 сертификатов). В данном случае нам повезло, и мы имеем возможность зарегистрировать программу с лучшим сертификатом без патча. Но такое везение очень редкое, как правило. А вот патч, который решает эту проблему (правда в этом патче подпись не проверяется вообще, но это можно исправить). Мне лень сейчас выдергивать Security.dll и показывать, что там надо патчить, но это войдет в мою статью номер 4 (напомню, что статья номер 2 находится под правкой Юпитера, статья по 3-ей арме пока не дописана, а в 4-ой я планирую рассмотреть механизм взлома, включая все этапы кейгенинга). Что интересно, это версия армы 5.20 или 5.40 (не помню), задолго до появления линеек 6.xx и 7.xx. http://rghost.ru/private/37954956/c309f4c05e29eaa068cf9628f96304a2 Пароль: ExEL@B2012 |
|
Создано: 07 мая 2012 18:29 · Личное сообщение · #30 |
|
Создано: 08 мая 2012 14:24 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . >> |
eXeL@B —› Протекторы —› Armadillo (Туторы, скрипты, плагины etc) |