1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Кто писал драйвер на смеси кода asm (64 бит) + Си используя DDK

Тема в разделе "WASM.NT.KERNEL", создана пользователем PROFi, 30 авг 2007.

  1. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Вопрос: Имеется часть кода на Си, и часть на асме (64 бит). Необходимо слинковать все это добро в один файл используя средства DDK (т.е. используя build). Как настроить файлы sources и makefile чтобы все линковалось в один файл драйвер.
    PS: Крайне благодарен буду если ответ в виде исходников (каких не важно) главное чтобы собирались build -csZ и желательно были 64 бита.
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    makefile как обычно
    sources:
    Код (Text):
    1. TARGETNAME=<name>
    2. TARGETPATH=<path>
    3. TARGETTYPE=DRIVER
    4.  
    5.  
    6. AMD64_SOURCES=<asmx64module>.asm
    7. I386_SOURCES=<asmx86module>.asm
    8.  
    9. SOURCES=test.c
    в головной дире делем 2 поддиры AMD64 и I386 в них кладём
    к примеру modx64.asm и modx86.asm соответственно. Для примера получим кросплатформенное получение регистра cr0.
    PROFi.c:
    Код (Text):
    1. #include <ntddk.h>
    2.  
    3. extern DWORD_PTR GetCr0();
    4.  
    5. NTSTATUS
    6. DriverEntry(
    7.             IN PDRIVER_OBJECT   pDrvObj,
    8.             IN PUNICODE_STRING  pusRegPath)
    9. {
    10.  
    11.     DbgPrint("%p", (PVOID) GetCr0());
    12.     return STATUS_DEVICE_CONFIGURATION_ERROR;
    13. }
    modx64.asm:
    Код (Text):
    1. public GetCr0
    2.  
    3. .code
    4. GetCr0:
    5.     mov rax, cr0
    6.     ret
    7. end
    modx86.asm:
    Код (Text):
    1. .386
    2. .model flat
    3. public _GetCr0@0
    4. .code
    5. _GetCr0@0:
    6.     mov eax, cr0
    7.     ret
    8. end _GetCr0@0
    буду рад если съекономил время
    ЗЫ если пользуешься аськой и есть желание общаться на тему драйвер девелопмента можешь написать мне, ато спецов катастрофически не хватает
    чуть не забыл атач
     
  3. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.218
    Адрес:
    Ukraine
  4. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    rain
    Спасибо, за ответ, но уже и сам разобрался. Т.е. смущало AMD64_ххх, но теперь все в порядке. А за аттач (name) отдельно спасибо :), но вот только в 64 битах
    Код (Text):
    1. .endprolog          ; пролог закончен
    В нем не хватает, чтобы использовать в полную... А так все просто, собственно, собрать отдельными коммандами получалось, а вот с build работаю недавно..


    Разработкой драйверов занимаюсь около 4-5 лет, а вот работу в привелегированном режиме процессора, и прямой работой с аппаратурой уже около 10 лет. Собственно и драйверы стал разрабатывать чтобы добраться до ring 0, потому тема написания драйверов не весьма интересна, это лишь обертка.
     
  5. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    422
    У меня не работает. Пишет: NMAKE : fatal error U1073: don't know how to make .......objfre_win7_amd64\amd64\overflow.obj'
    Код (Text):
    1. TARGETNAME=driver
    2. TARGETPATH=obj
    3. TARGETTYPE=DRIVER
    4.  
    5. BUFFER_OVERFLOW_CHECKS=0
    6. USER_C_FLAGS=/FAs
    7. INCLUDES=..\inc
    8.  
    9. SOURCES=$(TARGETNAME).c \
    10.   $(TARGETNAME).rc
    11.  
    12. AMD64_SOURCES=OverFlow.asm
    13.  
    Подскажите, пожалуйста, что ещё нужно сюда добавить
     
  6. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    422
    Оказывается .asm файлы должны лежать в подкаталогах \i386 и \AMD64 относительно файла sources, даже если указать просто:

    AMD64_SOURCES=OverFlow.asm

    сделал подкаталог AMD и положил туда асм - все собралось.
     
  7. HoShiMin

    HoShiMin Active Member

    Публикаций:
    0
    Регистрация:
    17 дек 2016
    Сообщения:
    384
    Адрес:
    Россия, Нижний Новгород
    Что угодно, лишь бы не писать в Visual Studio с WDK, где всё собирается и ассемблируется из коробки