Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых) |
eXeL@B —› Основной форум —› Кто нибудь смотрел СhipTuningPro Full Version CТР-3.21 ? Там СОМ ключ. |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 03 ноября 2007 22:43 · Личное сообщение · #1 |
|
Создано: 03 ноября 2007 22:51 · Личное сообщение · #2 |
|
Создано: 03 ноября 2007 23:10 · Личное сообщение · #3 Файлик тут: h..p://dump.ru/files/n/n746013375/ Программа пробегала на руборде и на других подобных форумах, и решение найдено было. Вот и хотел поинтересоваться у тех кто с ней дело имел, есть ли шанс без ключа. Ну или может кто ссылку даст на готовое решение. Дело в том, что работает или нет и работает ли правильно наверное проверить можно только подключив коробку... |
|
Создано: 07 ноября 2007 13:40 · Поправил: ToBad · Личное сообщение · #4 Так уж получилось, что эту программу параллельно вынес в запросы на взлом m1sha Думаю не будет негативно воспринято то, что я перенесу часть диалога сюда, с целью продолжить его тут более детально. Flint сообщил: Куски кода программы поксорены, так что без ключа она работать не будет На что m1sha ответил: ключ есть у товарища - что и как с него надо считать... Теперь расскажу, что удалось нарыть мне. Вся проверка ключа сводится к тому, что из него мы получаем dword и сравниваем его с “0923”. Далее, как было уже сказано, есть 2 поксореных куска. Они не большие. С ключа вычитывается как мне показалось один dword которым и ксорятся эти места. Далее когда 2 куска расшифрованы появляется интерфейс программы и в момент перехода на этот код естественно возникает ошибка. Следовательно смею предположить, что далее никакого ксора кода скорее всего нет, а проверка ключа сводится лишь к банальному вычитыванию “0923”. M1sha я думаю достаточно у товарища во время работы программы с ключом снять её дамп с помощью petools или подобного инструмента. Далее я смогу сделать патч убрав проверку и записав расшифрованные куски. Достаточно будет простого дамта без восстановления импорта и т.д. |
|
Создано: 07 ноября 2007 13:51 · Личное сообщение · #5 ToBad пишет: M1sha я думаю достаточно у товарища во время работы программы с ключом снять её дамп с помощью petools или подобного инструмента. Далее я смогу сделать патч убрав проверку и записав расшифрованные куски Логично! Имхо, по другому никак не получится. Там еще до ключа нужно снять Aspack и еще один Call занопить, который тож ксорит код, но это уже мелочи ----- Nulla aetas ad discendum sera |
|
Создано: 07 ноября 2007 13:54 · Личное сообщение · #6 |
|
Создано: 07 ноября 2007 14:06 · Личное сообщение · #7 Flint пишет: Там еще до ключа нужно снять Aspack и еще один Call занопить, который тож ксорит код Аспак сняли. Ксореный код встречал. Кстати, он тот участок тоже ксорит ? Дай адрес этого Call. infern0 пишет: размер ключа для разксоривания какой ? если дворд - то простой перебор с отсечением решит все проблемы за минут 10-15. Он читает не один раз, один dword вычитывает и ксорит им пару раз. Но как мне показалось в функцию вычитки не поступает новых параметров. Я могу ошибаться или ключ возможно сам делает сдвиг. Расскажи подробнее про перебор с отсечением ? Как проверить на осмысленность кода ? |
|
Создано: 07 ноября 2007 14:13 · Поправил: Flint · Личное сообщение · #8 |
|
Создано: 07 ноября 2007 14:27 · Личное сообщение · #9 |
|
Создано: 07 ноября 2007 15:25 · Личное сообщение · #10 ToBad пишет: инфу про перебор с отсечением Вот что в нете нарыл: Отсечение локальным перебором. Если в процессе решения возникает ситуация, что ограничение содержит только одну неизвестную переменную, то можно перебрать значения переменной и проверять истинность этого ограничения. Если при некотором значении переменной ограничение становится ложным, то значение переменной отсекается. Такой способ отсечения называется локальным перебором: перебор и проверка осуществляется локально только для одного ограничения. Если некоторое выражение сложное и содержит небольшое количество неизвестных, то также можно провести локальный перебор значений переменных в рамках одного ограничения: если для некоторого значения некоторой переменной ограничение всегда противоречиво, то такое значение отсекается. _________ Я думаю что из этого следует: банальный перебор константы для xor, и передача управления на расшифрованный код, если код расшифрован криво, то будет возникать исключение, которое будет обрабатывать наш SEH и заодно делать инкремент константы и т.д. Имхо, геморно, проще снять дамп программы. Поправьте если я не прав. ----- Nulla aetas ad discendum sera |
|
Создано: 07 ноября 2007 15:32 · Личное сообщение · #11 Flint пишет: Поправьте если я не прав. Думаю прав. А если использовано два dword-а то бесполезно и пытаться перебирать. Думаю нужно быть полным идиотом, что бы сделать СОМ ключ и использовать только несколько dword-ов из него. m1sha так нам и не ответил что известно о ключе. У него был раньше официальный.... |
|
Создано: 07 ноября 2007 15:48 · Поправил: Smon · Личное сообщение · #12 Flint пишет: передача управления на расшифрованный код, если код расшифрован криво, то будет возникать исключение Даже правильно расшифрованный таким образом код вряд ли отработает без исключений. Это кривой метод, по той простой причине - что обычно всегда требуется "правильное" состояние регистров, локальных\глобальных переменных и стека перед передачей управления на этот код. Кроме того управление из одного шифрованного блока может передаваться в другой (причём там может использоваться другой ключ). Лучший брут - это брут по известным байтам (соответственно чем больше их известно тем меньше вероятность ошибок). Flint пишет: проще снять дамп программы Это если эти куски кода расшифровываются сразу и все, а если непосредственно перед "употреблением" ? Тогда от дампа толку ноль, надо снимать на компе на котором ключ, поставив бряк после функции расшифровки. ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 ноября 2007 16:04 · Личное сообщение · #13 ToBad пишет: Он читает не один раз, один dword вычитывает и ксорит им пару раз. Но как мне показалось в функцию вычитки не поступает новых параметров. Я могу ошибаться или ключ возможно сам делает сдвиг. ToBad пишет: А если использовано два dword-а то бесполезно и пытаться перебирать ну почему же! если некий кусок кода ксорится на dword_1 а потом еще раз на dword_2, то это означает, что исходный код ксориться на {dword_1 XOR dword_2} не более того. те. всегда можно найти dword_3, который даст нужный результат. вопрос в организации процесса "XOR" .. и если он примитивно-линейный + при наличии возможности или снять дам, или получить декриптованный код в оригинальной программе как образец, достаточно совпадения 3-4-5-6 dword`ов для поиска dword_Х, который можно подложить вместо чтения ключа... впрочем, это уже варианты.... |
|
Создано: 07 ноября 2007 16:09 · Личное сообщение · #14 Smon пишет: а если непосредственно перед "употреблением" ? Тогда от дампа толку ноль. Это два основных куска которые раскриптовываются перед появлением интерфейса. Интерфейс появляется и передаётся управление на них. Тут же ошибка. Если далее будут подобные куски, по программа будет падать при обращении к ним. Соответственно узнав место падения, будем делать патч и зацикливать программу там, запускать на ключе и снимать дамп ещё раз. Ну сколько раз он так мог сделать ? 2-3, 5 ? Не думаю что больше. К тому же одним значением из ключа не ксорил бы несколько раз. Значит местом дорожил ? Следовательно даже если ксорит ещё не раз, по восстановленным данным первого дампа можно будет вычислить содержимое ключа, и сделать эмуль на основе приаттаченной длл. |
|
Создано: 07 ноября 2007 16:13 · Личное сообщение · #15 DMD пишет: вопрос в организации процесса "XOR" .. и если он примитивно-линейный Думаю да. Получили результат с ключа, проксорили несколько dword-ов, вычитали опять и ещё несколько. Вопрос лишь в том, считываем новое значение или тоже... Как я понял, нет зависимости ксора следующих байт от результата ксора предыдущих. |
|
Создано: 07 ноября 2007 16:16 · Личное сообщение · #16 Flint пишет: 0050172B CALL 004F2BDC вот сдесь ксорится код от 004F06AE до 004F1F02 Нужно сделать дамп и занопись этот Call Скачал, посмотрел, это всё херня, этот код там расшифровывается только перед передачей на него управления, ключ не нужен. Обрати внимание на забавные слова - SHA1, RC2 и BLOWFISH (с PI fraction) ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 ноября 2007 16:22 · Личное сообщение · #17 |
|
Создано: 07 ноября 2007 16:26 · Личное сообщение · #18 Smon пишет: Скачал, посмотрел, это всё херня, этот код там расшифровывается только перед передачей на него управления, ключ не нужен А я не так сказал да?! (Flint пишет: Там еще до ключа нужно снять Aspack и еще один Call занопить, который тож ксорит код, но это уже мелочи ) BLOWFISH [sbox] :: 001025DC :: 005039DC Referenced at 004DBDF1 CRC32 [poly] :: 00101AE0 :: 00502EE0 Referenced at 0046C31D CRC32 [poly] :: 001035DC :: 005049DC Referenced at 004DE2CD HAVAL (5 pass) :: 000DBDC3 :: 004DC9C3 The reference is above. PI fraction (NIMBUS / BLOWFISH) :: 00102594 :: 00503994 Referenced at 004DBE09 RC2 [char] :: 001035E0 :: 005049E0 Referenced at 004DECE9 Referenced at 004DED02 Referenced at 005053C4 SHA1 [Compress] :: 000DA29D :: 004DAE9D The reference is above. н да, чую плохо дело ----- Nulla aetas ad discendum sera |
|
Создано: 07 ноября 2007 16:29 · Личное сообщение · #19 ToBad пишет: В смысле ? Без ключа сделать можно или нельзя сделать даже с ключом ? В том смысле - что блоки которые раскриптовываются ксором трогать не обязательно. От двордов из ключа берется хэш SHA1, который используется в качестве ключа для BLOWFISH, которым покриптованы куски проги, надо повнимательней посмотреть - это пока только предположение Если оно правильно - то без ключа ловить нечего, надо просто отыскать какие блоки расшифровываются блоуфишем и сдампить их. ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 ноября 2007 16:31 · Личное сообщение · #20 |
|
Создано: 07 ноября 2007 16:42 · Личное сообщение · #21 ToBad Посмотрел повнимательней: блоки 4de370h-4dea90h; 4f5f40-4f6870h; 503994h-504adfh - находятся в секции кода и имеют слишком высокую для ксора энтропию, ставь в них бряки на чтение\запись и смотри что туда пишется\оттуда читается при наличии ключа. Ресурсы целые. ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 ноября 2007 17:41 · Поправил: DMD · Личное сообщение · #22 Smon пишет: это пока только предположение Если оно правильно - то без ключа ловить нечего даже в этом случае есть два решения: 1) посмотреть внимательное алго восстановления кода на предмет сколько dword`ов считанных из ключа задействовано как вход SHA1 и от этого можно прогнозировать время определения этих dword`ов. если прогнозы времени будут плохими см.п2 2) сделать loader/patch, который совершенно банальным образом или сохранит сами значение dword`ов ключа или запишет в некий файл восстановленные куски кода., и вручить его с подробными обяснениями m1sha. вежливо попросить - вот ларчик и откроется ps/ вот только сам m1sha пока что-то в отсутствии.... pps/ выложите, pls, распакованный exe... глянуть.. |
|
Создано: 07 ноября 2007 18:12 · Личное сообщение · #23 |
|
Создано: 07 ноября 2007 18:31 · Личное сообщение · #24 DMD пишет: посмотреть внимательное алго восстановления кода на предмет сколько dword`ов считанных из ключа задействовано как вход SHA1 Ну это да, если хэш от одного дворда - то сложностей никаких, два - тоже реально, хотя и подольше, а если куча DMD пишет: сделать loader/patch, который совершенно банальным образом или сохранит сами значение dword`ов ключа или запишет в некий файл восстановленные куски кода Я и говорю - "без ключа ловить нечего", надо смотреть откуда и что берется, для этого нужен ключ ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 ноября 2007 18:41 · Личное сообщение · #25 До появления интерфейса раскриптоваваются блоки 4f20d4-4f2436, 500bbe-500d40, 4f495d-4f4acc. На процедуре начинающейся с 500ba8 у меня программа падает. Когда после серии окон с ошибками влепил туда ret, программа выдала ошибочку типа в OnShow чего то там... Короче я так понял это процедура связанная с оконным интерфейсом. Думаю в дампе если m1sha его сделает - она будет восстановлена. |
|
Создано: 08 ноября 2007 08:02 · Личное сообщение · #26 |
|
Создано: 08 ноября 2007 09:17 · Поправил: DMD · Личное сообщение · #27 ToBad пишет: До появления интерфейса раскриптоваваются блоки 4f20d4-4f2436, 500bbe-500d40, 4f495d-4f4acc. На процедуре начинающейся с 500ba8 у меня программа падает. Когда после серии окон с ошибками влепил туда ret, программа выдала ошибочку типа в OnShow чего то там... Короче я так понял это процедура связанная с оконным интерфейсом. СПБ за дамп, я, правда, смотрел вечером on-line.. и вот что могу сказать: до восстановления (этот термин мне кажется более правильным с этом случае) кусков кода и стрингов 0046E080 00 00 00 00 FF FF FF FF ....яяяя
собственно ключ и не нужен. Все начинается примерно вот здесь: 004F1B20 B8 2C204F00 MOV EAX, 004F202C ; ASCII "COM %d"
в Proc_ 004D031C будет: 0097FD44 013F7228 |FileName = "COM1:"
и собственно окончание цикла сканирования COM-интерфесов на предмет ключа: 004F1C27 FF45 E4 INC DWORD PTR [EBP-1C]
Proc_0046C6B8 сравнивает два блока данных: 004F3929 C0 88 BE F3 95 B1 20 30 39 32 33 00 8B C6 83 C0 А€ѕу•± 0923.‹ЖѓА
и последнее что я успел посмотреть: проверка "0923" 004F1C64 8B45 F8 MOV EAX, DWORD PTR [EBP-8]
дальше будет еще несколько проверок сравнением и поскольку данные невалидны (ключа-то у нас нет), то и будем получать исключения и мессадж: "Вставьте ключ и презапустите программу". ну и на_выход! до использования данных ключа как вход SHA и там далее возможные варианты дело пока не дошло. нужно пройти вот эти проверки сравнением.. пока - все ps/ никто не задумался - с каким, собственно, ключем мы имеем дело? |
|
Создано: 08 ноября 2007 09:57 · Личное сообщение · #28 могу попросить разобрать ключ и сфоткать.. ПС .. вот фотки ключа... ключ прозрачный для сигналов компорта... cобран на pic12f629 e20f_07.11.2007_CRACKLAB.rU.tgz - DSC00151.JPG |
|
Создано: 08 ноября 2007 10:20 · Личное сообщение · #29 |
|
Создано: 08 ноября 2007 10:33 · Поправил: DMD · Личное сообщение · #30 ToBad пишет: сделай дамп работающей с ключом программы. смысл? целесообразннее идти по шагам: ставить защелки (0хEBFE) в интересующих местах и получать нужные данные/дамп. первый интересный момент 004F1B7D > 8B45 F8 MOV EAX, DWORD PTR [EBP-8]
будем знать какой порт и пр. задействованы в оригинале. второй: 004F1C44 . 6A 07 PUSH 7 ; /Arg1 = 00000007
получим первый кусок данных ключа (и достаточно большой!) и так далее.. |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› Кто нибудь смотрел СhipTuningPro Full Version CТР-3.21 ? Там СОМ ключ. |