diff --git a/KernelLibrary/BypassAntiKernelDbg.cpp b/KernelLibrary/BypassAntiKernelDbg.cpp index af22d1c..62a444c 100644 --- a/KernelLibrary/BypassAntiKernelDbg.cpp +++ b/KernelLibrary/BypassAntiKernelDbg.cpp @@ -62,6 +62,6 @@ NTSTATUS BypassAntiKernelDbg::Unbypass() { status = DetourTransactionCommit(); if (!NT_SUCCESS(status)) return status; - + return STATUS_SUCCESS; } \ No newline at end of file diff --git a/WinArk/SymbolFileInfo.cpp b/WinArk/SymbolFileInfo.cpp index 3907088..aa3f53f 100644 --- a/WinArk/SymbolFileInfo.cpp +++ b/WinArk/SymbolFileInfo.cpp @@ -139,13 +139,22 @@ downslib_error SymbolFileInfo::Download(std::string url, std::wstring fileName, } SymbolFileInfo::SymbolFileInfo() { - std::string url = "https://msdl.microsoft.com/download/symbols"; +} + +bool SymbolFileInfo::ConfigureServer(HWND hWndParent) { CConfigServerDbg dlg; - if (dlg.DoModal() == IDOK) { - url = dlg.GetServer(); + if (dlg.DoModal(hWndParent) == IDOK) { + SetServer(dlg.GetServer()); + return true; + } + return false; +} + +void SymbolFileInfo::SetServer(std::string server) { + if (!server.empty()) { + _server = std::move(server); } - _server = url; } SymbolFileInfo::~SymbolFileInfo() { -} \ No newline at end of file +} diff --git a/WinArk/SymbolFileInfo.h b/WinArk/SymbolFileInfo.h index af0e35c..82e9d3d 100644 --- a/WinArk/SymbolFileInfo.h +++ b/WinArk/SymbolFileInfo.h @@ -42,6 +42,8 @@ public: struct SymbolFileInfo { SymbolFileInfo(); ~SymbolFileInfo(); + bool ConfigureServer(HWND hWndParent = nullptr); + void SetServer(std::string server); bool SymDownloadSymbol(std::wstring localFile); bool GetPdbSignature(ULONG_PTR imageBase,PIMAGE_DEBUG_DIRECTORY entry); downslib_error Download(std::string url, std::wstring fileName, @@ -52,4 +54,4 @@ struct SymbolFileInfo { PdbValidationData _pdbValidation; CString _path; std::string _server = "https://msdl.microsoft.com/download/symbols"; -}; \ No newline at end of file +}; diff --git a/WinArk/WinArk.cpp b/WinArk/WinArk.cpp index f3ae668..2b13d02 100644 --- a/WinArk/WinArk.cpp +++ b/WinArk/WinArk.cpp @@ -123,6 +123,9 @@ int Run(LPTSTR lpstrCmdLine = nullptr, int nCmdShow = SW_SHOWDEFAULT) { CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); + // Delay any UI work until ATL/COM and the app module are initialized. + g_SymbolHelper.ConfigureServer(); + HANDLE hThread = ::CreateThread(nullptr, 0, [](auto param)->DWORD { std::string name = Helpers::GetNtosFileName(); std::wstring osFileName = Helpers::StringToWstring(name); diff --git a/phnt/ntioapi.h b/phnt/ntioapi.h index c0bf1f1..139d6bd 100644 --- a/phnt/ntioapi.h +++ b/phnt/ntioapi.h @@ -753,20 +753,20 @@ typedef struct _FILE_ID_EXTD_BOTH_DIR_INFORMATION } FILE_ID_EXTD_BOTH_DIR_INFORMATION, *PFILE_ID_EXTD_BOTH_DIR_INFORMATION; // private -typedef struct _FILE_STAT_INFORMATION -{ - LARGE_INTEGER FileId; - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG FileAttributes; - ULONG ReparseTag; - ULONG NumberOfLinks; - ULONG EffectiveAccess; -} FILE_STAT_INFORMATION, *PFILE_STAT_INFORMATION; +//typedef struct _FILE_STAT_INFORMATION +//{ +// LARGE_INTEGER FileId; +// LARGE_INTEGER CreationTime; +// LARGE_INTEGER LastAccessTime; +// LARGE_INTEGER LastWriteTime; +// LARGE_INTEGER ChangeTime; +// LARGE_INTEGER AllocationSize; +// LARGE_INTEGER EndOfFile; +// ULONG FileAttributes; +// ULONG ReparseTag; +// ULONG NumberOfLinks; +// ULONG EffectiveAccess; +//} FILE_STAT_INFORMATION, *PFILE_STAT_INFORMATION; // private typedef struct _FILE_MEMORY_PARTITION_INFORMATION @@ -783,33 +783,33 @@ typedef struct _FILE_MEMORY_PARTITION_INFORMATION } Flags; } FILE_MEMORY_PARTITION_INFORMATION, *PFILE_MEMORY_PARTITION_INFORMATION; -// private -typedef struct _FILE_STAT_LX_INFORMATION -{ - LARGE_INTEGER FileId; - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG FileAttributes; - ULONG ReparseTag; - ULONG NumberOfLinks; - ULONG EffectiveAccess; - ULONG LxFlags; - ULONG LxUid; - ULONG LxGid; - ULONG LxMode; - ULONG LxDeviceIdMajor; - ULONG LxDeviceIdMinor; -} FILE_STAT_LX_INFORMATION, *PFILE_STAT_LX_INFORMATION; +//// private +//typedef struct _FILE_STAT_LX_INFORMATION +//{ +// LARGE_INTEGER FileId; +// LARGE_INTEGER CreationTime; +// LARGE_INTEGER LastAccessTime; +// LARGE_INTEGER LastWriteTime; +// LARGE_INTEGER ChangeTime; +// LARGE_INTEGER AllocationSize; +// LARGE_INTEGER EndOfFile; +// ULONG FileAttributes; +// ULONG ReparseTag; +// ULONG NumberOfLinks; +// ULONG EffectiveAccess; +// ULONG LxFlags; +// ULONG LxUid; +// ULONG LxGid; +// ULONG LxMode; +// ULONG LxDeviceIdMajor; +// ULONG LxDeviceIdMinor; +//} FILE_STAT_LX_INFORMATION, *PFILE_STAT_LX_INFORMATION; // private -typedef struct _FILE_CASE_SENSITIVE_INFORMATION -{ - ULONG Flags; -} FILE_CASE_SENSITIVE_INFORMATION, *PFILE_CASE_SENSITIVE_INFORMATION; +//typedef struct _FILE_CASE_SENSITIVE_INFORMATION +//{ +// ULONG Flags; +//} FILE_CASE_SENSITIVE_INFORMATION, *PFILE_CASE_SENSITIVE_INFORMATION; // NtQueryDirectoryFile types