минимальная pe-прога

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

  1. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    В начале ovod спрашивал про маленький elf.

    У меня есть на 88 байт, особо не оптимизировал, уверен, что можно еще десяток байтов выкинуть.
     
  2. ovod

    ovod New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2004
    Сообщения:
    26
    Адрес:
    г. Нелидово Тверской обл.
    выкладывай, можно и с комментариями.
     
  3. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    Нашел в залежах у себя на диске, авторство не мое. Есть несколько неиспользуемых полей (например с 8 по 15 байты) в которые можно что-нибудь засунуть.

    00: 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00

    10: 02 00 03 00 01 00 00 00 4C 80 04 08 2C 00 00 00

    20: 00 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00

    30: 00 00 00 00 00 80 04 08 00 80 04 08 58 00 00 00

    40: 58 00 00 00 05 00 00 00 00 10 00 00 6A 24 58 CD

    50: 80 89 C3 6A 01 58 CD 80

    комментировать тут особо нечего, эта штука вылолняет sync, что полезно при отладке драйверов ядра 8-)



    вообще загрузка elf - это особая статья, особенно загрузка через интерпретатор ld-linux.so.2 (с его помощью можно сильно извратить процесс загрузки), нормальных доков по этой теме я не встречал, кроме, разве что, сорцов glibc и статеек Red Plait'а. Загрузчик же, который в ядре сидит - примитивен (см. fs/binfmt_elf.c), здесь такого "разнообразия" как в PE нет, imho.
     
  4. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    Вот из статьи на хакере(153 байта) я сделал чтоб титле был "user32" а текст "MessageBoxA" только работает под ХР

    т.к "user32" без ".dll" :dntknw:

    [​IMG] 2019557143__pe_153_bytes.zip
     
  5. ovod

    ovod New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2004
    Сообщения:
    26
    Адрес:
    г. Нелидово Тверской обл.
    Под XP есть и в 152 байта, иходник написал p0s0l с vingrad.ru (bogrus ссылку выше давал)


    Код (Text):
    1. ImageBase   equ 400000h
    2. SectionRVA  equ 1000h
    3. PE_offset   equ PE_Signature - ImageDosHeader
    4. ImageOptionalHeaderSize equ ImageSectionHeader - ImageOptionalHeader
    5. HeaderSize  equ HeadersEnd - ImageDosHeader
    6. SectionSize equ SectionEnd - ImageDosHeader - 1
    7. ImportVA    equ ImportBegin - ImageBase
    8. ImportSize  equ ImportEnd - ImportBegin
    9.  
    10. SectionStart    equ ImageBase
    11. DllNameRVA  equ DllName - SectionStart
    12. FirstThunkRVA   equ FirstThunk - SectionStart
    13. FuncNameRVA equ FuncName - SectionStart
    14.  
    15. EntryRVA    equ CodeStart - SectionStart
    16.  
    17.         org ImageBase + SectionRVA
    18.  
    19.         use32
    20.  
    21. ImageDosHeader:
    22.         db  'MZ'
    23.  
    24. CodeStart:
    25.         mov ecx, String ;5b
    26.         push    0 ;2b
    27.         push    ecx ;1b
    28.         jmp Code2
    29. ;                rb      10
    30.  
    31. PE_Signature:   dd  'PE'
    32.         dw  014Ch   ; cpu type
    33.  
    34. FuncName:   dw  1   ; number of sections
    35.         db  'MessageBoxA', 0
    36.  
    37.         dw  ImageOptionalHeaderSize
    38.         dw  818Fh   ; flags
    39.  
    40. ImageOptionalHeader:
    41.         dw  010Bh   ; magic
    42.  
    43. Code4:
    44.         call    dword [FirstThunk] ;6b
    45.         ret ;1b
    46.  
    47. String:     db  'Hello!', 0
    48.  
    49.         dd  EntryRVA  ; entry point RVA
    50.         dd  0     ; *base of code
    51.         dd  PE_offset ; *base of data
    52.         dd  ImageBase ; image base
    53. ;ImportBegin:
    54.         dd  1000h   ; object align
    55.         dd  200h    ; file align
    56.  
    57. FirstThunk: dd  FuncNameRVA ; Func RVA
    58.         dd  0
    59.  
    60.         dw  4   ; subsys major
    61.  
    62. DllName:    db  'USER32'
    63.  
    64.         dd  2000h   ; image size
    65.         dd  HeaderSize
    66.  
    67. ImageSectionHeader:
    68. Code2:
    69.         push    ecx ;1b
    70.         jmp Code3 ;2b
    71.         db  0
    72.  
    73.         dw  2   ; subsystem
    74.  
    75.         rb  2
    76.  
    77.         dd  0
    78.         dd  SectionRVA
    79.         dd  SectionSize     ; physical size
    80.         dd  1           ; physical offset
    81.  
    82. Code3:
    83.         push    0 ;2b
    84.         jmp Code4 ;2b
    85.  
    86.         dd  2           ; number of RVA and sizes
    87.  
    88. ImportBegin:
    89.         rb  4
    90.  
    91.         dd  0E0000060h      ; characteristics
    92.         dd  ImportVA        ; import dir VA
    93.  
    94.         dd  DllNameRVA    ; Dll name RVA
    95.         dd  FirstThunkRVA ; FirstThunk RVA
    96.  
    97. ImageOptionalHeader_end:
    98.  
    99. HeadersEnd:
    100.  
    101. SectionEnd: