Хочу ,конечно, хочу разобраться в защите, А она такая же как в "Трех королевствах"?14.08.01 11:56 Автор: Pavlencio Статус: Незарегистрированный пользователь
Пытался как-то я поломать ее - грузишь прогу Symbol Loader'ом (SoftIce), а прога в него грузится не хочет %(((. Прерваться пробовал где-нить - тоже гимор, потому что если запустить SoftIce до запуска проги - прога наорет, что типа отладчик запущен и пахать не буду. Приходилось поэтому SoftIce запускать во время запуска проги, когда она компакт искала. Прервался я значит - пару call'ов прошел - SoftIce взял и повис (!!!!). Так что сам прикинь сколько гимора с этой защитой будет.
Но если все-таки поломаешь ее - напиши как, очччччень интересно %)).
Копаю вторую неделю, как сломаю обязательно напишу!14.08.01 12:57 Автор: Pavlencio Статус: Незарегистрированный пользователь
Прога "Три королевства", имеет модуль Protect.dll, в котором куча проверок-
sICE (по дескрипторам )- это я обошел, потом модуль смотрит контролькаунт своего кода (естессно не верный, - переход то я поменял :-)) и сообщает о заразе вирем - ну это тоже обошел.
Дальше ,как обычно, GetDriveTypeA() меняю переход, потом CreatFile() и что-то пытается прочитать на компакте(которого нет) и самое хреновое, что этим прочитанным файликом идет помоему расшифровка некоей части кода проги, а дальше я запутался, утонул в переходах...
Вот такие дела. Посоветуй что делать плз.
> Прога "Три королевства", имеет модуль Protect.dll, в > котором куча проверок- > sICE (по дескрипторам )- это я обошел, потом модуль смотрит > контролькаунт своего кода (естессно не верный, - переход то > я поменял :-)) и сообщает о заразе вирем - ну это тоже > обошел. > Дальше ,как обычно, GetDriveTypeA() меняю переход, потом > CreatFile() и что-то пытается прочитать на > компакте(которого нет) и самое хреновое, что этим > прочитанным файликом идет помоему расшифровка некоей части > кода проги, а дальше я запутался, утонул в переходах... > Вот такие дела. Посоветуй что делать плз.
Если за 2 недели удалось только это - лучше все бросить и заняться чем-нибудь еще. Описанная часть тянет на 1 процент от всех уровней защиты (если защита в Королевствах такая же, как и в Казаках). А защиту Казаков я прошел процентов на 70-80.
Если не трудно, запакуй этот protect.dll с разбивкой на части меньше 1 Мб и кинь первую на ukv1@mail.ru (на mail.ru ящик до мегабайта). А то я могу долго рассказывать про прохождение защиты в Казаках, а в Королевствах может оказаться все по-другому.
Общий, наверное, сам принцип - в исполняемом файле отсутствует сегмент кода, который расшифровывается при вызове DllMain из protect.dll. Соответственно расшифровывается и таблица импорта. После расшифровки импорта большая часть ссылок направляется на законное место в системные библиотеки, а некоторые - на тут же сгенерированный код (при этом берется текст нужной фукции из системной библиотеки и засоряется инструкциями типа nop, jmp $+2,mov eax,eax и т.п.). Последний рубеж (с которым я еще толком не разборался) - параметрические вызовы через _DllDispatch уже после всех проверок, во время работы основной программы. По моему ощущению, _DllDispatch расшифровывает первый параметр на стеке и по нему находит реальную вызываемую процедуру.
Вся работа внутри protect.dll сделана так, чтобы затруднить понимание кода и его отладку (используются прямые вызовы функций из ядра через недокументированные точки, большая часть кода выполняется интерпретатором некоторой виртуальной машины, часть вызовов делается через программное деление на 0 с заранее установленным обработчиком исключения, периодически зануляются отладочные регистры, некоторые важные процедуры постоянно перемещаются с места на место, ведется контроль неизменности кода и времени выполнения отдельных частей программы защиты). Однако все это в конечном итоге оказалось вполне проходимым под SoftIce.