PDA

Просмотр полной версии : Регистрация службы из драйвера вручную


spider-intruder
16.02.2008, 18:48
Столкнулся с такой проблемой.
Драйвер должен зарегистрировать службу.
(если кто знает как из драйвера заюзать SCM еще лучше)

Пишу в реестр:

HANDLE hkey=NULL;
OBJECT_ATTRIBUTES oa1;
UNICODE_STRING RegistryKey;
UNICODE_STRING DNP,valname1,valname2,valname3;

WCHAR DN[15]=L"LSecure Service"; //display name
RtlInitUnicodeString(&DNP, L"DisplayName");

ULONG value1=2;
RtlInitUnicodeString(&valname1, L"Start");

ULONG value2=32;
RtlInitUnicodeString(&valname2, L"Type");

ULONG value3=1;
RtlInitUnicodeString(&valname3, L"ErrorControl");

WCHAR path[16]=L"c:\\lservice.exe"; //display name
RtlInitUnicodeString(&Ppath, L"ImagePath");

RtlInitUnicodeString(&RegistryKey, L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Se rvices\\LSecure");
InitializeObjectAttributes(&oa1, &RegistryKey, OBJ_CASE_INSENSITIVE, NULL, NULL);
status = ZwCreateKey(&hkey,KEY_WRITE, &oa1, 0, NULL,REG_OPTION_NON_VOLATILE,NULL);
ZwSetValueKey(hkey, &DNP, 0, REG_SZ, &DN, sizeof(DN));
ZwSetValueKey(hkey, &valname1, 0, REG_DWORD, &value1, sizeof(ULONG));
ZwSetValueKey(hkey, &valname2, 0, REG_DWORD, &value2, sizeof(ULONG));
ZwSetValueKey(hkey, &valname3, 0, REG_DWORD, &value3, sizeof(ULONG));
ZwSetValueKey(hkey, &Ppath, 0, REG_EXPAND_SZ, &path, sizeof(path));
ZwClose(hkey);
return status;


В реестре с виду все нормально.
Но когда делаю net start LSecure - вываливается с ошибкой. Файл не найден

Может я не правильно пишу REG_EXPAND_SZ

bons
17.02.2008, 15:23
для того чтобы установить службу мало добавить ее в реестр, надо еще зарегистрировать в SCM. Как это делать из ядра я точно не знаю, но возможно тебе поможет эта статья:
_http://www.rootkit.com/newsread.php?newsid=419

если это все же обязательно должно быть инициировано из ядра то можно создать юзермодную APC, которая регистрирует эту службу.

Piflit
17.02.2008, 15:32
тутор от Four-F почитай

bons
17.02.2008, 17:28
Four-F пишет, что SCM регистрирует службы сразу после загрузки винды.
Т.е. если добавить в службу реестр и перезагрузить то она будет установлена.

Правда надо еще добавить REG_SZ с именем ObjectName и значением LocalSystem
тогда твой код будет работать

Nova
17.02.2008, 18:00
пиздец.. Jes на*** ты удаляешь мои посты ?
КЕЗ не кипятись мои посты тоже удаляют =(

bons
20.02.2008, 18:53
Проблема все же решилась или нет?

spider-intruder
21.02.2008, 11:03
Конечно решилась.