Идеальным вариантом будет на Ассемблере, но тогда не знаю как применить привелегию по выгрузке системных драйверов - SE_LOAD_DRIVER_NAME.
NtUnloadDriver -> IopUnloadDriver -> Код (Text): if (!SeSinglePrivilegeCheck( SeLoadDriverPrivilege, requestorMode )) { return STATUS_PRIVILEGE_NOT_HELD; }
Код (Text): Local Privilege:ULONG invoke RtlAdjustPrivilege, SE_LOAD_DRIVER_PRIVILEGE, TRUE, FALSE, addr Privilege
Если на масме то удобно макрос юзать. Код (Text): ADJUST_PRIVILEGE macro Privilege push eax ;Privilege push esp push FALSE push TRUE push Privilege Call RtlAdjustPrivilege lea esp,[esp + 4] endm
ЭЭЭЭ... может вопрос не выдал моего уровня ... давайте так ... Я могу в готовый PE файл встроить сегмент. Так вот, какие прыжки и где нужно поставить я в курсе, чтобы EXE-шник работал как и прежде. Мне нужен код который с необходимыми привелегиями выгружает драйвер <название драйвера>.
Непонятно что нужно. Винапи вроде достаточно(OpenService/ControlService/DeleteService). Всёравно NtUnloadDriver будет вызван, тока в контексте services.exe
Я просто не такой уж и програмист ... Я прост не умею пользоваться этими ВинАПИшными функциями, т.е. ничего рабочего пока что не написал. Ни на с++, ни уж тем более на Ассемблере. Но задачку придумал вполне конкретную выгрузить из памяти конкретный драйвер програмной вкладкой. Со вкладками разобрался, а вот как выгрузить драйвер - не знаю.
Хм .. а по-русски ... мне бы код к разбору по выгрузке драйвера системного на ассемблере.. простите наглость ))) Но сча сижу тока с мобилы и каждый выход в инет по роумингу встает в копеечку ...