36 *module_start_addr = 0;
69 DbgPrint(
"EDX: %.8x EBP: %.8x ESI: %.8x ESP: %.8x\n", pc->
Edx,
72 #elif defined(_M_AMD64) 76 DbgPrint(
"RAX: %I64x RBX: %I64x RCX: %I64x RDI: %I64x\n", pc->Rax, pc->Rbx, pc->Rcx, pc->Rdi);
77 DbgPrint(
"RDX: %I64x RBP: %I64x RSI: %I64x RSP: %I64x\n", pc->Rdx, pc->Rbp, pc->Rsi, pc->Rsp);
78 DbgPrint(
"R8: %I64x R9: %I64x R10: %I64x R11: %I64x\n", pc->
R8, pc->
R9, pc->
R10, pc->
R11);
79 DbgPrint(
"R12: %I64x R13: %I64x R14: %I64x R15: %I64x\n", pc->
R12, pc->R13, pc->R14, pc->R15);
82 DbgPrint(
"PC: %08lx LR: %08lx SP: %08lx\n", pc->
Pc);
83 DbgPrint(
"R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", pc->
R0, pc->
R1, pc->
R2, pc->
R3);
84 DbgPrint(
"R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", pc->
R4, pc->
R5, pc->
R6, pc->
R7);
85 DbgPrint(
"R8: %08lx R9: %08lx R10: %08lx R11: %08lx\n", pc->
R8, pc->
R9, pc->
R10, pc->
R11);
88 #error "Unknown architecture" 96 CHAR szMod[128] =
"", *szModFile;
112 DbgPrint(
"Address:\n<%s:%x> (%s@%x)\n",
125 for (
i = 0; Frame[1] != 0 && Frame[1] != 0xdeadbeef &&
i < 128;
i++)
129 DbgPrint(
"<%s:%x>\n",
"[invalid address]", Frame[1]);
134 szMod,
sizeof(szMod), &szModFile);
278 ULONG DebugResponse, ErrorResponse;
339 DPRINT(
"Passing exception to debugger\n");
348 RetValue = RealFilter(ExceptionInfo);
423 AeDebugAuto = (*(
PWCHAR)PartialInfo->
Data ==
L'1');
449 while ( *AeDebugPath &&
450 ((*AeDebugPath ==
L' ') ||
451 (*AeDebugPath ==
L'\t')) )
493 if (!(AeDebugPath && AeDebugAuto))
505 (!IsSecondChance ? DebugResponse :
OptionOk),
524 IsSecondChance =
TRUE;
569 if ((*AeDebugPath !=
L'"') &&
605 DPRINT1(
"\nStarting debugger: '%S'\n", AeDebugCmdLine);
610 StartupInfo.
cb =
sizeof(StartupInfo);
618 &StartupInfo, &ProcessInfo);
623 WaitHandles[0] = hDebugEvent;
624 WaitHandles[1] = ProcessInfo.
hProcess;
651 IsSecondChance =
TRUE;
669 IsSecondChance =
TRUE;
722 nNumberOfArguments *
sizeof(
ULONG));
726 if (dwExceptionCode == 0xeedface || dwExceptionCode == 0xeedfade)
734 if (dwExceptionCode == 0x80000100 )
755 UINT PrevErrMode, NewMode;
794 PVOID EncodedPointer, EncodedOldPointer;
812 volatile CHAR *Current;
816 if (!ucb)
return FALSE;
817 if (!lp)
return TRUE;
823 Current = (
volatile CHAR*)lp;
827 if (Last < Current)
return TRUE;
840 while (Current != Last)
890 volatile CHAR *Current;
894 if (!ucb)
return FALSE;
895 if (!lp)
return TRUE;
901 Current = (
volatile CHAR*)lp;
905 if (Last < Current)
return TRUE;
918 while (Current != Last)
956 volatile WCHAR *Current;
961 if (!ucchMax)
return FALSE;
962 if (!lpsz)
return TRUE;
965 Current = (
volatile WCHAR*)lpsz;
973 while ((Char) && (Current != Last)) Char = *Current++;
995 volatile CHAR *Current;
1000 if (!ucchMax)
return FALSE;
1001 if (!lpsz)
return TRUE;
1004 Current = (
volatile CHAR*)lpsz;
1012 while ((Char) && (Current != Last)) Char = *Current++;
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
UINT WINAPI SetErrorMode(IN UINT uMode)
BOOL NTAPI IsBadHugeWritePtr(IN LPVOID lp, IN UINT_PTR ucb)
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOL NTAPI IsBadWritePtr(IN LPVOID lp, IN UINT_PTR ucb)
#define SEM_FAILCRITICALERRORS
#define OBJ_CASE_INSENSITIVE
NTSTATUS NTAPI NtRaiseHardError(IN NTSTATUS ErrorStatus, IN ULONG NumberOfParameters, IN ULONG UnicodeStringParameterMask, IN PULONG_PTR Parameters, IN ULONG ValidResponseOptions, OUT PULONG Response)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
PBASE_STATIC_SERVER_DATA BaseStaticServerData
static LPCWSTR LPCWSTR module_name
NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID)
#define SEM_NOALIGNMENTFAULTEXCEPT
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
LONG WINAPI BasepCheckForReadOnlyResource(IN PVOID Ptr)
NTSTATUS NTAPI NtProtectVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UnsafeBaseAddress, IN OUT SIZE_T *UnsafeNumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG UnsafeOldAccessProtection)
NTSTATUS NTAPI NtQueryInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, OUT PVOID ProcessInformation, IN ULONG ProcessInformationLength, OUT PULONG ReturnLength OPTIONAL)
#define EXCEPTION_NONCONTINUABLE
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
NTSTATUS NTAPI NtQueryVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, IN MEMORY_INFORMATION_CLASS MemoryInformationClass, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
IN PVOID IN PVOID IN USHORT IN USHORT Size
DWORD WINAPI GetLastError(VOID)
static VOID _dump_context(PCONTEXT pc)
#define EXCEPTION_MAXIMUM_PARAMETERS
NTSTATUS NTAPI NtWaitForMultipleObjects(IN ULONG ObjectCount, IN PHANDLE HandleArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, IN PLARGE_INTEGER TimeOut OPTIONAL)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
BOOL NTAPI IsBadHugeReadPtr(LPCVOID lp, UINT_PTR ucb)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
DWORD g_dwLastErrorToBreakOn
VOID WINAPI SetLastError(IN DWORD dwErrCode)
BOOL NTAPI IsBadCodePtr(FARPROC lpfn)
#define HARDERROR_OVERRIDE_ERRORMODE
#define EXCEPTION_CONTINUE_SEARCH
#define REGSTR_PATH_AEDEBUG
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI DECLSPEC_HOTPATCH SetUnhandledExceptionFilter(IN LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
UINT WINAPI GetErrorMode(VOID)
LONG WINAPI UnhandledExceptionFilter(IN PEXCEPTION_POINTERS ExceptionInfo)
#define RTL_SEM_NOGPFAULTERRORBOX
#define EXCEPTION_EXECUTE_HANDLER
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
DWORD BaseSetLastNTError(IN NTSTATUS Status)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
#define NtCurrentProcess()
SYSTEM_BASIC_INFORMATION SysInfo
#define EXCEPTION_EXECUTE_FAULT
#define DECLSPEC_HOTPATCH
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
#define InterlockedExchangePointer(Target, Value)
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
_Out_ PCLIENT_ID ClientId
BOOLEAN BaseRunningInServerProcess
#define NT_SUCCESS(StatCode)
SIZE_T NTAPI VirtualQuery(IN LPCVOID lpAddress, OUT PMEMORY_BASIC_INFORMATION lpBuffer, IN SIZE_T dwLength)
unsigned __int3264 UINT_PTR
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT * ContextRecord
#define REGSTR_VAL_AEDEBUG_AUTO
GLenum const GLvoid * addr
#define RtlImageDirectoryEntryToData
#define EXCEPTION_WRITE_FAULT
static const char * _module_name_from_addr(const void *addr, void **module_start_addr, char *psz, size_t nChars, char **module_name)
PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER
#define SEM_NOGPFAULTERRORBOX
#define REGSTR_VAL_AEDEBUG_DEBUGGER
struct _EXCEPTION_RECORD * ExceptionRecord
#define EXCEPTION_NESTED_CALL
static VOID PrintStackTrace(IN PEXCEPTION_POINTERS ExceptionInfo)
BOOL NTAPI IsBadStringPtrA(IN LPCSTR lpsz, IN UINT_PTR ucchMax)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
NTSTATUS NTAPI NtSetInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, IN PVOID ProcessInformation, IN ULONG ProcessInformationLength)
VOID WINAPI RaiseException(IN DWORD dwExceptionCode, IN DWORD dwExceptionFlags, IN DWORD nNumberOfArguments, IN CONST ULONG_PTR *lpArguments OPTIONAL)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define STATUS_ACCESS_VIOLATION
struct _KEY_VALUE_PARTIAL_INFORMATION KEY_VALUE_PARTIAL_INFORMATION
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
BOOL WINAPI IsBadReadPtr(IN LPCVOID lp, IN UINT_PTR ucb)
BOOL NTAPI IsBadStringPtrW(IN LPCWSTR lpsz, IN UINT_PTR ucchMax)
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
NTSTATUS NTAPI NtTerminateProcess(HANDLE ProcessHandle, LONG ExitStatus)
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void)
#define _SEH2_EXCEPT(...)
#define STATUS_IN_PAGE_ERROR
#define _SEH2_GetExceptionCode()
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
#define STATUS_UNHANDLED_EXCEPTION
#define ALIGN_DOWN_POINTER_BY(ptr, align)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID)
NTSYSAPI RTL_PATH_TYPE NTAPI RtlDetermineDosPathNameType_U(_In_ PCWSTR Path)
#define EXCEPTION_CONTINUE_EXECUTION
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL