|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 28, 2004 19:02:49 А можно еще вопрос (про Transform) ? У меня (я vxd смотрю, а не sys) как-то немного по-другому это выглядит: Ну оно у меня тоже не так выглядело когда разбирал, пришлось в алго просто вникнуть и написать самому. факт то что результат один и тотже. |
|
|
Дата: Июл 29, 2004 09:19:45 HarmEr И (если можно) еще один. Тогда верно ли я понимаю, что возможно получить табличную эмуляцию transform-2, если накопить достаточно пар (порядка 128 штук, видимо) 4-х байтных пар encrypted/decrypted, которые выдает функция 3d и перебрать все варианты 39 бит, фильтруя этими парами ? Перебор возможно улучшить чем-то подобным алгоритму обращения crc (анализ последнего бита - был ли xor на последнем шаге). |
|
|
Дата: Июл 29, 2004 09:58:48 У меня вопрос не к гуру , а к тем , кто пытается снять envelope без ключа и пока не знает как. Вопрос может быть глупый , поэтому заранее прошу прощения. Кто-нибудь пытался разобратьcя с утилитой instw32.exe от Aladdin , в которой наверняка лежит часть алгоритма envelope. Мне кажется многое подскажет анализ ее кода. |
|
|
Дата: Июл 29, 2004 11:40:56 · Поправил: infern0 но в случае с эмулятором Глаши это были просто понты , потому что кейген никому ничего не дал - без EdStruct генератора это просто бесполезная вещь , поэтому по логике тебе надо довести дело до конца . Cможешь ? Это были не понты, это было показательное выступление. (я имею в виду сырцы на fasm). Хотя сейчас, когда смотрю на все спокойно, я бы не стал этого делать. У меня есть решение, так что смогу. А надо-ли ? |
|
|
Дата: Июл 29, 2004 11:43:18 Кто-нибудь пытался разобратьcя с утилитой instw32.exe от Aladdin я пытался, но завяз в коде ВМ, который занимает 40% места, и содержит 4 или 5 функций, причем выжных из них, как я понял, одна. |
|
|
Дата: Июл 29, 2004 12:50:34 И (если можно) еще один. Тогда верно ли я понимаю, что возможно получить табличную эмуляцию transform-2, если накопить достаточно пар (порядка 128 штук, видимо) 4-х байтных пар encrypted/decrypted, которые выдает функция 3d и перебрать все варианты 39 бит, фильтруя этими парами ? Перебор возможно улучшить чем-то подобным алгоритму обращения crc (анализ последнего бита - был ли xor на последнем шаге). Без знания алгоритма таблицу не построить со знанием алгоритма достаточно знать всего 1 валидный ответ. Еще один можно знать для изыбточности(дополнительной проверки.) |
|
|
Дата: Июл 29, 2004 12:54:43 У меня вопрос не к гуру , а к тем , кто пытается снять envelope без ключа и пока не знает как. Вопрос может быть глупый , поэтому заранее прошу прощения. Кто-нибудь пытался разобратьcя с утилитой instw32.exe от Aladdin , в которой наверняка лежит часть алгоритма envelope. Мне кажется многое подскажет анализ ее кода. я его весь разобрал. Но если ты хочешь отыскать там явый алгоритм(как фиксит с метео нашли алго генерации ST из паролей в 1999) позволяющий все снять, то уверяю тебя его там нет. Снять конверт можно только найдя дыру в реализации шифрования. И зная алго шифрования 3С/3D |
|
|
Дата: Июл 29, 2004 14:51:41 2 infern0 : "У меня есть решение, так что смогу. А надо-ли ? " Конечно надо , хотя если его отдавать в public access , то сильно засуетиться Aladdin , это же по сути пинок под зад всем его криптографам. Решение вам подсказали сырцы , которыми поделился с вами MeteO или сами задачу решили ? 2 Harmer: Если я вас правильно понял , то алгоритм построен по архитектуре сетей Файстеля, а ключ (dongle) выполняет функцию гаммирования ,без знания которой исследование instw32 в принципе бесполезно. |
|
|
Дата: Июл 29, 2004 17:31:21 2 man0war Совершенно верно. |
|
|
Дата: Июл 30, 2004 12:02:24 HarmEr Спасибо. Ты верно сказал, но я все же проверил. Оказывается, для проверки того, что Trnasform2 - не 256-ти (или меньше) битовая таблица подстановок, достоточно около 10 пар 4-х байтовых. Видимо, это говорит о том, что на каждом шаге transform2 меняет Key. Кстати, я тут еще в аксусе нашел такой код, но, видимо, он относится к обмену между ключом и драйвером: ; Подпрограмма 00012C50 ; Участвует в преобразовании f 3d: первая часть: 4 bytes->new 4 bytes ; Например: 4FB3A179h -> 284F580Dh 00012C50: 55 push ebp 00012C51: 8B44240C mov eax,[esp][0C] 00012C55: 8BEC mov ebp,esp 00012C57: 83EC04 sub esp,004 00012C5A: 85C0 test eax,eax 00012C5C: 53 push ebx 00012C5D: 56 push esi 00012C5E: 57 push edi 00012C5F: 7456 je .000012CB7 00012C61: 8B7510 mov esi,[ebp][10] 00012C64: 8B7D14 mov edi,[ebp][14] 00012C67: 8945FC mov [ebp][-04],eax 00012C6A: 32D2 xor dl,dl 00012C6C: BB04000000 mov ebx,000000004 00012C71: 668B0E mov cx,[esi] 00012C74: 02D2 add dl,dl 00012C76: F6C101 test cl,001 00012C79: 741B je .000012C96 00012C7B: 668B07 mov ax,[edi] 00012C7E: 80CA01 or dl,001 00012C81: 6633C1 xor ax,cx 00012C84: 668906 mov [esi],ax 00012C87: 66C1E801 shr ax,001 00012C8B: 668906 mov [esi],ax 00012C8E: 80CC80 or ah,-080 00012C91: 668906 mov [esi],ax 00012C94: EB07 jmps .000012C9D 00012C96: 66C1E901 shr cx,001 00012C9A: 66890E mov [esi],cx 00012C9D: 02D2 add dl,dl 00012C9F: F60680 test b,[esi],080 00012CA2: 7403 je .000012CA7 00012CA4: 80CA01 or dl,001 00012CA7: 4B dec ebx 00012CA8: 75C7 jne .000012C71 00012CAA: 8B4508 mov eax,[ebp][08] 00012CAD: FF4508 inc d,[ebp][08] 00012CB0: 3010 xor [eax],dl 00012CB2: FF4DFC dec d,[ebp][-04] 00012CB5: 75B3 jne .000012C6A 00012CB7: 5F pop edi 00012CB8: 5E pop esi 00012CB9: 5B pop ebx 00012CBA: 8BE5 mov esp,ebp 00012CBC: 5D pop ebp 00012CBD: C21000 retn 00010 Все же проверю, что это не transform2. |
|
|
Дата: Июл 30, 2004 15:59:52 Код несомненно интересный, я его даже раньше не заметил, но это не "трансформ".
void test(
BYTE *ptr0,
int cnt,
WORD *ptr1,
WORD *ptr2
)
{
int i;
BYTE n;
for( ; cnt; --cnt, ++ptr0 )
{
for( n = 0, i = 4; i; --i )
{
n <<= 1;
if( *ptr1 & 1 )
{
n |= 1;
*ptr1 ^= *ptr2;
*ptr1 >>= 1;
*ptr1 |= 0x8000;
}
else
{
n <<= 1;
*ptr1 >>= 1;
}
n |= !!( *ptr1 & 0x80 );
}
*ptr0 ^= n;
}
}
|
|
|
Дата: Авг 3, 2004 12:04:09 HarmEr Вытаскиваю тут потихоньку transform (аттач). Брр ! Чем вы его смотрели ?! Я в hiew задолбался разбирать эти куски. Такое впечатление, что код разбили на куски, кускам присвоили произвольные веса и построили хитросвязанное двоичное дерево. Уже нашел команды in/out. Видимо, мне удасться получить "чистый" алгоритм чтения ключа (не сам 3d), без драйверов и прерываний. 2115186499__hardlock.txt |
|
|
Дата: Авг 3, 2004 15:01:11 · Поправил: HarmEr Вытаскиваю тут потихоньку transform (аттач). Брр ! Чем вы его смотрели ?! Я в hiew задолбался разбирать эти куски. Такое впечатление, что код разбили на куски, кускам присвоили произвольные веса и построили хитросвязанное двоичное дерево. Уже нашел команды in/out Писали скрипт пошагового анализатора для иды(с сохранением трейсировки в файл) + скрипт на перле, для оптимизации переходов и востановления логики. На разбор ВСЕГО драйвера ушло не больше недели. пока один человек чистил, второй тутже переписсывал на "С". Примерно 2-3к в час. Я бы тебе посоветовал взять простинький движок дизасемблера в сырцах, и прикрутить к нему анализатор (сразу после декодера команд), было бы гораздо быстрее, благо не очень уж тут сильный обсфускатор. Достаточно глубины в 5 команд, чтобы все правильно разобрать. |
|
|
Дата: Авг 6, 2004 02:00:08 HarmEr Сенькс. К сожалению, для меня пока это слишком - писать такую автоматизацию - я только с полгода назад начал использовать hiew. Хотя к этому надо стремиться. А вот тут я уже налетел на код, шныряющий по таблицам переходов (аттач). Как я понял, может быть главная таблица переходов и несколько подчиненных или же просто цепь. Каждая таблица может содержать адреса кусков кода, которые передают управление согласно таблице (указатель в esi), параметры (смещения в локальном буфере - lea esp,[esp-70h]) и dd-билеберду в виде признака окончания таблицы. Вроде как я нашел три таблицы, последняя содержит подкод возврата (xor eax,eax - xchg eax,[esp] - jmp eax). Пока не вижу другого решения кроме как выписать из таблиц адреса кусков кода, выдернуть их и "склеить". 881045027__walk_tables.txt |
|
|
Дата: Авг 6, 2004 18:02:33 _Chingachguk_ Это виртульная машина, vIntel. Ана мне понравилась больше всего (так и не удалось оптимизировать ее разбор). Каждый переход это указатель на функцию эмуляции команды. Прокоментируй точки входа, и увидишь весь код. Там штук 70 таких функций. Это протокол шифрования между драйвером и приложением. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.082 |