MessageBox without import

Тема в разделе "WASM.X64", создана пользователем Mikl___, 5 фев 2025.

  1. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    не знаю, но у меня RIP=0 на входе и сразу падает:
    Код (Text):
    1. 0:000> g
    2. (1cf0.117c): Access violation - code c0000005 (first chance)
    3. 00000000`00000000 ??              ???
    4.  
    5. 0:000> r
    6. rax=00000000c0000135 rbx=0000000000000076 rcx=0000000000000000
    7. rdx=0000000000400309 rsi=00000000772b9c1e rdi=000000000000070e
    8. rip=0000000000000000 rsp=000000000013fef8 rbp=000000000013ff50
    9. r8=0000000000400317  r9=0000000000000000 r10=0000000000000000
    10. r11=000000000013fe72 r12=00000000772b4358 r13=00000000772b6264
    11. r14=00000000771a0000 r15=0000000000000000
    12. iopl=0         nv up ei pl zr na po nc
    13. cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246
    14.  
    Может у тебя обновы не установлены или ещё чё..
    Более того, если стек не выровнен на 16-байт границу, у меня падает любой софт (который я сам пишу) при вызове апи, а у тебя как-раз RSP=13fef8. Ну кратность размеров секции вроде отрабатывало раньше у меня норм, хотя у тебя стоят 10:10 байт в пе-хидере:
    Код (Text):
    1. 0:000> !dh image00000000`00400000
    2.  
    3. File Type: EXECUTABLE IMAGE
    4. FILE HEADER VALUES
    5.     8664 machine (X64)
    6.        1 number of sections
    7. 67BD0A50 time date stamp Tue Feb 25 05:09:52 2025
    8.  
    9.        0 file pointer to symbol table
    10.        0 number of symbols
    11.       F0 size of optional header
    12.        3 characteristics
    13.             Relocations stripped
    14.             Executable
    15.  
    16. OPTIONAL HEADER VALUES
    17.      20B magic #
    18.    14.40 linker version
    19.      180 size of code
    20.        0 size of initialized data
    21.        0 size of uninitialized data
    22.      1E0 address of entry point
    23.      1C0 base of code
    24.          ----- new -----
    25. 0000000000400000 image base
    26.       10 section alignment      <------+-------//
    27.       10 file alignment         <------+
    28.        2 subsystem (Windows GUI)
    29.     6.00 operating system version
    30.     0.00 image version
    31.     6.00 subsystem version
    32.      340 size of image
    33.      1C0 size of headers
    34.        0 checksum    <------------- На эту хрень тоже ругается WinDbg
    35. 0000000000100000 size of stack reserve
    36. 0000000000001000 size of stack commit
    37. 0000000000100000 size of heap reserve
    38. 0000000000001000 size of heap commit
    39.     8100  DLL characteristics
    40.             NX compatible
    41.             Terminal server aware
    42.  
    43.        0 [       0] address [size] of Export Directory
    44.        0 [       0] address [size] of Import Directory
    45.        0 [       0] address [size] of Resource Directory
    46.        0 [       0] address [size] of Exception Directory
    47.        0 [       0] address [size] of Security Directory
    48.        0 [       0] address [size] of Base Relocation Directory
    49.        0 [       0] address [size] of Debug Directory
    50.        0 [       0] address [size] of Description Directory
    51.        0 [       0] address [size] of Special Directory
    52.        0 [       0] address [size] of Thread Storage Directory
    53.        0 [       0] address [size] of Load Configuration Directory
    54.        0 [       0] address [size] of Bound Import Directory
    55.        0 [       0] address [size] of Import Address Table Directory
    56.        0 [       0] address [size] of Delay Import Directory
    57.        0 [       0] address [size] of COR20 Header Directory
    58.        0 [       0] address [size] of Reserved Directory
    59.  
    60. SECTION HEADER #1
    61.    .text name
    62.      171 virtual size
    63.      1C0 virtual address
    64.      180 size of raw data
    65.      1C0 file pointer to raw data
    66.        0 file pointer to relocation table
    67.        0 file pointer to line numbers
    68.        0 number of relocations
    69.        0 number of line numbers
    70. 80000020 flags
    71.          Code
    72.          (no align specified)
    73.          Write Only
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.278
    Marylin,
    я сам не ожидал, сколько мелочей придется учитывать при запуске крохотной программы, но всё равно всем принявшим участие огромное спасибо! :drinks: Если кто-то хочет дорабатывать все листинги прикладывались... так что welcome! :yes3:
     
    k3rnl, Application, Marylin и 2 другим нравится это.
  3. Intro

    Intro Well-Known Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    1.707
    Это FASM?!!
    Может лучше использовать UASM и его подвиды, либо старый добрый, но туповатый и проприетарный MASM? У меня таких проблем нету, я сначала фасм хотел использовать, ну изучить его, но потом посоветовали UASM, и я понял что фасм мне просто не нужен, UASM может всё то же что и фасм.
     
  4. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    это и есть масм..
     
  5. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Вот я тоже собрал, не трогая пе формат. Зачем принудительно завершать процесс, а не по рет я так и не понял.
     

    Вложения:

    • msg.zip
      Размер файла:
      2,1 КБ
      Просмотров:
      423
  6. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    Ahimov, у меня этот семпл проваливается в чёрную дыру, хотя в отладчике(g) доходит до ret.
    Код (Text):
    1. CommandLine: F:\t.exe
    2. Symbol search path is: srv*c:\Symbols*http://msdl.microsoft.com/download/symbols
    3.  
    4. Executable search path is:
    5. ModLoad: 00000001`3ff00000 00000001`3ff05000   image00000001`3ff00000
    6. ModLoad: 00000000`771a0000 00000000`7733f000   ntdll.dll
    7. ModLoad: 00000000`76f80000 00000000`7709f000   C:\Windows\system32\kernel32.dll
    8. ModLoad: 000007fe`fcdc0000 000007fe`fce27000   C:\Windows\system32\KERNELBASE.dll
    9.  
    10. (1ec4.1c80): Break instruction exception - code 80000003 (first chance)
    11. ntdll!LdrpDoDebuggerBreak+0x30:
    12. 00000000`77245c90 cc              int     3
    13.  
    14. 0:000> bp @$exentry
    15. *** WARNING: Unable to verify checksum for image00000001`3ff00000
    16.  
    17. 0:000> g
    18. Breakpoint 0 hit
    19. image00000001_3ff00000+0x1074:
    20. 00000001`3ff01074 488bec          mov     rbp,rsp
    21.  
    22. 0:000> g
    23. ntdll!ZwTerminateProcess+0xa:
    24. 00000000`77208d8a c3              ret
    25.  
    Mikl___, на семёрке systeminfo в ком.строке сколько обновлений показывает?
    интересно, в чём разница наших Win7, то у тебя код работает, а у меня нет?
    Код (Text):
    1. C:\> systeminfo
    2.  
    3. Название ОС:                      Microsoft Windows 7 Профессиональная
    4. Версия ОС:                        6.1.7601 Service Pack 1 сборка 7601
    5. Параметры ОС:                     Изолированная рабочая станция
    6. Код продукта:                     00371-868-0000007-85883
    7. Тип системы:                      x64-based PC
    8. Исправление(я):                   Число установленных исправлений - 69.   <------------//
    9.                                   [01]: KB2849697
    10.                                   [02]: KB2849697
    11.                                   [03]: KB2849696
    12. ..........
    13.  
    --- Сообщение объединено, 25 фев 2025 ---
    Ahimov, я особо не разбирался в исходнике,
    но чёто не видно, где при поиске пропускаются функции только с ординалом - у меня их 8 в самом начале экспорта Ntdll

    NtOrd.png
     
    Последнее редактирование: 25 фев 2025
  7. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Marylin,

    Сигнатурный поиск в принципе метод не надёжный.
     
  8. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Mikl___,

    Тесты.

    Попробовать собрать еще меньше ?
     

    Вложения:

    • Mikl(1).pdf
      Размер файла:
      421,6 КБ
      Просмотров:
      169
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.278
    Ahimov,
    можно и меньше :yes3: но работать будет только на Win10 (у меня нет Win7, а устанавливать лень) Вас это устроит?
     
  10. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.278
    Ahimov,
    я подумал, что речь идет о минимальном размере PEx64, но без использования импорта
     
  12. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Можно еще распарсить создание секций и лодер, что бы точно знать допуски в формате..
     
  13. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.278
    а как искать лучше, но чтобы места занимало мизер?
     
  14. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
  15. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Собрал справку по формату. Это для 32, пока нет 64 системы.

    Ему нужна спецификация на формат, сурки создания секции и дизасм MiCreateSection().
     

    Вложения:

    • 1peform.pdf
      Размер файла:
      7,9 МБ
      Просмотров:
      176
    Последнее редактирование: 5 апр 2026
    Mikl___ нравится это.
  16. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    293
    вообще интересно что через регистры GS и FS возможно собрать некоторую информацию
     
  17. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Попалось из новостей:

    Написано на масм, вот.
     
    GRAFik и Mikl___ нравится это.
  18. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.225
     
    GRAFik нравится это.
  19. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    293
    вот этот фрагмент кода
    Код (ASM):
    1.  
    2. mov rax,[rax+18h];Смещаемся к структуре PEB_LDR_DATA
    3.  
    то есть получается что первые два поля структуры PEB 8 байт,далее идёт поле 8 байт,то есть 16+8 = 18h (в десятичной 24),в файле winternl.h,размеры полей отличается
     

    Вложения:

    • winternl.7z
      Размер файла:
      6,7 КБ
      Просмотров:
      17
  20. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    Смещения разные для PEB32 и PEB64.
    Более того х64 структуры отличаются ещё и для Win7/10/11, правда обычно новые поля добавляются в конец, но не всегда. Ищи разницу здесь: https://www.vergiliusproject.com/kernels/x64

    Так выглядит обход PEB_LDR на моей Win7_x64 в отладчике WinDbg:

    Код (Text):
    1.  
    2. 0: kd> dt _peb  7fffffd4000
    3. nt!_PEB
    4.    +0x000 InheritedAddressSpace    : 0 ''
    5.    +0x001 ReadImageFileExecOptions : 0 ''
    6.    +0x002 BeingDebugged            : 0 ''
    7.    +0x003 BitField                 : 0x8 ''
    8.    +0x008 Mutant                   : 0xffffffff`ffffffff  Void
    9.    +0x010 ImageBaseAddress         : 0x00000001`3fef0000  Void
    10.    +0x018 Ldr                      : 0x00000000`77d32e40  _PEB_LDR_DATA --+
    11. ........                                                                  |
    12.                                                                           |
    13. 0: kd> dt _PEB_LDR_DATA  0x00000000`77d32e40  <---------------------------+
    14. nt!_PEB_LDR_DATA
    15.    +0x000 Length                   : 0x58
    16.    +0x004 Initialized              : 0x1 ''
    17.    +0x008 SsHandle                 : (null)
    18.    +0x010 InLoadOrderModuleList    : _LIST_ENTRY [ 0x00000000`00362a10 - 0x17de81b0 ] ---+
    19.    +0x020 InMemoryOrderModuleList  : _LIST_ENTRY [ 0x00000000`00362a20 - 0x17de81c0 ]    |
    20.    +0x030 InInitOrderModuleList    : _LIST_ENTRY [ 0x00000000`00362b20 - 0x17de81d0 ]    |
    21.    +0x040 EntryInProgress          : (null)                                              |
    22.    +0x048 ShutdownInProgress       : 0 ''                                                |
    23.    +0x050 ShutdownThreadId         : (null)                                              |
    24.                                                                                          |
    25. 0: kd> dt _LDR_DATA_TABLE_ENTRY  0x00000000`00362a10   <---------------------------------+
    26. nt!_LDR_DATA_TABLE_ENTRY
    27.    +0x000 InLoadOrderLinks         : _LIST_ENTRY [ 0x00000000`00362b00 - 0x77d32e50 ]  ------> Ntdll.dll
    28.    +0x010 InMemoryOrderLinks       : _LIST_ENTRY [ 0x00000000`00362b10 - 0x77d32e60 ]
    29.    +0x020 InInitOrderLinks         : _LIST_ENTRY [ 0x00000000`00000000 - 0x0 ]
    30.    +0x030 DllBase                  : 0x00000001`3fef0000 Void
    31.    +0x038 EntryPoint               : 0x00000001`45976d20 Void
    32.    +0x040 SizeOfImage              : 0xe08d000
    33.    +0x048 FullDllName              : _UNICODE_STRING "C:\Users\AppData\Roaming\Telegram Desktop\Telegram.exe"
    34.    +0x058 BaseDllName              : _UNICODE_STRING "Telegram.exe"
    35.    +0x068 Flags                    : 0x4000
    36.    +0x06c LoadCount                : 0xffff
    37.    +0x06e TlsIndex                 : 0xffff
    38.    +0x070 HashLinks                : _LIST_ENTRY [ 0x00000000`003a45a0 - 0x77d2b350 ]
    39.    +0x078 CheckSum                 : 0x77d2b350
    40.    +0x080 TimeDateStamp            : 0x6a704366
    41.    +0x088 EntryPointActivation     : (null)
    42.    +0x090 PatchInformation         : (null)
    43.    +0x098 ForwarderLinks           : _LIST_ENTRY [ 0x00000000`00362aa8 - 0x362aa8 ]
    44.    +0x0a8 ServiceTagLinks          : _LIST_ENTRY [ 0x00000000`00362ab8 - 0x362ab8 ]
    45.    +0x0b8 StaticLinks              : _LIST_ENTRY [ 0x00000000`003a22c0 - 0x3a2200 ]
    46.    +0x0c8 ContextInformation       : 0x00000000`77c02d24 Void
    47.    +0x0d0 OriginalBase             : 0
    48.    +0x0d8 LoadTime                 : 0
    49.  
    50. 0: kd> dt _LDR_DATA_TABLE_ENTRY  0x00000000`00362b00
    51. nt!_LDR_DATA_TABLE_ENTRY
    52.    +0x000 InLoadOrderLinks         : _LIST_ENTRY [ 0x00000000`00364530 - 0x362a10 ]  ------> Kernel32.dll
    53.    +0x010 InMemoryOrderLinks       : _LIST_ENTRY [ 0x00000000`00364540 - 0x362a20 ]
    54.    +0x020 InInitOrderLinks         : _LIST_ENTRY [ 0x00000000`003646c0 - 0x77d32e70 ]
    55.    +0x030 DllBase                  : 0x00000000`77c00000 Void
    56.    +0x038 EntryPoint               : (null)
    57.    +0x040 SizeOfImage              : 0x19f000
    58.    +0x048 FullDllName              : _UNICODE_STRING "C:\Windows\SYSTEM32\ntdll.dll"
    59.    +0x058 BaseDllName              : _UNICODE_STRING "ntdll.dll"
    60.    +0x068 Flags                    : 0x4004
    61.    +0x06c LoadCount                : 0xffff
    62.    +0x06e TlsIndex                 : 0
    63.    +0x070 HashLinks                : _LIST_ENTRY [ 0x00000000`003a3e20 - 0x77d2b2e0 ]
    64.    +0x078 CheckSum                 : 0x77d2b2e0
    65.    +0x080 TimeDateStamp            : 0x5e0eb67f
    66.    +0x088 EntryPointActivation     : (null)
    67.    +0x090 PatchInformation         : (null)
    68.    +0x098 ForwarderLinks           : _LIST_ENTRY [ 0x00000000`00362b98 - 0x362b98 ]
    69.    +0x0a8 ServiceTagLinks          : _LIST_ENTRY [ 0x00000000`00362ba8 - 0x362ba8 ]
    70.    +0x0b8 StaticLinks              : _LIST_ENTRY [ 0x00000000`00362bb8 - 0x362bb8 ]
    71.    +0x0c8 ContextInformation       : (null)
    72.    +0x0d0 OriginalBase             : 0x78e50000
    73.    +0x0d8 LoadTime                 : 0x0
    74.  
    75. 0: kd>
    76.  
     
    Mikl___ нравится это.