|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 8, 2003 13:34:35 Кто может объяснить, как это сделать |
|
|
Дата: Сен 8, 2003 21:55:23 Кстати, весьма интересный вопрос !.. :) Я не знаю как это заделать, но похоже надо лепить стандартный PE (с мелким выравниванием секций), а потом переименовывать в *.sys ... однако это не фонтан, конечно ... хотел было примеры из статей Four-F переделать под fasm, но до сих пор руки не дошли ;) ... |
|
|
Дата: Сен 9, 2003 08:38:07 Вот типа простейший драйвер format PE native 4.0 entry start STATUS_DEVICE_CONFIGURATION_ERROR equ 00C0000182h section ".section" code data readable writeable executable start: mov ecx, 880000000 _loop: dec ecx jnz _loop mov eax, STATUS_DEVICE_CONFIGURATION_ERROR ret 8 Странно, но драйвер этот не хочет работать, хотя всё правильно написано... |
|
|
Дата: Сен 9, 2003 13:31:34 В MASM-овом драйвере кака-то секция INIT есть, видать в ней как раз и находится код, исполняющийся при загрузке |
|
|
Дата: Сен 10, 2003 11:15:33 Ну и смешная штука этот fasm :-) Чего народ на нем сидит... В общем проблемы три: CRC, флаг подсистемы окружения, релоки. CRC и флаг подсистемы окружения (поставить Native) придется пофиксить вручную в PE-editore, т.к. фасм не позволяет этим управлять. Чтобы фасм добавил релоки пришлось ввести фейковую строку. После этого драйвер запускается. format PE GUI 4.0 DLL
entry DriverEntry
include '%include%\win32a.inc'
STATUS_DEVICE_CONFIGURATION_ERROR equ 0C0000182h
section '.code' code readable executable
proc DriverEntry, pDriverObject, pusRegistryPath
enter
int 3
lea eax, [_text]
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
return
section '.data' data readable writeable
_text db 'bla-bla', 0
section '.reloc' fixups readable data discardable |
|
|
Дата: Сен 10, 2003 12:38:57 Да, CRC я уже догадался подправить, драйвер запустился, причём ещё и без релоков. Ну вообще FASM развивается, может скоро появятся такие вещи, как объединения, sizeof(размер структуры определять) , массивы, UNICODE строки, подключение .res файлов, ... и можно будет на нём серьёзные вещи писать, в том числе и драйверы. |
|
|
Дата: Сен 10, 2003 16:11:15 Я когда-то тоже с этим сталкивался, но не стал заморачиваться с ручной правкой и т.п, сделал так: format MS COFF section '.text' code readable executable extrn '__imp__IoCreateSymbolicLink@8' as IoCreateSymbolicLink:dword extrn '__imp__IoDeleteSymbolicLink@4' as IoDeleteSymbolicLink:dword extrn '__imp__IoCreateDevice@28' as IoCreateDevice:dword extrn '__imp__IoDeleteDevice@4' as IoDeleteDevice:dword extrn '__imp__IoCompleteRequest@8' as IoCompleteRequest:dword extrn '__imp__MmIsAddressValid@4' as MmIsAddressValid:dword extrn '__imp__MmAllocateContiguousMemory@12' as MmAllocateContiguousMemory:dword extrn '__imp__MmGetPhysicalAddress@4' as MmGetPhysicalAddress:dword public _Driver_entry _Driver_entry: enter 4, 0 Короче, линкуем это с пощью ms link. Не совсем то, что нужно, но все же. 2dragon: Драйвер без релоков будет работать только, когда в нем нет данных и, соответственно, настройка адресов не требуется. |
|
|
Дата: Сен 15, 2003 03:04:01 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065 |