Драйвер и обычный exe - в чём различия.

Тема в разделе "WASM.WIN32", создана пользователем n0name, 27 дек 2004.

  1. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Собственно сабж.

    Я знаю несколько отличий:

    1. Subsystem = 1

    2. Import Table содержит только импорт из ntoskrnl.exe



    Что есть ещё?
     
  2. Kola

    Kola New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2004
    Сообщения:
    69
    пункт 2 неверен

    не только из ntoskrnl.exe и не обязательно наличие импорта из ntoskrnl.exe
     
  3. BaZO

    BaZO New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2004
    Сообщения:
    5
    Обязательно проверяется CRC
     
  4. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее




    не обязательно
     
  5. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    Import Table оформляется чуть по другому.
     
  6. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    для драйвера - обязательно. Учи матчасть.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    >>ProgramMan

    Как?

    >>infern0

    Как высчитывается и куда записывается?
     
  8. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    пишется на законное место в PE-хидере. Как высчитывается точно не скажу, обычно использую lordPE для пересчета после модификации бинарника.

    А насчет импорта - да, там она более другая. Я когда пытался на фасме собрать драйвер долго не мог понять в чем проблема. Потом нашел на форуме фасма пример драйвера (beep.sys) - там все расписано.

    ps: вот еще отличия - обязательное присутсвие релокейшенов, предопределенные имена секций - INIT (обязательно и именно так), PAGE (по моему может и не быть). Вроде все...
     
  9. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Гм, я пробовал на w2k, NT4.0, работало все с одной секцией, с любым её именем
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Согласен с bogrus'ом. INIT это секция содержащая код, который вызывается 1 раз, и после вызова можно удалить его.



    А если у меня IT нет, то всё норма?
     
  11. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    у меня на XP были проблемы. Правда они были как с импортом так и с секциями. Приду домой - попробую переименовать - посмотрим. Насчет it - помнится тут был топик о том что exe вообзе без импорта не грузится. Подозреваю что и с драйверами может быть похожий прикол. Но как минимум надо тетстить на nt4/2k/xp что-бы говорить уверенно.
     
  12. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    Значит так...

    1. Для запуска драйвера необходимы всего две секции: код и relocation. Названия секций роли не играют.

    2. В импорте необходимости нет.

    3. PE Checksum - если очень нужно могу замылить исходник.

    Все проверено и для W2k и для XP
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    >>3. PE Checksum - если очень нужно могу замылить исходник.

    Замыль не в падлу markamer@mail.ru



    infern0 сам проверял для обычного PE, импорт не нужен.
     
  14. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Zufyxe 1. Тогда видимо можно одну секцию

    n0name Для обычного PE (на NT4.0, w2k) нужен импорт с kernel32.dll, а драйверу эта dll не нужна
     
  15. worker

    worker New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2004
    Сообщения:
    1
    я конечно начинающий но я посмотрел в разных dll-ках

    во всех Checksum 0000000h

    смотрел с помощью TC6.02









    Image File Header :



    Machine: 014Ch (i386 or later, and compatible)

    Number of Sections: 0005h

    Time Date Stamp: 3E9D7937h -> 16/04/2003 19:39:35

    Symbols Pointer: 00000000h

    Number Of Symbols: 00000000h

    Size Of Optional Header: 00E0h

    Flags: 210Eh



    Image Optional Header



    Magic 010Bh ( PE32 : normal 32-bit )

    Linker version 6.00

    Size of code 00003000h

    Size of initialized data 00050000h

    Size of uninitialized data 00000000h

    Address of Entry Point (RVA) 0000381Bh

    Base of code 00001000h

    Base of data 00004000h

    Image base 10000000h

    Section Alignment 00001000h

    File Alignment 00001000h

    Required OS version 4.00

    Image version 0.00

    Subsystem version 4.00

    Reserved1 0

    Size of image 00054000h ( 344064 bytes)

    Size of headers 00001000h

    Checksum 00000000h

    Subsystem 0002h (Image runs in the Windows GUI subsystem)

    DLL Characteristics 0000h

    Size of Stack Reserve 00100000h

    Size of Stack Commit 00001000h

    Size of Heap Reserve 00100000h

    Size of Heap Commit 00001000h

    loader flags 00000000h (obsolete)

    Number of Data Directory 00000010h



    DATA DIRECTORY (Virtual Address and Size)

    EXPORT rva: 00004F40h size: 0000004Eh

    IMPORT rva: 00004970h size: 000000A0h

    RESOURCE rva: 00007000h size: 0004B660h



    или это не CRC

    ????
     
  16. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    можно конечно и в дллках смотреть, но разговор шел о _драйверах_, поэтому попробуй посмотреть на файлы *.sys например из каталога %windir%\system32\drivers
     
  17. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Да это для CRC, но причем тут разные dll'ки к драйверу
     
  18. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    Вот что касается PE checksum:

    это я использовал в одном вирусе, сейчас уже не вспомню где взял описание алгоритма. Однозначно работает под NT 4.0\5.0\5.1 Без коментариев разберетесь?





    CSum proc

    ; ESI - file image

    ; ECX - image size



    push ebx

    push ebp



    push esi



    push ecx

    shr ecx,1

    dec ecx



    xor eax,eax

    mov ebx,eax



    scount:

    lodsw

    add ebx,eax

    mov eax,ebx

    and ebx,0ffffh

    shr eax,10h

    add ebx,eax

    loop scount



    mov eax,ebx

    shr eax,10h

    add ax,bx

    mov di,ax

    xor edx,edx

    mov ebx,1

    cmp di,dx

    mov ebp,ebx

    adc ebp,-1

    mov cx,dx

    sub di,bp

    sub di,cx



    xor eax,eax



    cmp di,ax

    adc ebx,-1

    sub di,bx

    sub di,ax

    movzx eax,di

    pop ecx

    add eax,ecx

    pop edx



    pop ebp

    pop ebx

    CSum_end:

    ret

    CSum endp