Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Казаки (Protect.dll) 14.08.01 14:27 Число просмотров: 3109
Автор: ukv Статус: Незарегистрированный пользователь
|
> Прога "Три королевства", имеет модуль 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.
|
|
|