MessageBox without import

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

  1. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.874
    Код (ASM):
    1. ; GUI #
    2. include win64a.inc
    3. .code
    4. WinMain proc
    5. local Message:UNICODE_STRING
    6. local Result:qword
    7.        mov rax,qword ptr gs:[60h];Получаем адрес PEB
    8.        mov rax,[rax+18h];Смещаемся к структуре PEB_LDR_DATA
    9.        mov rax,[rax+20h];Смещаемся к полю PEB_LDR_DATA.InMemoryOrderModuleList
    10.        mov rax,[rax]
    11.        mov rbx,[rax+20h];Базовый адрес ntdll.dll
    12.        cmp word ptr[rbx].IMAGE_DOS_HEADER.e_magic,IMAGE_DOS_SIGNATURE
    13.        jne exit_
    14.        mov r9d,[rbx].IMAGE_DOS_HEADER.e_lfanew;смещение до PE-заголовка
    15.        cmp word ptr[rbx+r9],IMAGE_NT_SIGNATURE;
    16.        jne exit_
    17. ;18h to optional header + 70h to data directories
    18.        mov r9d,dword ptr[rbx+r9+18h].IMAGE_OPTIONAL_HEADER64.DataDirectory;смещение до секции экспорта
    19. ;Пеpейти к таблице экспоpта и получить количество имен (NumberOfNames)
    20.        add r9,rbx;переходим в таблицу экспорта
    21.        mov r14d,[r9].IMAGE_EXPORT_DIRECTORY.NumberOfNames;[r9+18h]
    22.        mov r13d,[r9].IMAGE_EXPORT_DIRECTORY.AddressOfNames;[r9+20h]
    23.        add r13,rbx
    24.        mov edx,[r9].IMAGE_EXPORT_DIRECTORY.AddressOfFunctions;[r9+1Ch]
    25.        lea r12,[rbx+rdx+4];tableOfAddressOfFunctions
    26. ;---------------------------------------------------
    27.        invoke func,sizeof aLdrLoadDll,&aLdrLoadDll      
    28.        mov Message.woLength,14h
    29.        mov Message.MaximumLength,16h
    30.        movr qword ptr Message.Buffer,aUser32_
    31.        lea r8,Message
    32.        mov ecx,1
    33.        lea edx,Result
    34.        mov r9,rdx
    35.        call rax;LdrLoadDll_
    36. ;---------------------------------------
    37.        lea   r15,aMessageBoxA
    38.        mov Message.woLength,12
    39.        mov Message.MaximumLength,13
    40.        mov Message.Buffer,r15;&aMessageBoxA
    41. ;----------------------------------------------------
    42.        invoke func,sizeof aLdrGetProcedureAddress,&aLdrGetProcedureAddress
    43.        xor r8,r8
    44.        lea rdx,Message
    45.        mov [rsp+28h],r15;&aMessageBoxA
    46.        lea r9,Result
    47.        mov rcx,[r9]
    48.        and dword ptr[rsp+20h],0
    49.        call rax;LdrGetProcedureAddress_
    50. ;-----------------------------------
    51.        mov r9d,MB_OK
    52.        lea r8d,aTitle
    53.        mov edx,offset aMessage
    54.        xor ecx,ecx
    55.        call Result
    56. exit_: invoke RtlExitUserProcess,NULL
    57. WinMain endp
    58. func proc sizeof1:dword,NameProc:dword
    59.        mov sizeof1,ecx
    60.        mov NameProc,edx
    61.        xor edx,edx
    62.        mov r8,r13
    63. @@:    mov edi,[r8]
    64.        add rdi,rbx
    65.        mov ecx,sizeof1;sizeof aLdrGetProcedureAddress
    66.        mov esi,NameProc;offset aLdrGetProcedureAddress
    67.        repe cmpsb
    68.        or ecx,ecx
    69.        je @f
    70.        add r8,4
    71.        add edx,4
    72.        dec r14d;NumberOfNames
    73.        jnz @b
    74. @@:    mov eax,[r12+rdx]
    75.        add rax,rbx
    76.        leave
    77.        ret
    78. func endp
    79. ;.data---------------------------------------
    80. aLdrLoadDll db "LdrLoadDll",0
    81. aUser32_    dw 'u','s','e','r','3','2','.','d','l','l',0
    82. aLdrGetProcedureAddress db "LdrGetProcedureAddress",0
    83. aTitle      db "MessageBox without import",0
    84. aMessage    db "Hello, world!",0
    85. aMessageBoxA db "MessageBoxA",0
    86. end
    во вложении asm/exe-файл
     

    Вложения:

    mantissa нравится это.
  2. Marylin

    Marylin Active Member

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

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.874
    Marylin,
    программу не пересобирал? Просто запустил из архива?
     
  4. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    224
    у меня нет масма - я просто запустил твой экзешник из архива.
    --- Сообщение объединено, 5 фев 2025 в 14:38 ---
    вот лог отладчика:
    Код (Text):
    1. 0:000> bp @$exentry
    2. *** WARNING: Unable to verify checksum for image00000000`00400000
    3.  
    4. 0:000> bl
    5. 0 e 00000000`00400200     0001 (0001)  0:**** image00000000_00400000+0x200
    6.  
    7. 0:000> g
    8. Breakpoint 0 hit
    9. image00000000_00400000+0x200:
    10. 00000000`00400200 c8500000        enter   50h,0
    11.  
    12. 0:000> g
    13. (450.b94): Access violation - code c0000005 (first chance)
    14. First chance exceptions are reported before any exception handling.
    15. This exception may be expected and handled.
    16. ntdll!LdrpApplyFileNameRedirection+0x37:
    17. 00000000`76eaea37 66833a08        cmp     word ptr [rdx],8 ds:00000000`00000000=????
    18.  
     
  5. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.874
    Marylin,
    откуда-то из глубины LdrpApplyFileNameRedirection я ее не использовал, у меня Windows 10 Pro, всё нормально, а если по шагам, откуда exception?
     
  6. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    168
    у меня работает win 10
     
    Mikl___ нравится это.
  7. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    224
    судя по стеку вызовов или LdrLoadDll(), или LdrGetProcedureAddress()

    Код (Text):
    1.  
    2. 0:000> kv n
    3. # Child-SP           RetAddr            : Args to Child                                                              : Call Site
    4. 00 00000000`0013fc50  00000000`76eb4f91  : 00000000`00000000  00000000`00000000  00000000`76e873c0  00000000`00000000 : ntdll!LdrpApplyFileNameRedirection+0x37
    5. 01 00000000`0013fcf0  00000000`76eb7acc  : 00000000`76e80000  00000000`00000000  00000000`00400361  00000000`00000000 : ntdll!LdrGetDllHandleEx+0x101
    6. 02 00000000`0013fec0  00000000`004002d4  : 00000000`00000017  00000000`0040034a  00000000`00000000  00000000`00000000 : ntdll!LdrGetDllHandle+0x1c
    7. 03 00000000`0013ff00  00000000`00000017  : 00000000`0040034a  00000000`00000000  00000000`00000000  00000000`00000000 : image00000000_00400000+0x2d4
    8. 04 00000000`0013ff08  00000000`0040034a  : 00000000`00000000  00000000`00000000  00000000`00000000  00000000`00400389 : 0x17
    9. 05 00000000`0013ff10  00000000`00000000  : 00000000`00000000  00000000`00000000  00000000`00400389  00000000`00000000 : image00000000_00400000+0x34a
    10.  
    --- Сообщение объединено, 5 фев 2025 в 15:50 ---
    а в x64dbg падает сразу на старте, не успев даже сделать первый вздох:

    tut2.png
     
  8. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    491
  9. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    608
    Опять васик из 70-х.