mirror of
https://github.com/BeneficialCode/WinArk.git
synced 2026-10-17 04:40:35 +08:00
Delay any UI work until ATL/COM and the app module are initialized.
This commit is contained in:
@@ -62,6 +62,6 @@ NTSTATUS BypassAntiKernelDbg::Unbypass() {
|
||||
status = DetourTransactionCommit();
|
||||
if (!NT_SUCCESS(status))
|
||||
return status;
|
||||
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
+39
-39
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user