Собственно в программирование на ассемблере я не новичок(хотя и до уверенного в себе кодера мне топать и топать). Однако эту тему написал в BEGINNERS, ибо вопрос ламерский(имхо). Дано: кодер-ламер в Ring-0(то есть я) без DDK(достать никак, скачать тоже - ссылки есть, инета мало) + MASM32 Задача: написать ДРАЙВЕР(именно драйвер) который будет делать что-нить ламерское(а ля hello world). Но тут для меня главное не цель, а средства, то есть ЧТО нужно иметь(если нету DDK) чтобы написать хотя бы какой-нибудь драйвер, запустить его ну и выгрузить собственно... Под вопросом ЧТО я понимаю как Soft так и различные хелпы, туториалы, маны, доки и прочее... Кто готов учить ламера? P. S. Я прекрасно понимаю трогательную любовь форумцев в google.com и прочим поисковикам. Так вот - там я был... Почти ничего полезного не нашел... Так что послать меня можно только на {self censored}, но никак не в гугл...
достаточно только фасма и KmdManager.exe чтоб загрузить драйвер сохранить как hello.bat, компилировать двойным кликом по bat файлу Код (Text): ;@echo off ;goto make format PE native 4.0 at 10000h entry DriverEntry include '%fasminc%\MACRO\PROC32.INC' STATUS_UNSUCCESSFUL = 0C0000001h section '.text' code readable executable notpageable DriverEntry: ; pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING ; int3 cinvoke DbgPrint, sz mov eax, STATUS_UNSUCCESSFUL ; драйвер будет сразу выгружен retn 2*4 section '.rdata' data readable notpageable ntoskrnl_import_address_table: DbgPrint dd rva _DbgPrint dd 0 ; section '.data' data readable writeable notpageable sz db "Hello, World!",0Dh,0Ah,0 section 'INIT' import code readable writeable executable discardable dd rva ntoskrnl_import_lookup_table,0,0,rva ntoskrnl_name,rva ntoskrnl_import_address_table dd 0,0,0,0,0 ntoskrnl_import_lookup_table: dd rva _DbgPrint dd 0 _DbgPrint dw 0 db 'DbgPrint',0 ntoskrnl_name db "ntoskrnl.exe",0 section '.reloc' data fixups readable discardable ;:make ;SET PROJECTNAME=hello ;if exist %PROJECTNAME%.sys del %PROJECTNAME%.sys ;C:\Fasm\fasm.exe %PROJECTNAME%.bat ;pause ;cls