From: Dāvis Mosāns davispuh@gmail.com
x64dbg (TitanEngine) expects that system breakpoint is first breakpoint that will be triggered. Before this patch that wasn't the case causing user breakpoint (eg. in some DLL) to be swallowed instead. --- dlls/ntdll/loader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 59624bc70f8..f06e657cc45 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -4368,6 +4368,7 @@ void loader_init( CONTEXT *context, void **entry ) NtTerminateProcess( GetCurrentProcess(), status ); }
+ process_breakpoint(); if ((status = walk_node_dependencies( wm->ldr.DdagNode, context, process_attach ))) { if (last_failed_modref) @@ -4380,7 +4381,6 @@ void loader_init( CONTEXT *context, void **entry ) release_address_space(); if (wm->ldr.TlsIndex == -1) call_tls_callbacks( wm->ldr.DllBase, DLL_PROCESS_ATTACH ); if (wm->ldr.ActivationContext) RtlDeactivateActivationContext( 0, cookie ); - process_breakpoint(); } else {