diff --git a/.gitignore b/.gitignore index b0326d9..90b4410 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,8 @@ OfficeAssistant_msvc.VC.VC.opendb OfficeAssistant_msvc.VC.db OfficeAssistant_msvc.v12.suo OfficeAssistant_msvc.sdf -.vs/ \ No newline at end of file +.vs/ +startcalc/Debug/ +startcalc/Release/ +wxdk/Debug/ +wxdk/Release/ \ No newline at end of file diff --git a/OfficeAssistant_msvc.VC.db b/OfficeAssistant_msvc.VC.db index c35a662..ce2643c 100644 Binary files a/OfficeAssistant_msvc.VC.db and b/OfficeAssistant_msvc.VC.db differ diff --git a/OfficeAssistant_msvc.sln b/OfficeAssistant_msvc.sln index fe9391b..5cc90dc 100644 --- a/OfficeAssistant_msvc.sln +++ b/OfficeAssistant_msvc.sln @@ -5,16 +5,40 @@ VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OfficeAssistant_msvc", "OfficeAssistant_msvc\OfficeAssistant_msvc.vcxproj", "{A49230DF-A869-4AA1-8ACA-3C7322530E46}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxdk", "wxdk\wxdk.vcxproj", "{EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "startcalc", "startcalc\startcalc.vcxproj", "{4433F5C3-0237-403B-A997-264E56C78F53}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A49230DF-A869-4AA1-8ACA-3C7322530E46}.Debug|x64.ActiveCfg = Debug|Win32 {A49230DF-A869-4AA1-8ACA-3C7322530E46}.Debug|x86.ActiveCfg = Debug|Win32 {A49230DF-A869-4AA1-8ACA-3C7322530E46}.Debug|x86.Build.0 = Debug|Win32 + {A49230DF-A869-4AA1-8ACA-3C7322530E46}.Release|x64.ActiveCfg = Release|Win32 {A49230DF-A869-4AA1-8ACA-3C7322530E46}.Release|x86.ActiveCfg = Release|Win32 {A49230DF-A869-4AA1-8ACA-3C7322530E46}.Release|x86.Build.0 = Release|Win32 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Debug|x64.ActiveCfg = Debug|x64 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Debug|x64.Build.0 = Debug|x64 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Debug|x86.ActiveCfg = Debug|Win32 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Debug|x86.Build.0 = Debug|Win32 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Release|x64.ActiveCfg = Release|x64 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Release|x64.Build.0 = Release|x64 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Release|x86.ActiveCfg = Release|Win32 + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB}.Release|x86.Build.0 = Release|Win32 + {4433F5C3-0237-403B-A997-264E56C78F53}.Debug|x64.ActiveCfg = Debug|x64 + {4433F5C3-0237-403B-A997-264E56C78F53}.Debug|x64.Build.0 = Debug|x64 + {4433F5C3-0237-403B-A997-264E56C78F53}.Debug|x86.ActiveCfg = Debug|Win32 + {4433F5C3-0237-403B-A997-264E56C78F53}.Debug|x86.Build.0 = Debug|Win32 + {4433F5C3-0237-403B-A997-264E56C78F53}.Release|x64.ActiveCfg = Release|x64 + {4433F5C3-0237-403B-A997-264E56C78F53}.Release|x64.Build.0 = Release|x64 + {4433F5C3-0237-403B-A997-264E56C78F53}.Release|x86.ActiveCfg = Release|Win32 + {4433F5C3-0237-403B-A997-264E56C78F53}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/OfficeAssistant_msvc/MyButton.cpp b/OfficeAssistant_msvc/MyButton.cpp index 7fe1c88..e240d87 100644 --- a/OfficeAssistant_msvc/MyButton.cpp +++ b/OfficeAssistant_msvc/MyButton.cpp @@ -69,5 +69,8 @@ void MyButton::mouseReleaseEvent(QMouseEvent *event) { checked=false; else checked=true; + if (text == "¼ÆËãÆ÷") { + + } } diff --git a/OfficeAssistant_msvc/OfficeAssistant_msvc.vcxproj.user b/OfficeAssistant_msvc/OfficeAssistant_msvc.vcxproj.user index 2b109ad..5160224 100644 --- a/OfficeAssistant_msvc/OfficeAssistant_msvc.vcxproj.user +++ b/OfficeAssistant_msvc/OfficeAssistant_msvc.vcxproj.user @@ -1,10 +1,13 @@  - + + 79c86fb12b36dfa33d1a537c9af100b4c7928a9c + WindowsLocalDebugger + - 2023-07-28T22:55:30.5913647Z + 2023-07-29T21:43:00.7608665Z - 2023-07-28T22:55:31.6946123Z + 2023-07-29T21:43:07.2652440Z \ No newline at end of file diff --git a/startcalc/main.cpp b/startcalc/main.cpp new file mode 100644 index 0000000..5ed9681 --- /dev/null +++ b/startcalc/main.cpp @@ -0,0 +1,10 @@ +#include +#include +int WINAPI WinMain( + HINSTANCE hInstance, + HINSTANCE hPrevInstance, + PSTR nCmdLine, + int iCmdShow) { + WinExec("calc.exe", SW_SHOW); + return 0; +} \ No newline at end of file diff --git a/startcalc/openwechat.h b/startcalc/openwechat.h new file mode 100644 index 0000000..320d7d9 --- /dev/null +++ b/startcalc/openwechat.h @@ -0,0 +1,80 @@ +#pragma once +#include +typedef enum _SYSTEM_INFORMATION_CLASS { + SystemBasicInformation, // 0 Y N + SystemProcessorInformation, // 1 Y N + SystemPerformanceInformation, // 2 Y N + SystemTimeOfDayInformation, // 3 Y N + SystemNotImplemented1, // 4 Y N + SystemProcessesAndThreadsInformation, // 5 Y N + SystemCallCounts, // 6 Y N + SystemConfigurationInformation, // 7 Y N + SystemProcessorTimes, // 8 Y N + SystemGlobalFlag, // 9 Y Y + SystemNotImplemented2, // 10 Y N + SystemModuleInformation, // 11 Y N + SystemLockInformation, // 12 Y N + SystemNotImplemented3, // 13 Y N + SystemNotImplemented4, // 14 Y N + SystemNotImplemented5, // 15 Y N + SystemHandleInformation, // 16 Y N + SystemObjectInformation, // 17 Y N + SystemPagefileInformation, // 18 Y N + SystemInstructionEmulationCounts, // 19 Y N + SystemInvalidInfoClass1, // 20 + SystemCacheInformation, // 21 Y Y + SystemPoolTagInformation, // 22 Y N + SystemProcessorStatistics, // 23 Y N + SystemDpcInformation, // 24 Y Y + SystemNotImplemented6, // 25 Y N + SystemLoadImage, // 26 N Y + SystemUnloadImage, // 27 N Y + SystemTimeAdjustment, // 28 Y Y + SystemNotImplemented7, // 29 Y N + SystemNotImplemented8, // 30 Y N + SystemNotImplemented9, // 31 Y N + SystemCrashDumpInformation, // 32 Y N + SystemExceptionInformation, // 33 Y N + SystemCrashDumpStateInformation, // 34 Y Y/N + SystemKernelDebuggerInformation, // 35 Y N + SystemContextSwitchInformation, // 36 Y N + SystemRegistryQuotaInformation, // 37 Y Y + SystemLoadAndCallImage, // 38 N Y + SystemPrioritySeparation, // 39 N Y + SystemNotImplemented10, // 40 Y N + SystemNotImplemented11, // 41 Y N + SystemInvalidInfoClass2, // 42 + SystemInvalidInfoClass3, // 43 + SystemTimeZoneInformation, // 44 Y N + SystemLookasideInformation, // 45 Y N + SystemSetTimeSlipEvent, // 46 N Y + SystemCreateSession, // 47 N Y + SystemDeleteSession, // 48 N Y + SystemInvalidInfoClass4, // 49 + SystemRangeStartInformation, // 50 Y N + SystemVerifierInformation, // 51 Y Y + SystemAddVerifier, // 52 N Y + SystemSessionProcessesInformation // 53 Y N +} SYSTEM_INFORMATION_CLASS; + +typedef NTSTATUS +(NTAPI *ZWQUERYSYSTEMINFORMATION)( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT PULONG ReturnLength OPTIONAL + ); +typedef enum _OBJECT_INFORMATION_CLASS { + ObjectBasicInformation, + ObjectNameInformation, + ObjectTypeInformation, + ObjectAllInformation, + ObjectDataInformation +} OBJECT_INFORMATION_CLASS; +typedef NTSTATUS(NTAPI *NTQUERYOBJECT)( + _In_opt_ HANDLE Handle, + _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, + _Out_opt_ PVOID ObjectInformation, + _In_ ULONG ObjectInformationLength, + _Out_opt_ PULONG ReturnLength + ); diff --git a/startcalc/startcalc.vcxproj b/startcalc/startcalc.vcxproj new file mode 100644 index 0000000..d2b9f78 --- /dev/null +++ b/startcalc/startcalc.vcxproj @@ -0,0 +1,150 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {4433F5C3-0237-403B-A997-264E56C78F53} + Win32Proj + startcalc + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + + + Windows + true + + + + + + + Level3 + Disabled + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/startcalc/startcalc.vcxproj.filters b/startcalc/startcalc.vcxproj.filters new file mode 100644 index 0000000..203a71c --- /dev/null +++ b/startcalc/startcalc.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + æºæ–‡ä»¶ + + + \ No newline at end of file diff --git a/wxdk/main.cpp b/wxdk/main.cpp new file mode 100644 index 0000000..f2de172 --- /dev/null +++ b/wxdk/main.cpp @@ -0,0 +1,294 @@ +#define KEY "79c86fb12b36dfa33d1a537c9af100b4c7928a9c" +#include "openwechat.h" +#include +#include +#include +#include +#include +ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation = (ZWQUERYSYSTEMINFORMATION)GetProcAddress(GetModuleHandleA("ntdll.dll"), "ZwQuerySystemInformation"); +NTQUERYOBJECT NtQueryObject = (NTQUERYOBJECT)GetProcAddress( + GetModuleHandleA("ntdll.dll"), "NtQueryObject"); +BOOL IsTargetPid(DWORD Pid, std::vector Pids, int num) +{ + for (auto pid:Pids) + { + if (Pid == pid) + { + return TRUE; + } + } + return FALSE; +} +HANDLE DuplicateHandleEx(DWORD pid, HANDLE h, DWORD flags) +{ + HANDLE hHandle = NULL; + + HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); + if (hProc) + { + if (!DuplicateHandle(hProc, + (HANDLE)h, GetCurrentProcess(), + &hHandle, 0, FALSE, /*DUPLICATE_SAME_ACCESS*/flags)) + { + hHandle = NULL; + } + } + + CloseHandle(hProc); + return hHandle; +} + +typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO { + USHORT UniqueProcessId; + USHORT CreatorBackTraceIndex; + UCHAR ObjectTypeIndex; + UCHAR HandleAttributes; + USHORT HandleValue; + PVOID Object; + ULONG GrantedAccess; +} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO; +typedef struct +{ + USHORT Length; + USHORT MaxLen; + USHORT *Buffer; +}UNICODE_STRING, *PUNICODE_STRING; +typedef struct _OBJECT_NAME_INFORMATION { + UNICODE_STRING Name; +} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; + +typedef struct _SYSTEM_HANDLE_INFORMATION1 { + ULONG NumberOfHandles; + SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1]; +} SYSTEM_HANDLE_INFORMATION1, *PSYSTEM_HANDLE_INFORMATION1; + +DWORD qureyProcessId(std::wstring name, std::vector *pids) { + DWORD pid; + PROCESSENTRY32 entry; + entry.dwSize = sizeof(PROCESSENTRY32); + + HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); + + if (Process32First(snapshot, &entry) == TRUE) + { + while (Process32Next(snapshot, &entry) == TRUE) + { + if (std::wstring(entry.szExeFile) == name) { + HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); + pid = GetProcessId(hProcess); + CloseHandle(hProcess); + pids->emplace_back(pid); + } + } + } + CloseHandle(snapshot); + return pid; +} +BOOL ElevatePrivileges() +{ + HANDLE hToken; + TOKEN_PRIVILEGES tkp; + tkp.PrivilegeCount = 1; + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) + return FALSE; + LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid); + tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)) + { + return FALSE; + } + + return TRUE; +} +int PatchWeChat() +{ + DWORD dwSize = 0; + POBJECT_NAME_INFORMATION pNameInfo; + POBJECT_NAME_INFORMATION pNameType; + PVOID pbuffer = NULL; + NTSTATUS Status; + int nIndex = 0; + DWORD dwFlags = 0; + char szType[128] = { 0 }; + char szName[512] = { 0 }; + PSYSTEM_HANDLE_INFORMATION1 pHandleInfo = NULL; + int ret = -1; + + ElevatePrivileges(); + std::vector pids; + DWORD Num = qureyProcessId(L"WeChat.exe", &pids); + if (Num == 0) + { + return ret; + } + + if (!ZwQuerySystemInformation) + { + goto Exit0; + } + + pbuffer = VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE); + + if (!pbuffer) + { + goto Exit0; + } + + Status = ZwQuerySystemInformation(SystemHandleInformation, pbuffer, 0x1000, &dwSize); + + if (Status<0) + { + if ((LONG)0xC0000004L != Status) + { + goto Exit0; + } + else + { + // ÕâÀï´ó¼Ò¿ÉÒÔ±£Ö¤³ÌÐòµÄÕýÈ·ÐÔʹÓÃÑ­»··ÖÅäÉԺà + if (NULL != pbuffer) + { + VirtualFree(pbuffer, 0, MEM_RELEASE); + } + + if (dwSize * 2 > 0x4000000) // MAXSIZE + { + goto Exit0; + } + + pbuffer = VirtualAlloc(NULL, dwSize * 2, MEM_COMMIT, PAGE_READWRITE); + + if (!pbuffer) + { + goto Exit0; + } + + Status = ZwQuerySystemInformation(SystemHandleInformation, pbuffer, dwSize * 2, NULL); + + if (Status<0) + { + goto Exit0; + } + } + } + + pHandleInfo = (PSYSTEM_HANDLE_INFORMATION1)pbuffer; + + for (nIndex = 0; nIndex < pHandleInfo->NumberOfHandles; nIndex++) + { + if (IsTargetPid(pHandleInfo->Handles[nIndex].UniqueProcessId, pids, Num)) + { + // + HANDLE hHandle = DuplicateHandleEx(pHandleInfo->Handles[nIndex].UniqueProcessId, + (HANDLE)pHandleInfo->Handles[nIndex].HandleValue, + DUPLICATE_SAME_ACCESS + ); + if (hHandle == NULL) continue; + + Status = NtQueryObject(hHandle, ObjectNameInformation, szName, 512, &dwFlags); + + if (Status<0) + { + CloseHandle(hHandle); + continue; + } + + Status = NtQueryObject(hHandle, ObjectTypeInformation, szType, 128, &dwFlags); + + if (Status<0) + { + CloseHandle(hHandle); + continue; + } + + pNameInfo = (POBJECT_NAME_INFORMATION)szName; + pNameType = (POBJECT_NAME_INFORMATION)szType; + + WCHAR TypName[1024] = { 0 }; + WCHAR Name[1024] = { 0 }; + + wcsncpy_s(TypName, (WCHAR*)pNameType->Name.Buffer, pNameType->Name.Length / 2); + wcsncpy_s(Name, (WCHAR*)pNameInfo->Name.Buffer, pNameInfo->Name.Length / 2); + + // Æ¥ÅäÊÇ·ñΪÐèÒª¹Ø±ÕµÄ¾ä±úÃû³Æ + if (0 == wcscmp(TypName, L"Mutant")) + { + //WeChat_aj5r8jpxt_Instance_Identity_Mutex_Name + //if (wcsstr(Name, L"_WeChat_App_Instance_Identity_Mutex_Name")) + if (wcsstr(Name, L"_WeChat_") && + wcsstr(Name, L"_Instance_Identity_Mutex_Name")) + { + CloseHandle(hHandle); + + hHandle = DuplicateHandleEx(pHandleInfo->Handles[nIndex].UniqueProcessId, + (HANDLE)pHandleInfo->Handles[nIndex].HandleValue, + DUPLICATE_CLOSE_SOURCE + ); + + if (hHandle) + { + ret = ERROR_SUCCESS; + CloseHandle(hHandle); + } + else + { + ret = GetLastError(); + } + + //goto Exit0; + } + } + + CloseHandle(hHandle); + } + + } + +Exit0: + if (NULL != pbuffer) + { + VirtualFree(pbuffer, 0, MEM_RELEASE); + } + + return ret; +} +int WINAPI WinMain( + HINSTANCE hInstance, + HINSTANCE hPrevInstance, + PSTR nCmdLine, + int iCmdShow +) { + if (strcmp(nCmdLine, KEY) != 0){ + return 0; + } + else { + int ret = 1; + PatchWeChat(); + WCHAR Path[1024]; + HKEY hKey = NULL; + if (ERROR_SUCCESS != RegOpenKey(HKEY_CURRENT_USER, L"Software\\Tencent\\WeChat", &hKey)) + { + + return ret; + } + + DWORD Type = REG_SZ; + // WCHAR Path[MAX_PATH] = { 0 }; + DWORD cbData = MAX_PATH * sizeof(WCHAR); + if (ERROR_SUCCESS != RegQueryValueEx(hKey, L"InstallPath", 0, &Type, (LPBYTE)Path, &cbData)) + { + ret = GetLastError(); + if (hKey) + { + RegCloseKey(hKey); + } + return ret; + } + WCHAR exe[1024]; + wcscpy_s(exe, Path); + wcscat_s(exe, L"\\WeChat.exe"); + + ShellExecute(GetDesktopWindow(), L"open", exe, L"", Path, SW_SHOW); + + } + return 0; +} \ No newline at end of file diff --git a/wxdk/openwechat.h b/wxdk/openwechat.h new file mode 100644 index 0000000..23d99f3 --- /dev/null +++ b/wxdk/openwechat.h @@ -0,0 +1,81 @@ +#pragma once +#include +typedef enum _SYSTEM_INFORMATION_CLASS { + SystemBasicInformation, // 0 Y N + SystemProcessorInformation, // 1 Y N + SystemPerformanceInformation, // 2 Y N + SystemTimeOfDayInformation, // 3 Y N + SystemNotImplemented1, // 4 Y N + SystemProcessesAndThreadsInformation, // 5 Y N + SystemCallCounts, // 6 Y N + SystemConfigurationInformation, // 7 Y N + SystemProcessorTimes, // 8 Y N + SystemGlobalFlag, // 9 Y Y + SystemNotImplemented2, // 10 Y N + SystemModuleInformation, // 11 Y N + SystemLockInformation, // 12 Y N + SystemNotImplemented3, // 13 Y N + SystemNotImplemented4, // 14 Y N + SystemNotImplemented5, // 15 Y N + SystemHandleInformation, // 16 Y N + SystemObjectInformation, // 17 Y N + SystemPagefileInformation, // 18 Y N + SystemInstructionEmulationCounts, // 19 Y N + SystemInvalidInfoClass1, // 20 + SystemCacheInformation, // 21 Y Y + SystemPoolTagInformation, // 22 Y N + SystemProcessorStatistics, // 23 Y N + SystemDpcInformation, // 24 Y Y + SystemNotImplemented6, // 25 Y N + SystemLoadImage, // 26 N Y + SystemUnloadImage, // 27 N Y + SystemTimeAdjustment, // 28 Y Y + SystemNotImplemented7, // 29 Y N + SystemNotImplemented8, // 30 Y N + SystemNotImplemented9, // 31 Y N + SystemCrashDumpInformation, // 32 Y N + SystemExceptionInformation, // 33 Y N + SystemCrashDumpStateInformation, // 34 Y Y/N + SystemKernelDebuggerInformation, // 35 Y N + SystemContextSwitchInformation, // 36 Y N + SystemRegistryQuotaInformation, // 37 Y Y + SystemLoadAndCallImage, // 38 N Y + SystemPrioritySeparation, // 39 N Y + SystemNotImplemented10, // 40 Y N + SystemNotImplemented11, // 41 Y N + SystemInvalidInfoClass2, // 42 + SystemInvalidInfoClass3, // 43 + SystemTimeZoneInformation, // 44 Y N + SystemLookasideInformation, // 45 Y N + SystemSetTimeSlipEvent, // 46 N Y + SystemCreateSession, // 47 N Y + SystemDeleteSession, // 48 N Y + SystemInvalidInfoClass4, // 49 + SystemRangeStartInformation, // 50 Y N + SystemVerifierInformation, // 51 Y Y + SystemAddVerifier, // 52 N Y + SystemSessionProcessesInformation // 53 Y N +} SYSTEM_INFORMATION_CLASS; + +typedef NTSTATUS +(NTAPI *ZWQUERYSYSTEMINFORMATION)( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT PULONG ReturnLength OPTIONAL + ); +typedef enum _OBJECT_INFORMATION_CLASS { + ObjectBasicInformation, + ObjectNameInformation, + ObjectTypeInformation, + ObjectAllInformation, + ObjectDataInformation +} OBJECT_INFORMATION_CLASS; +typedef NTSTATUS(NTAPI *NTQUERYOBJECT)( + _In_opt_ HANDLE Handle, + _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, + _Out_opt_ PVOID ObjectInformation, + _In_ ULONG ObjectInformationLength, + _Out_opt_ PULONG ReturnLength + ); + diff --git a/wxdk/wxdk.vcxproj b/wxdk/wxdk.vcxproj new file mode 100644 index 0000000..21e7970 --- /dev/null +++ b/wxdk/wxdk.vcxproj @@ -0,0 +1,157 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {EB7371E8-27B1-4A15-9EE5-7BE1BC109FFB} + Win32Proj + wxdk + 8.1 + + + + Application + true + v140_xp + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + + + Level3 + Disabled + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/wxdk/wxdk.vcxproj.filters b/wxdk/wxdk.vcxproj.filters new file mode 100644 index 0000000..d37ea65 --- /dev/null +++ b/wxdk/wxdk.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + æºæ–‡ä»¶ + + + + + 头文件 + + + \ No newline at end of file diff --git a/wxdk/wxdk.vcxproj.user b/wxdk/wxdk.vcxproj.user new file mode 100644 index 0000000..2787ae2 --- /dev/null +++ b/wxdk/wxdk.vcxproj.user @@ -0,0 +1,7 @@ + + + + 79c86fb12b36dfa33d1a537c9af100b4c7928a9c + WindowsLocalDebugger + + \ No newline at end of file