MessageBox without import

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

  1. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898

    Вложения:

  2. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    249
    Mikl___, не робит - даже адрес крэша остался тот-же LdrLoadDll()+0x97
    что-то ты видимо упускаешь из виду, хотя если на Win10 работает, то...
     
  3. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898
    Marylin,
    можешь запустить dumpbin.exe /EXPORTS %windir%\System32\ntdll.dll /OUT:ntdll.txt
    и выложить ntdll.txt? dumpbin.exe есть в masm32\bin или в аттаче
     

    Вложения:

    • dumpbin.zip
      Размер файла:
      935 байт
      Просмотров:
      57
    Последнее редактирование: 8 фев 2025
  4. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    249
    Вот лог..
    --- Сообщение объединено, 8 фев 2025 ---
    Mikl___, шелл для поиска функции в экспорте либы:
    Код (ASM):
    1. format   pe64 console
    2. include 'win64ax.inc'
    3. entry    start
    4. ;//-----------
    5. .data
    6. struct EXPORT_TABLE
    7.   Flags              dd  0    ;// 00
    8.   TimeStamp          dd  0    ;// 04
    9.   Version            dd  0    ;// 08
    10.   NameRVA            dd  0    ;// 12  имя образа (exe/dll)
    11.   OrdinalBase        dd  0    ;// 16
    12.   NumOfFunction      dd  0    ;// 20  всего функций
    13.   NumOfNamePointers  dd  0    ;// 24  всего указателей на имена функций
    14.   AddressTableRVA    dd  0    ;// 28  линк на таблицу адресов
    15.   NamePointersRVA    dd  0    ;// 32  линк на таблицу имён
    16.   OrdinalTableRVA    dd  0    ;// 36  линк на таблицу ординалов
    17. ends
    18. szLoadDll        db  'LdrLoadDll',0
    19. szLen            =   $ - szLoadDll
    20. buff             db  0
    21. ;//-----------
    22.  
    23. section '.text' code readable executable
    24. start:   sub     rsp,8
    25.  
    26. ;//----- Ищем в РЕВ базу Ntdll
    27.          mov     rax,[gs:60h]
    28.          mov     rax,[rax+18h]
    29.          mov     rax,[rax+20h]
    30.          mov     rax,[rax]
    31.          mov     rsi,[rax+20h]  ;// RSI - Base
    32.  
    33. ;//----- Берём линк на EXPORT_TABLE из PE.DATA_DIRECTORY
    34.          mov     ebx,dword[rsi+0x3c]
    35.          add     rbx,rsi
    36.          add     rbx,136        ;// DATA_DIR.Export
    37.          mov     ebx,dword[rbx]
    38.          add     rbx,rsi
    39.  
    40. ;//----- Раскидываем по регистрам инфу из EXPORT_TABLE
    41.          mov     r10d,dword[rbx+EXPORT_TABLE.AddressTableRVA]  ;// R10 = Адрес
    42.          mov     r11d,dword[rbx+EXPORT_TABLE.NamePointersRVA]  ;// R11 = Имя
    43.          mov     r12d,dword[rbx+EXPORT_TABLE.OrdinalTableRVA]
    44.          add     r10,rsi
    45.          add     r11,rsi
    46.          add     r12,rsi
    47.          mov     rbx,rsi        ;// RBX = Base
    48.  
    49. ;//----- Пропустим безымянные функции (только с ординалом)
    50.          movzx   eax,word[r12]
    51.          shl     eax,2
    52.          add     r10,rax
    53.  
    54. ;//----- Поиск адреса LdrLoadDll() в экспорте..
    55. @find:   mov     rdi,szLoadDll
    56.          mov     esi,[r11d]
    57.          add     rsi,rbx
    58.          mov     rcx,szLen
    59.          repe    cmpsb          ;// Сравнить строки..
    60.          jecxz   @ok
    61.          add     r10,4          ;// сл.запись в таблицах
    62.          add     r11,4
    63.          add     r12,4
    64.          jmp     @find
    65.  
    66. @ok:     mov     r10d,dword[r10]
    67.          mov     r11d,dword[r11]
    68.          add     r10,rbx           ;// R10 = Address
    69.          add     r11,rbx           ;// R11 = Имя
    70.         cinvoke  printf,<10,' Addr: %p  Name: %s'>,r10,r11
    71.  
    72. ;//----- Проверим стд.способом
    73.          invoke  GetModuleHandle,<'ntdll.dll',0>
    74.          invoke  GetProcAddress,rax,<'LdrLoadDll',0>
    75.         cinvoke  printf,<10,' Addr: %p  Name: %s'>,rax,szLoadDll
    76.  
    77. @exit:  cinvoke  _getch
    78.         cinvoke  exit, 0
    79. ;//-----------
    80. section '.idata' import data readable
    81. library  msvcrt,'msvcrt.dll',kernel32,'kernel32.dll'
    82. include 'api\msvcrt.inc'
    83. include 'api\kernel32.inc'
    84.  
    123.png
     

    Вложения:

    • ntdll.txt
      Размер файла:
      96 КБ
      Просмотров:
      58
    • FindExp.zip
      Размер файла:
      697 байт
      Просмотров:
      61
  5. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898
    Marylin, спасибо большое!
     
  6. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    86
    Для разбора ошибок в загрузчике имеется логгер, который показывает подробнейшую обработку.
     
    Последнее редактирование: 8 фев 2025
    Mikl___ нравится это.
  7. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898

    Вложения:

  8. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    249
    Код (Text):
    1. 0:000> g
    2. (97c.700): Access violation - code c0000005 (first chance)
    3. image00000000_00400000+0x2f0:
    4. 00000000`004002f0  f3a6       repe cmps byte ptr [rsi],byte ptr [rdi]
    5.  
    6. 0:000> !analyze -v
    7. *******************************************************************************
    8. *                        Exception Analysis                                   *
    9. *******************************************************************************
    10. FAULTING_IP:
    11. image00000000_00400000+2f0
    12. 00000000`004002f0  f3a6       repe cmps byte ptr [rsi],byte ptr [rdi]
    13.  
    14. EXCEPTION_RECORD:  ffffffffffffffff -- (.exr 0xffffffffffffffff)
    15. ExceptionAddress: 00000000004002f0 (image00000000_00400000+0x00000000000002f0)
    16.    ExceptionCode: c0000005 (Access violation)
    17.   ExceptionFlags: 00000000
    18. NumberParameters: 2
    19.     Parameter[0]: 0000000000000000
    20.     Parameter[1]: 0000000077c7001a
    21. Attempt to read from address 0000000077c7001a
    22.  
    23. FOLLOWUP_IP:
    24. image00000000_00400000+2f0
    25. 00000000`004002f0  f3a6       repe cmps byte ptr [rsi],byte ptr [rdi]
    26.  
    27. EXCEPTION_DOESNOT_MATCH_CODE:  This indicates a hardware error.
    28. Instruction at 00000000004002f0 does not read/write to 0000000077c7001a
    29.  
    30. PRIMARY_PROBLEM_CLASS:  STRING_DEREFERENCE
    31. BUGCHECK_STR         :  APPLICATION_FAULT_STRING_DEREFERENCE_CODE_ADDRESS_MISMATCH_INVALID_POINTER_READ
    32. LAST_CONTROL_TRANSFER:  from 0000000000000000 to 00000000004002f0
    33. STACK_TEXT:
    34. 00000000`0013fe90  00000000`00000000 : image00000000_00400000+0x2f0
    35. ---------
    36.  
     
  9. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    514
    если включить "Show loader snaps"
    оно будет печататься только в windbg?
     
  10. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    86
    Нет, будет отладочный вывод - если есть юзер-дебаг порт, сообщения в него, если нет то в кернел. Это обычный отладочный вывод dbgprint(). Меня в большинстве случаев такое не устраиволо(dbi и отладчик это совсем инструменты разные) и вывод шел в консоль, для этого вроде был не нужен гуи. Так трансляция начиналась на загрузочной фазе, пока не настроена среда; анализ всяких поделок, протекторов и тому подобного это требует, иначе поток будет утерян, те выйдет из под монитора.

    Другое дело как это запустить, это делалось точно не помню, но не просто флагами в реестре, там всякие опции есть. В общем говоря поищите, без этого просто запуском и отловом фаулта ничего не получится сделать.

    Какое то гадание, а не конкретная инфа. Обычно используется разбор лога, полученного в динамике, а не анализ статик дампа в котором нет временных маркеров.

    Сорян за корявость наверно текста)
     
  11. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898
    Marylin,
    падение происходит до нахождения LdrLoadDll?
     
  12. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    514
    Mikl___,
    у вас шла нумерация файлов а-ля tut_01c.asm tut01d.asm
    а в последем аттаче вдруг tut01b.asm
    может старая версия?
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.564
    Адрес:
    Russia
    на win11 работает
     
  14. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    514
    на Win12 может перестать, выше написано rationale
     
  15. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898
    alex_dz,
    самый первый был tut_01a.asm, где я пытался найти только адрес LdrLoadDll для загрузки user32.dll, дальше я пытался добавить LdrGetProcedureAddressForCaller. После успешных запусков делается копия tut_01b.asm и пытаюсь модифицировать ее, в случае неудачи произойдет возврат к tut_01a.asm
     
  16. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    249
    да, падает сразу на входе в repe cmsb при первой же инструкции
    если оттрассировать в WinDbg (в х64dbg вообще пусто) то получается, что идёт обращение по недоступному адресу в Ntdll (к региону памяти Free):
    Код (Text):
    1. 0:000>
    2. (edc.a68): Access violation - code c0000005 (first chance)
    3. image00000000_00400000+0x2f0:
    4. 00000000`004002f0 f3a6            repe cmps byte ptr [rsi],byte ptr [rdi]
    5.  
    6. ;//------------------
    7. 0:000> r rsi,rdi
    8. rsi=000000007754001a   rdi=000000000040030e
    9.  
    10. ;//------------------ Проверим эти регионы памяти --------------
    11. 0:000> !address 000000007754001a
    12.  
    13. Usage:                Free
    14. Base Address:         00000000`7752f000
    15. End Address:          00000000`7efb0000
    16. Region Size:          00000000`07a81000
    17. Type:                 00000000
    18. State:                00010000   MEM_FREE      <--------//
    19. Protect:              00000001   PAGE_NOACCESS
    20.  
    21. 0:000> !address 000000000040030e
    22.  
    23. Usage:                Image
    24. Allocation Base:      00000000`00400000
    25. Base Address:         00000000`00400000
    26. End Address:          00000000`00401000
    27. Region Size:          00000000`00001000
    28. Type:                 01000000   MEM_IMAGE
    29. State:                00001000   MEM_COMMIT
    30. Protect:              00000040   PAGE_EXECUTE_READWRITE
    31.  
    32. More info:            lmv m image00000000_00400000
    33. More info:            !lmi image00000000_00400000
    34. More info:            ln 0x40030e
    35.  
    --- Сообщение объединено, 9 фев 2025 ---
    exe для поиска в экспорте (который я прикрепил выше) пробовал запускать?
    он находит у тебя на Win10 функцию и адрес LdrLoadDll() ?
     
    Последнее редактирование: 9 фев 2025
  17. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898
    Marylin,
    это немного измененный FindExp попробуй его запустить
    00.png
     

    Вложения:

    Последнее редактирование: 9 фев 2025
  18. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    249
    да работает.
     
  19. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.898

    Вложения:

  20. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    249
    нет это не работает - опять "repe cmpsb"
    да в принципе есть-же поддержка Win10,
    а моя Win7 не особо нужна общественности.