Хай Качнул из KmdKit утром прога работала на УРА! А минут пять назад решил ее глянуть под олли, ну интересно мне стало как ты вызывашь DeviceIoControl. Ну так вот после она персатала запскаться и выдает сообещение "Can`t register driver" Я опять за Олли, и в месте: Код (Text): 0040158D |. 50 PUSH EAX ; |BinaryPathName 0040158E |. 6A 00 PUSH 0 ; |ErrorControl = SERVICE_ERROR_IGNORE 00401590 |. 6A 03 PUSH 3 ; |StartType = SERVICE_DEMAND_START 00401592 |. 6A 01 PUSH 1 ; |ServiceType = SERVICE_KERNEL_DRIVER 00401594 |. 68 30000100 PUSH 10030 ; |DesiredAccess = SERVICE_START|SERVICE_STOP|10000 00401599 |. 68 9C204000 PUSH IdtDump.0040209C ; |DisplayName = "Interrupt Descriptor Table Dumper" 0040159E |. 68 80274000 PUSH IdtDump.00402780 ; |ServiceName = "IdtDump" 004015A3 |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; |hManager 004015A6 |. E8 2B020000 CALL <JMP.&advapi32.CreateServiceA> ; \CreateServiceA 004015AB |. 0BC0 OR EAX,EAX Она ,АПИшка, стала давать в eax Нуль, а вот LastErr показывает что все это ERROR_SERVICE_EXISTS (00000431) Я как понял, у меня прога в первый раз когда я хотел глянуть на DeviceIoControl, неправильно сработала под Олли и не правильно выгрузила драйвер, в результате ЭТО, но что щас то делать? ))
Правильнее всего подрихтовать исходник екзешника, чтобы он при старте проверял, а не запущен/зарегистрирован ли уже драйвер. Например, как в KmdKit\examples\advanced\KbdSpy\exe сделано. Или в KmdManager кинуть и жать Stop и Unregister. PS: А зачем Олли то? Исходники же есть.
EvilsInterrupt это решается так: Код (Text): invoke CreateService, hManager, addr szServiceName, addr szDisplayName, SERVICE_START or SERVICE_STOP, SERVICE_KERNEL_DRIVER, SERVICE_AUTO_START, ; or DELETE SERVICE_ERROR_IGNORE, addr szDriverPath, NULL, NULL, NULL, NULL, NULL mov hService, eax .if (!eax) invoke GetLastError .if (eax==ERROR_SERVICE_EXISTS || eax==ERROR_DUPLICATE_SERVICE_NAME) invoke OpenService, hManager, addr szServiceName, SERVICE_ALL_ACCESS mov hService, eax .endif .endif
Four-F >PS: А зачем Олли то? Исходники же есть. Ну потом сообразил, да исходник реальную инфу не паказывает, а у тебя он не запакован и в на асме писан! был бы на си не стал бы, глазеть, хрен в коде разберешься