Сейчас на форуме: subword, rtsgreg1989 (+9 невидимых) |
![]() |
eXeL@B —› Основной форум —› Алго "0" в Guardant Stealth II от 97-98 г. |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 07 августа 2007 08:50 · Личное сообщение · #1 Hi, [ all ]! ![]() Дано: Программа: Галактика 5.7 Год: 1997-1998. Защита: Guardant Stealth II Используется: - nsk_Transform - nsk_DecGP - Алгоритм "0" - exe-шники ничем на защищены. Суть: Программа разделена на 2-е части. 1 - "клиент", 2 - "сервер". Сервер каждые 2 сек. проверяет заданную у него в настройках "папку" на предмет обнаружения в ней файла с расширением "*.req"(FindFirstFile & FindNextFile). Размер создаваемого клиентом файла "req", 26 байт. Если он есть(файл) - сервер берет по определенным позициям(00h dd = L1, 04h dd = L2) из этого файла данные(2 dd + еще чего-то, надо в кучи листочков смотреть, непомню). НО берется из всего файла около 3 DD. После чего эти данные "прогоняются" через nsk_Transform(длина 0Ch) и пишутся в *.ans файл. При всем этом участвует еще и nsk_DecGP. Код программы написан на Builder 4-5 версий. Использую: - PEiD .94 - IDA 5 - OllyDebuger 1.10 + plugins - DN & HIEW 6 - SDK от Guardant (2002-2004) Так вот, вопросы к уважаемым [ all ]: - Имеет смысл заменить возвращаемые значения из ф-ций Guardant -а, в самой программе, или это не спасет положения? - Какие тулзы посоветуете для раскопки программы? P.S.: ..Просто понимаю, что копаться с ней буду еще долго, но "в пустую" время тратить не совсем хотелось бы. Может кто уже сталкивался с ней.. ![]() |
|
Создано: 07 августа 2007 11:21 · Личное сообщение · #2 |
|
Создано: 07 августа 2007 11:28 · Личное сообщение · #3 |
|
Создано: 07 августа 2007 11:39 · Личное сообщение · #4 |
|
Создано: 07 августа 2007 15:20 · Личное сообщение · #5 |
|
Создано: 07 августа 2007 17:04 · Личное сообщение · #6 |
|
Создано: 07 августа 2007 18:01 · Личное сообщение · #7 |
|
Создано: 08 августа 2007 07:35 · Личное сообщение · #8 |
|
Создано: 08 августа 2007 08:53 · Поправил: st47k3r · Личное сообщение · #9 Larry Ничего се "завалялось"! ..даже спрашивать не хочу откуда это ![]() Пошел изучать .. ![]() ЗЫ: можешь в ПМ или на почту как-то откоментировать, что\для чего можно использовать? _______________________________________________________ ssx Можешь поделиться? ![]() Скоро выложу лог работы.. чет у меня не "клеится" где-то.. А есть у кого-нибудь описание структуры в памяти ключа? Ну, т.е. "что и по каким адресам записано"? А то у меня первые 00-0D ячейки в "дампе" - нули. Хотя в примере от Larry - там даже значения стоят.. ![]() Вот думаю, мож чего "не так"? ![]() ![]() |
|
Создано: 08 августа 2007 08:58 · Личное сообщение · #10 Лог работы "оригинального ключа". Снято - GiA Logger 2.1 ![]() ![]() |
|
Создано: 08 августа 2007 17:39 · Поправил: st47k3r · Личное сообщение · #11 Выкладываю минимальный набор для запуска. Кто будет смотреть - прошу озвучивать мысли! ![]() хттп://rapidshare.com/files/47720171/_galaxy.zip кто сможет помочь с запуском эмуля GiA Emulator 2.7? Хочу им попробовать. Почему-то CHKNSKW.EXE не хочет видеть ключ, после установки эмуля ![]() Пишет "CRC error in ChkNSK". Я не понимаю, что ему не нравиться. ![]() И еще: кто-нить может объяснить, почему у меня в дампе ключа адреса 00-0D = dup(00) ? ![]() |
|
Создано: 08 августа 2007 18:42 · Личное сообщение · #12 таки фсе-таки ключег заказной.... st47k3r пишет: А есть у кого-нибудь описание структуры в памяти ключа? Ну, т.е. "что и по каким адресам записано"? У тя ж СДК в инструментах названо... st47k3r пишет: И еще: кто-нить может объяснить, почему у меня в дампе ключа адреса 00-0D А чем дампил? Логгером. Там дамп не полный снимаецца, соответственно утилита обламываеца с ключем ![]() |
|
Создано: 08 августа 2007 18:59 · Поправил: st47k3r · Личное сообщение · #13 |
|
Создано: 08 августа 2007 18:59 · Поправил: st47k3r · Личное сообщение · #14 bitgame Я нашел уже, спасибо! ![]() Но почему там пусто? Это из-за "заказного" ключа? И как это "лечить"? ( точнее - оно вообще, в принципе, - лечиться? ) ![]() Дампил разными: - guardant dumper by infern0 - LzDumper - GDDMP - nxdump все создали одно и тоже. Некоторые "высказались" - что Алго 0 есть, и некоторые к этому добавили что юзает GD(или GP, как его там?) ![]() |
|
Создано: 08 августа 2007 19:01 · Поправил: Ara · Личное сообщение · #15 |
|
Создано: 08 августа 2007 19:07 · Поправил: st47k3r · Личное сообщение · #16 |
|
Создано: 08 августа 2007 19:07 · Поправил: st47k3r · Личное сообщение · #17 Ara Просто "тупо" с эмулить ключ, чтоб работало все тоже самое, но на "виртуалке"(Virtual Server 2005 R2) ![]() И все. Никаких лицензий НЕ НАДО!. Уже даже то, что есть - почти не используется. Мне просто надо освободить "железку"(HW) из под "умирающей, но пока еще раз-от-разу использующейся" галактики. ![]() Что бы если не нужна стала, взял "снял образ" с виртуалки, остановил ее - и в "нафталин" запихнул его(бэкап). Если вдруг потребовалось - запустил образ виртуалки на виртуальном сервере и все - люди посмотрели что им надо, сделали; выключил, и опять в нафталин. А то приходиться держать ради нее отдельную "железку".. ![]() Вот чего и стал ее "копать" - "как бы ее".. ![]() ![]() |
|
Создано: 08 августа 2007 19:23 · Личное сообщение · #18 |
|
Создано: 08 августа 2007 19:23 · Поправил: st47k3r · Личное сообщение · #19 |
|
Создано: 08 августа 2007 21:54 · Поправил: st47k3r · Личное сообщение · #20 |
|
Создано: 08 августа 2007 23:34 · Личное сообщение · #21 |
|
Создано: 08 августа 2007 23:41 · Поправил: st47k3r · Личное сообщение · #22 |
|
Создано: 09 августа 2007 00:18 · Поправил: bitgame · Личное сообщение · #23 У тебя ж логи есть. В них видно, что прога хочет иметь от "ключа" чтоб запустица... Если трудности, могу слепить memory для Хирургова муля (ты его хотел пробовать), но только SN будет мой ... и ID тоже ![]() Забыл... Забавно выглядит дамп алго0, который Larry выкладывал. У тебя search нечто подобное снял? ![]() |
|
Создано: 09 августа 2007 00:27 · Личное сообщение · #24 |
|
Создано: 09 августа 2007 00:30 · Личное сообщение · #25 |
|
Создано: 09 августа 2007 00:32 · Поправил: bitgame · Личное сообщение · #26 |
|
Создано: 09 августа 2007 20:24 · Личное сообщение · #27 Когда-то давно, лет 5-6 назад, мне довелось бороться с Галактикой (Г) как раз версии 5.7. Механизм проверки ключа там такой. 1. Г генерирует два псевдослучайных DWORDа (8 байтов) и записывает их в REQ-файл (со смещения 0). 2. Сервер читает эти 8 байтов и выполняет над ними nskTransform (размер блока преобразуемых данных 12 байтов, но значимые из них только 8). 3. Из 12-тибайтного ответа сервер берет опять-таки 8 байтов и пишет их в ANS-файл (со смещения 1). 4. Г вычисляет правильный ответ (дескрипторы алгоритма хранятся в LIC-файле почти открыто, только слегка поXORенные), читает фактический ответ из ANS-файла и, естественно, сравнивает их. Вызов nskDecGP идет только при использовании запасного ключа (с ограничением по числу запусков), над основным ключом эта операция не делается, на нее можно не обращать внимания. Таким образом, потенциально существуют, как минимум, 3 варианта обхода защиты. 1. Эмуляция ключа (сервер и Г остаются нетронутыми). Проблема: табличная эмуляция не прокатит, а полнофункциональные эмуляторы широкой общественности недоступны. 2. Замена сервера программой-эмулятором (которая, не обращаясь к ключу, будет вычислять правильный ответ и писать его в ANS-файл). Проблема: нужно знать алгоритм вычисления правильного ответа. Его в сервере нет, он есть в Г, но хранится там в виде bin-кода (условно называю так код, который получается в результате компиляции программы, написанной на внутреннем языке Г). Вытянуть алгоритм из bin-кода достаточно сложно и трудоемко. Маститые донгловеды типа Larry наверняка знают алгоритмы Transformа и без реверсинга "галактического" bin-кода; мне они, увы, не покорились. 3. Патч Г (чтобы сравнение правильного и фактического ответов всегда давало положительный результат). Проблема: это сравнение тоже хранится в bin-коде, см. предыдущий пункт. Возиться тогда пришлось долго. В итоге состоялся 3-ий вариант (хотя, насколько мне известно, в более поздних версиях появилась проверка bin-кода на целостность, и его так просто уже не пропатчить). За подробностями в ЛС. ![]() |
|
Создано: 09 августа 2007 21:29 · Личное сообщение · #28 Prober пишет: полнофункциональные эмуляторы широкой общественности недоступны уже доступны, но: Prober пишет: Маститые донгловеды типа Larry наверняка знают алгоритмы Transformа... Судя по дампам алго0 это не простой алго стелса - попахивает заказным ключегом(да и не могли программеры галахтики, будь они хоть скольки пядей во лбе знать в 97 годе сикрет-алгоритм гварданта), т.ч. без реверснутого "галактического" bin-кода; замулить будет проблематишно А вариант табличный муль + патчинг не рассматривался тобой? ![]() |
|
Создано: 09 августа 2007 23:29 · Поправил: st47k3r · Личное сообщение · #29 Prober: да. Я уже с этим столкнулся.. ![]() мм.. опыту у меня нет в таких "стезях", как "псевдо-код"(bin-код).. Пойду, попробую "на зуб".. ![]() ________________________________ bitgame: Рассматривать пытаюсь все варианты, просто начинать стараюсь не с "красивых решений", а с тех которые "попроще".. хотя - се "уперлось" в "клиента" галактики. Сервер "по-сути", почти не причем. Завтра попробую "собрать" минимальный "набор" для запуска клиента..(хм.. учитывая то, что я в "Галактике" - как свин в апельсинах. Ну. Посмотрим, что получиться! ![]() По крайней мере, зная структуры пакетов(файлов) req-ans, хоть примерно представляю что искать буду ![]() О продвижении буду отписываться.. ЗЫ: .. ниче.. зубы только сниснем крепче.. ![]() ________________________________ Prober Какими инструментами рекомендуешь воспользоваться? И что можно ждать от нее? ![]() |
|
Создано: 10 августа 2007 13:49 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Основной форум —› Алго "0" в Guardant Stealth II от 97-98 г. |