Доброго времени суток. Подскажите пожалуйста как загрузить драйвер в ХР с созданием ключей реестра, раньше грузил с помощью Syser, но после замекны железа он отказался работать, просто вешает систему и все... Читаю книжку - Руткиты. Внедрение в ядро WINDOWS. Там утилитка для загрузки описана но ее я не нашел да-же в сети... Хочу чтоб драйвер загрузился после перезагрузки системы...
Nextor А что за драйвер? Если драйвер железа, то нужен .inf файл, в нем указывается, скажем, VID/PID. Когда PnP manager увидит, что было подключено железо с этими VID/PID, то сам найдет и загрузит драйвер. Ну а если это просто руткит, без привязки к железу, то консольная утилита "sc" сделает все что нужно. Сначала делаем sc create _parameters_, затем sc start DriverName. Ну или самому загрузчик написать.
1) Существуют как консольные (упомянутая sc), так и гуишные утилиты для загрузки, например DrvLoad.exe, можно найти в сети. Все они используют такие WinAPI как CreateService, StartService и т.д. Можешь сам загрузчик написать, примеров в сети море. 2) Скопировать и создать по аналогии какую-нибудь ветку реестра, грузящую, скажем beep.sys, изменив при этом ImageName и параметры старта драйвера
Nextor Если просто запустить sc без параметров, она выдает подробную справку, как ей пользоваться. Ну или как сказал steelfactor.
Всем спасибо, вопрос решен, помогла статья с сайта, поиск рулит. http://www.wasm.ru/article.php?article=drvw2k02 Пользуясь случаем хочу спросить - возможно ли в BSODe - скрыть имя драйвера. Извините что по ламерски выразился.
#include <windows.h> int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { SC_HANDLE SCManager; SC_HANDLE CreateServis; char DriverPath[MAX_PATH]; char *NamePath; SCManager = OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE); if(SCManager) { MessageBox(0,"Открыли OpenSCManager",0,0); if (GetFullPathName("beep.sys", sizeof(DriverPath), DriverPath, &NamePath))//esp { MessageBox(0,DriverPath,NamePath,0); MessageBox(0,"Получили путь драйвера",0,0); } else return 0; CreateServis = CreateService(SCManager,"beep1","Бип ",SERVICE_START | SERVICE_STOP , SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, DriverPath, 0, 0, 0, 0, 0); if(CreateServis) { MessageBox(0,"Создали Сервис","CreateServis",0); StartService(CreateServis,0,0); DeleteService(CreateServis); CloseServiceHandle(CreateServis); } else MessageBox(0,"Не возможно зарегистрировать драйвер",0,0); CloseServiceHandle(CreateServis); } else MessageBox(0,"Не могу подключиться к менеджеру",0,0); ExitProcess(0); return 0; } Это на си с этой статьи. Теперь у меня бикает и заново не запускается. Хотя я его вроде останавливаю он не выгружается. Мммммммм.
yashechka Пока ничего не использую, на рабочей, живой системе тренируюсь. Буду ставить виртуальную машину и на нее SoftICE... Я раньше (во время учебы) реневерсинжинерингом занимался - в принципе с отладкой немного знаком...
да нахрена сайс то? поставь нормально virtualkd/visualddk и можешь прямо из студии или виндебагом ядерный код отлаживать
стафф тут http://sysprogs.org/ а судя по названию серии студии, то английская ultimate ест такое YCFHQ9DWCYDKV88T2TMHG7BHP ес чо)