Код (ASM): ; GUI # include win64a.inc .code WinMain proc local Message:UNICODE_STRING local Result:qword mov rax,qword ptr gs:[60h];Получаем адрес PEB mov rax,[rax+18h];Смещаемся к структуре PEB_LDR_DATA mov rax,[rax+20h];Смещаемся к полю PEB_LDR_DATA.InMemoryOrderModuleList mov rax,[rax] mov rbx,[rax+20h];Базовый адрес ntdll.dll cmp word ptr[rbx].IMAGE_DOS_HEADER.e_magic,IMAGE_DOS_SIGNATURE jne exit_ mov r9d,[rbx].IMAGE_DOS_HEADER.e_lfanew;смещение до PE-заголовка cmp word ptr[rbx+r9],IMAGE_NT_SIGNATURE; jne exit_ ;18h to optional header + 70h to data directories mov r9d,dword ptr[rbx+r9+18h].IMAGE_OPTIONAL_HEADER64.DataDirectory;смещение до секции экспорта ;Пеpейти к таблице экспоpта и получить количество имен (NumberOfNames) add r9,rbx;переходим в таблицу экспорта mov r14d,[r9].IMAGE_EXPORT_DIRECTORY.NumberOfNames;[r9+18h] mov r13d,[r9].IMAGE_EXPORT_DIRECTORY.AddressOfNames;[r9+20h] add r13,rbx mov edx,[r9].IMAGE_EXPORT_DIRECTORY.AddressOfFunctions;[r9+1Ch] lea r12,[rbx+rdx+4];tableOfAddressOfFunctions ;--------------------------------------------------- invoke func,sizeof aLdrLoadDll,&aLdrLoadDll mov Message.woLength,14h mov Message.MaximumLength,16h movr qword ptr Message.Buffer,aUser32_ lea r8,Message mov ecx,1 lea edx,Result mov r9,rdx call rax;LdrLoadDll_ ;--------------------------------------- lea r15,aMessageBoxA mov Message.woLength,12 mov Message.MaximumLength,13 mov Message.Buffer,r15;&aMessageBoxA ;---------------------------------------------------- invoke func,sizeof aLdrGetProcedureAddress,&aLdrGetProcedureAddress xor r8,r8 lea rdx,Message mov [rsp+28h],r15;&aMessageBoxA lea r9,Result mov rcx,[r9] and dword ptr[rsp+20h],0 call rax;LdrGetProcedureAddress_ ;----------------------------------- mov r9d,MB_OK lea r8d,aTitle mov edx,offset aMessage xor ecx,ecx call Result exit_: invoke RtlExitUserProcess,NULL WinMain endp func proc sizeof1:dword,NameProc:dword mov sizeof1,ecx mov NameProc,edx xor edx,edx mov r8,r13 @@: mov edi,[r8] add rdi,rbx mov ecx,sizeof1;sizeof aLdrGetProcedureAddress mov esi,NameProc;offset aLdrGetProcedureAddress repe cmpsb or ecx,ecx je @f add r8,4 add edx,4 dec r14d;NumberOfNames jnz @b @@: mov eax,[r12+rdx] add rax,rbx leave ret func endp ;.data--------------------------------------- aLdrLoadDll db "LdrLoadDll",0 aUser32_ dw 'u','s','e','r','3','2','.','d','l','l',0 aLdrGetProcedureAddress db "LdrGetProcedureAddress",0 aTitle db "MessageBox without import",0 aMessage db "Hello, world!",0 aMessageBoxA db "MessageBoxA",0 end во вложении asm/exe-файл
у меня нет масма - я просто запустил твой экзешник из архива. --- Сообщение объединено, 5 фев 2025 в 14:38 --- вот лог отладчика: Код (Text): 0:000> bp @$exentry *** WARNING: Unable to verify checksum for image00000000`00400000 0:000> bl 0 e 00000000`00400200 0001 (0001) 0:**** image00000000_00400000+0x200 0:000> g Breakpoint 0 hit image00000000_00400000+0x200: 00000000`00400200 c8500000 enter 50h,0 0:000> g (450.b94): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. ntdll!LdrpApplyFileNameRedirection+0x37: 00000000`76eaea37 66833a08 cmp word ptr [rdx],8 ds:00000000`00000000=????
Marylin, откуда-то из глубины LdrpApplyFileNameRedirection я ее не использовал, у меня Windows 10 Pro, всё нормально, а если по шагам, откуда exception?
судя по стеку вызовов или LdrLoadDll(), или LdrGetProcedureAddress() Код (Text): 0:000> kv n # Child-SP RetAddr : Args to Child : Call Site 00 00000000`0013fc50 00000000`76eb4f91 : 00000000`00000000 00000000`00000000 00000000`76e873c0 00000000`00000000 : ntdll!LdrpApplyFileNameRedirection+0x37 01 00000000`0013fcf0 00000000`76eb7acc : 00000000`76e80000 00000000`00000000 00000000`00400361 00000000`00000000 : ntdll!LdrGetDllHandleEx+0x101 02 00000000`0013fec0 00000000`004002d4 : 00000000`00000017 00000000`0040034a 00000000`00000000 00000000`00000000 : ntdll!LdrGetDllHandle+0x1c 03 00000000`0013ff00 00000000`00000017 : 00000000`0040034a 00000000`00000000 00000000`00000000 00000000`00000000 : image00000000_00400000+0x2d4 04 00000000`0013ff08 00000000`0040034a : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00400389 : 0x17 05 00000000`0013ff10 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00400389 00000000`00000000 : image00000000_00400000+0x34a --- Сообщение объединено, 5 фев 2025 в 15:50 --- а в x64dbg падает сразу на старте, не успев даже сделать первый вздох: