Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Возможный выход... 20.04.04 18:34 Число просмотров: 2908
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 20.04.04 18:40 Количество правок: 1
|
То что это служба, плохо... Ну да ладно. Если это простая служба (не драйвер ядра), то могут помочь следующее:
1) Определиться (под отладчиком), где в коде происходит проверка на "серверность" системы. Это хорошо,что служба выводит окно с предупреждением — можно подключиться к процессу и тщательно его исследовать. Работающий процесс это уже распакованный исполняемый код.
2) Написать программу-стартер, которая запускает эту службу, и "усыпляет" её поток, после чего ищет место проверки, патчит его как надо, используя Read/WriteProcessMemory(), потом пробуждает поток... Вуаля!
Есть грабли — стартер должен успеть остановить основной поток службы до проверки... Впрочем отладка служб — это ещё тот гемор... ;-) Но есть ходики... Вот что пишет microsoft по этому поводу —
Windows NT also allows you to specify a debugger to use when starting a program. Create a key called Image File Execution Options in the following registry location:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Create a subkey with the same name as your service (for example, MYSERV.EXE). To this subkey, add a value of type REG_SZ, named Debugger. Use the full path to the debugger as the string value. In the Services control panel applet, select your service, click Startup and check Allow Service to Interact with Desktop.
Borland для отладки служб ещё рекомендует это:
On Windows NT systems, you can use another approach for debugging service applications. However, this approach can be tricky, because it requires short time intervals:
1 First, launch the application in the debugger. Wait a few seconds until it has finished loading.
2 Quickly start the service from the Control Panel or from the command line:
start MyServ
You must launch the service quickly (within 15-30 seconds of application startup) because the application will terminate if no service is launched.
Т.е. можно написать "отладчик", который и будет делать всё, о чём мы тут говорили. Дождаться "распаковки" исполняемого кода можно, к примеру, по попытке загрузки определённой библиотеки в адр. пространство процесса (нужную можно определить экспериментално).
Успехов.
|
|
|