Код (Text): 0:000> bp @$exentry 0:000> g Breakpoint 0 hit image00000000_00400000+0x1e0: 00000000`004001e0 c8700000 enter 70h,0 0:000> g (738.e74): Access violation - code c0000005 (first chance) ntdll!LdrLoadDll+0x97: 00000000`7790a3c7 488b7308 mov rsi,qword ptr [rbx+8] ds:00000000`00000008=???????????????? 0:000> k Child-SP RetAddr Call Site 00000000`0013fe70 00000000`0040027c ntdll!LdrLoadDll+0x97 00000000`0013fee0 00000000`00000013 image00000000_00400000+0x27c 00000000`0013fee8 00000000`0000032b 0x13 00000000`0013fef0 00000000`0013ff50 0x32b 00000000`0013fef8 00000000`7793d6cc 0x13ff50 00000000`0013ff00 00000000`00000000 ntdll!RtlGetFileMUIPath+0x1a0ec
Судя по дампу, LdrLoadDll в ntdd.dll отыскивается, но параметры для LdrLoadDll передаются неправильно. Немного поправил
Mikl___, точно та же ошибка. наверное и правда только юзер-отладчик здесь вообще не доходит до точки-входа, поэтому как вариант ставить WinDbg.
Marylin, я разбил на две части, получение адресов LdrLoadDll, LdrGetProcedureAddressEx и RtlExitUserProcess использование этих функций это первая часть
Indy_, спасибо за совет, воспользуюсь. А у вас какая Win? Какая-нибудь из программ в этом топике запускается?
не знаю, что должен делать код, но ret вроде отрабатывает: Код (Text): 0:000> bp @$exentry 0:000> g Breakpoint 0 hit image00000000_00400000+0x200: 00000000`00400200 c8700000 enter 70h,0 0:000> g ntdll!ZwTerminateProcess+0xa: 00000000`76d68d8a c3 ret
Mikl___, Так, раздобылся ноут amd-a8 win10. Семпл из поста #61, #68 отрабатывает норм. #66 работает; Все загрузочные события как говорил в лог, LdrpDebugFlags: -1 на скрине. --- Сообщение объединено, 23 фев 2025 в 20:09 --- Там где падал загрузчик ошибка в этом: Код (Text): lea edx,Result mov r9,rdx call LdrLoadDll_ Должно быть lea rdx. --- Сообщение объединено, 23 фев 2025 в 20:22 --- В аттаче без RtlExit.
никаких изменений от lea rdx,Result ав получаю внутри LdrLoadDll(), о чём говорит смещение +0x97. в спойлере дизасм функции где видно, что падает на входе в RtlInitUnicodeStringEx(): Код (Text): 0:000> bp @$exentry *** WARNING: Unable to verify checksum for image00000001`3f2c0000 0:000> g Breakpoint 0 hit image00000001_3f2c0000+0x1000: 00000001`3f2c1000 c8800000 enter 80h,0 0:000> g (3e4.738): Access violation - code c0000005 (first chance) ntdll!LdrLoadDll+0x97: 00000000`7749a3c7 488b7308 mov rsi,qword ptr [rbx+8] ds:00000000`00000008=???????????????? 0:000> u @rip ntdll!LdrLoadDll+0x97: 00000000`7749a3c7 488b7308 mov rsi,qword ptr [rbx+8] 00000000`7749a3cb 488b1b mov rbx,qword ptr [rbx] 00000000`7749a3ce 488d4c2440 lea rcx,[rsp+40h] 00000000`7749a3d3 488bd3 mov rdx,rbx 00000000`7749a3d6 e88510f3ff call ntdll!RtlInitUnicodeStringEx (00000000`773cb460) 00000000`7749a3db 85c0 test eax,eax 00000000`7749a3dd 0f888c000000 js ntdll!LdrLoadDll+0x13f (00000000`7749a46f) 00000000`7749a3e3 488d542440 lea rdx,[rsp+40h] 0:000> knf # Memory Child-SP RetAddr : Call Site 00 00000000`002afbd0 00000001`3f2c109e : ntdll!LdrLoadDll+0x97 01 70 00000000`002afc40 00000000`00000019 : image00000001_3f2c0000+0x109e 02 8 00000000`002afc48 00000000`00000076 : 0x19 03 8 00000000`002afc50 00000000`002afd50 : 0x76 04 8 00000000`002afc58 00000000`774c9c1e : 0x2afd50 05 8 00000000`002afc60 00000000`00000000 : ntdll!RtlGetFileMUIPath+0x1663e Спойлер: LdrLoadDll Код (Text): 0:000> uf /i LdrLoadDll 92 instructions scanned ntdll!LdrLoadDll: 00000000`7749a330 48895c2410 mov qword ptr [rsp+10h],rbx 00000000`7749a335 48896c2418 mov qword ptr [rsp+18h],rbp 00000000`7749a33a 4889742420 mov qword ptr [rsp+20h],rsi 00000000`7749a33f 57 push rdi 00000000`7749a340 4154 push r12 00000000`7749a342 4155 push r13 00000000`7749a344 4883ec50 sub rsp,50h 00000000`7749a348 4533ed xor r13d,r13d 00000000`7749a34b f605aead030009 test byte ptr [ntdll!LdrpDebugFlags (00000000`774d5100)],9 00000000`7749a352 498be9 mov rbp,r9 00000000`7749a355 4d8be0 mov r12,r8 00000000`7749a358 488bfa mov rdi,rdx 00000000`7749a35b 488bd9 mov rbx,rcx 00000000`7749a35e 498bf5 mov rsi,r13 00000000`7749a361 7450 je ntdll!LdrLoadDll+0x83 (00000000`7749a3b3) ntdll!LdrLoadDll+0x33: 00000000`7749a363 4885c9 test rcx,rcx 00000000`7749a366 7411 je ntdll!LdrLoadDll+0x49 (00000000`7749a379) ntdll!LdrLoadDll+0x38: 00000000`7749a368 f6c101 test cl,1 00000000`7749a36b 7413 je ntdll!LdrLoadDll+0x50 (00000000`7749a380) ntdll!LdrLoadDll+0x3d: 00000000`7749a36d 488bc1 mov rax,rcx 00000000`7749a370 4883e0fe and rax,0FFFFFFFFFFFFFFFEh 00000000`7749a374 488b08 mov rcx,qword ptr [rax] 00000000`7749a377 eb07 jmp ntdll!LdrLoadDll+0x50 (00000000`7749a380) ntdll!LdrLoadDll+0x49: 00000000`7749a379 488d0dd01df8ff lea rcx,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c150)] ntdll!LdrLoadDll+0x50: 00000000`7749a380 48894c2430 mov qword ptr [rsp+30h],rcx 00000000`7749a385 4c89442428 mov qword ptr [rsp+28h],r8 00000000`7749a38a 41b903000000 mov r9d,3 00000000`7749a390 488d05c91df8ff lea rax,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c160)] 00000000`7749a397 4c8d05e21df8ff lea r8,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c180)] 00000000`7749a39e 488d0deb1df8ff lea rcx,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c190)] 00000000`7749a3a5 418d5176 lea edx,[r9+76h] 00000000`7749a3a9 4889442420 mov qword ptr [rsp+20h],rax 00000000`7749a3ae e8bd15feff call ntdll!LdrpLogDbgPrint (00000000`7747b970) ntdll!LdrLoadDll+0x83: 00000000`7749a3b3 4584ed test r13b,r13b 00000000`7749a3b6 7401 je ntdll!LdrLoadDll+0x89 (00000000`7749a3b9) ntdll!LdrLoadDll+0x88: 00000000`7749a3b8 cc int 3 ntdll!LdrLoadDll+0x89: 00000000`7749a3b9 4885db test rbx,rbx 00000000`7749a3bc 742c je ntdll!LdrLoadDll+0xba (00000000`7749a3ea) ntdll!LdrLoadDll+0x8e: 00000000`7749a3be f6c301 test bl,1 00000000`7749a3c1 740b je ntdll!LdrLoadDll+0x9e (00000000`7749a3ce) ntdll!LdrLoadDll+0x93: 00000000`7749a3c3 4883e3fe and rbx,0FFFFFFFFFFFFFFFEh 00000000`7749a3c7 488b7308 mov rsi,qword ptr [rbx+8] ;//<---------[ +0x97 ]-----------------// 00000000`7749a3cb 488b1b mov rbx,qword ptr [rbx] ntdll!LdrLoadDll+0x9e: 00000000`7749a3ce 488d4c2440 lea rcx,[rsp+40h] 00000000`7749a3d3 488bd3 mov rdx,rbx 00000000`7749a3d6 e88510f3ff call ntdll!RtlInitUnicodeStringEx (00000000`773cb460) 00000000`7749a3db 85c0 test eax,eax 00000000`7749a3dd 0f888c000000 js ntdll!LdrLoadDll+0x13f (00000000`7749a46f) ntdll!LdrLoadDll+0xb3: 00000000`7749a3e3 488d542440 lea rdx,[rsp+40h] 00000000`7749a3e8 eb07 jmp ntdll!LdrLoadDll+0xc1 (00000000`7749a3f1) ntdll!LdrLoadDll+0xba: 00000000`7749a3ea 488d159f880400 lea rdx,[ntdll!LdrpDefaultPath (00000000`774e2c90)] ntdll!LdrLoadDll+0xc1: 00000000`7749a3f1 4885ff test rdi,rdi 00000000`7749a3f4 7405 je ntdll!LdrLoadDll+0xcb (00000000`7749a3fb) ntdll!LdrLoadDll+0xc6: 00000000`7749a3f6 448b0f mov r9d,dword ptr [rdi] 00000000`7749a3f9 eb03 jmp ntdll!LdrLoadDll+0xce (00000000`7749a3fe) ntdll!LdrLoadDll+0xcb: 00000000`7749a3fb 458bcd mov r9d,r13d ntdll!LdrLoadDll+0xce: 00000000`7749a3fe 488d442470 lea rax,[rsp+70h] 00000000`7749a403 4c8bc6 mov r8,rsi 00000000`7749a406 498bcc mov rcx,r12 00000000`7749a409 4889442430 mov qword ptr [rsp+30h],rax 00000000`7749a40e 4c896c2428 mov qword ptr [rsp+28h],r13 00000000`7749a413 c644242001 mov byte ptr [rsp+20h],1 00000000`7749a418 e8c3310100 call ntdll!LdrpLoadDll (00000000`774ad5e0) 00000000`7749a41d 8bd8 mov ebx,eax 00000000`7749a41f 85c0 test eax,eax 00000000`7749a421 780d js ntdll!LdrLoadDll+0x100 (00000000`7749a430) ntdll!LdrLoadDll+0xf3: 00000000`7749a423 488b542470 mov rdx,qword ptr [rsp+70h] 00000000`7749a428 4c8b4a30 mov r9,qword ptr [rdx+30h] 00000000`7749a42c 4c894d00 mov qword ptr [rbp],r9 ntdll!LdrLoadDll+0x100: 00000000`7749a430 f605c9ac030009 test byte ptr [ntdll!LdrpDebugFlags (00000000`774d5100)],9 00000000`7749a437 742e je ntdll!LdrLoadDll+0x137 (00000000`7749a467) ntdll!LdrLoadDll+0x109: 00000000`7749a439 89442428 mov dword ptr [rsp+28h],eax 00000000`7749a43d 488d057c1df8ff lea rax,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c1c0)] 00000000`7749a444 4c8d05351df8ff lea r8,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c180)] 00000000`7749a44b 488d0d3e1df8ff lea rcx,[ntdll! ?? ::FNODOBFM::`string' (00000000`7741c190)] 00000000`7749a452 41b904000000 mov r9d,4 00000000`7749a458 bad1000000 mov edx,0D1h 00000000`7749a45d 4889442420 mov qword ptr [rsp+20h],rax 00000000`7749a462 e80915feff call ntdll!LdrpLogDbgPrint (00000000`7747b970) ntdll!LdrLoadDll+0x137: 00000000`7749a467 4584ed test r13b,r13b 00000000`7749a46a 7401 je ntdll!LdrLoadDll+0x13d (00000000`7749a46d) ntdll!LdrLoadDll+0x13c: 00000000`7749a46c cc int 3 ntdll!LdrLoadDll+0x13d: 00000000`7749a46d 8bc3 mov eax,ebx ntdll!LdrLoadDll+0x13f: 00000000`7749a46f 4c8d5c2450 lea r11,[rsp+50h] 00000000`7749a474 498b5b28 mov rbx,qword ptr [r11+28h] 00000000`7749a478 498b6b30 mov rbp,qword ptr [r11+30h] 00000000`7749a47c 498b7338 mov rsi,qword ptr [r11+38h] 00000000`7749a480 498be3 mov rsp,r11 00000000`7749a483 415d pop r13 00000000`7749a485 415c pop r12 00000000`7749a487 5f pop rdi 00000000`7749a488 c3 ret
Код (Text): 0:000> g (500.888): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. ntdll!LdrLoadDll+0x97: 00000000`7749a3c7 488b7308 mov rsi,qword ptr [rbx+8] ds:00000000`00000008=???????????????? 0:000> kvnf # Memory Child-SP RetAddr : Args to Child : Call Site 00 00000000`001df640 00000001`3f0d109e : 00000000`00000019 00000000`00000076 00000000`001df7c0 00000000`774c9c1e : ntdll!LdrLoadDll+0x97 01 70 00000000`001df6b0 00000000`00000019 : 00000000`00000076 00000000`001df7c0 00000000`774c9c1e 00000000`00000000 : image00000001_3f0d0000+0x109e 02 8 00000000`001df6b8 00000000`00000076 : 00000000`001df7c0 00000000`774c9c1e 00000000`00000000 00000000`00000000 : 0x19 03 8 00000000`001df6c0 00000000`001df7c0 : 00000000`774c9c1e 00000000`00000000 00000000`00000000 00000000`00000000 : 0x76 04 8 00000000`001df6c8 00000000`774c9c1e : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x1df7c0 05 8 00000000`001df6d0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlGetFileMUIPath+0x1663e 0:000> r rax=000000013f0d1121 rbx=0000000000000000 rcx=0000000000000001 rdx=00000000001df750 rsi=0000000000000000 rdi=00000000001df750 rip=000000007749a3c7 rsp=00000000001df640 rbp=00000000001df750 r8=00000000001df740 r9=00000000001df750 r10=00000000774c4358 r11=00000000774c6264 r12=00000000001df740 r13=0000000000000000 r14=00000000773b0000 r15=0000000000000000 iopl=0 nv up ei pl zr na po nc cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246 ntdll!LdrLoadDll+0x97: 00000000`7749a3c7 488b7308 mov rsi,qword ptr [rbx+8] ds:00000000`00000008=????????????????
я думаю, что на 4ой странице мне пора уже освободить кому-нибудь место баг-тестера. есть-же вм, куда можно установить Win7.. ну или вообще плюнуть на неё, ведь на 10-ке всё ок. --- Сообщение объединено, 24 фев 2025 в 19:01 --- Код (Text): 0:000> bp LdrLoadDll 0:000> g Breakpoint 1 hit ntdll!LdrLoadDll: 00000000`7749a330 48895c2410 mov qword ptr [rsp+10h],rbx ss:00000000`002ff8c8=0000000000000000 0:000> r rax=000000013f061121 rbx=0000000000000076 rcx=0000000000000001 rdx=00000000002ff960 rsi=00000000774c9c1e rdi=000000000000070e rip=000000007749a330 rsp=00000000002ff8b8 rbp=00000000002ff9d0 r8=00000000002ff950 r9=00000000002ff960 r10=00000000774c4358 r11=00000000774c6264 r12=0000000000118170 r13=0000000000000000 r14=00000000773b0000 r15=0000000000000000 iopl=0 nv up ei pl zr na po nc cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 ntdll!LdrLoadDll: 00000000`7749a330 48895c2410 mov qword ptr [rsp+10h],rbx ss:00000000`002ff8c8=0000000000000000
Как оно может падать!? Посмотрим подробно: Код (Text): LdrLoadDll( _In_opt_ PCWSTR DllPath, _In_opt_ PULONG DllCharacteristics, _In_ PUNICODE_STRING DllName, _Out_ PVOID *DllHandle ); Код (Text): lea r8,Message mov dword ptr [r8],160014h mov qword ptr [r8].UNICODE_STRING.Buffer,ptr$(aUser32_) xor ecx,ecx mov cl,1 lea rdx,Result mov r9,rdx call LdrLoadDll_ Message & Result локальные переменные в стеке. 64 конвенция rCx, rDx, r8, r9: r9 *DllHandle @Result r8 PUNICODE_STRING.Buffer @aUser32_ rDx PULONG @Result rCx 1 rDx DllCharacteristics - аргумент, переменная не инициализирована. Нужно поменять регистр, вот оно что Перед этим падало из за lea edx,Result, тк старшая часть рандом. Со старшей частью rCx тоже косяк. --- Сообщение объединено, 24 фев 2025 в 20:03 --- Вот исправил, попробуйте. Код (Text): lea r8,Message mov dword ptr [r8],160014h mov qword ptr [r8].UNICODE_STRING.Buffer,ptr$(aUser32_) xor rcx,rcx xor rdx,rdx mov cl,1 lea r9,Result call LdrLoadDll_