From e5013b7bc4176b46d4fa7c7bad80353dc0178c2d Mon Sep 17 00:00:00 2001 From: wj32 Date: Fri, 14 Aug 2009 09:51:54 +0000 Subject: [PATCH] added 64-bit NPH git-svn-id: svn://svn.code.sf.net/p/processhacker/code@1706 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- trunk/NProcessHacker/NProcessHacker.sln | 22 ++- trunk/NProcessHacker/NProcessHacker.vcproj | 150 ++++++++++++++++++ .../NProcessHackerHook.vcproj | 146 +++++++++++++++++ .../NProcessHacker/Release/NProcessHacker.dll | Bin 52736 -> 52736 bytes trunk/NProcessHacker/Test/Test.vcproj | 150 ++++++++++++++++++ trunk/NProcessHacker/hook.h | 19 +++ trunk/NProcessHacker/process.c | 2 +- .../x64/Release/NProcessHacker.dll | Bin 0 -> 53248 bytes .../Installer/Process_Hacker_installer.iss | 4 +- trunk/ProcessHacker/Build/release.cmd | 8 +- 10 files changed, 491 insertions(+), 10 deletions(-) create mode 100644 trunk/NProcessHacker/x64/Release/NProcessHacker.dll diff --git a/trunk/NProcessHacker/NProcessHacker.sln b/trunk/NProcessHacker/NProcessHacker.sln index 5515eb014..e43c98b54 100644 --- a/trunk/NProcessHacker/NProcessHacker.sln +++ b/trunk/NProcessHacker/NProcessHacker.sln @@ -16,21 +16,35 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 + Debug|Win64 = Debug|Win64 Release|Win32 = Release|Win32 + Release|Win64 = Release|Win64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {52426135-4597-4988-B5BC-BE8E93489A53}.Debug|Win32.ActiveCfg = Debug|Win32 - {52426135-4597-4988-B5BC-BE8E93489A53}.Debug|Win32.Build.0 = Debug|Win32 + {52426135-4597-4988-B5BC-BE8E93489A53}.Debug|Win32.ActiveCfg = Debug|x64 + {52426135-4597-4988-B5BC-BE8E93489A53}.Debug|Win32.Build.0 = Debug|x64 + {52426135-4597-4988-B5BC-BE8E93489A53}.Debug|Win64.ActiveCfg = Debug|x64 + {52426135-4597-4988-B5BC-BE8E93489A53}.Debug|Win64.Build.0 = Debug|x64 {52426135-4597-4988-B5BC-BE8E93489A53}.Release|Win32.ActiveCfg = Release|Win32 {52426135-4597-4988-B5BC-BE8E93489A53}.Release|Win32.Build.0 = Release|Win32 + {52426135-4597-4988-B5BC-BE8E93489A53}.Release|Win64.ActiveCfg = Release|x64 + {52426135-4597-4988-B5BC-BE8E93489A53}.Release|Win64.Build.0 = Release|x64 {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Debug|Win32.ActiveCfg = Debug|Win32 {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Debug|Win32.Build.0 = Debug|Win32 + {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Debug|Win64.ActiveCfg = Debug|x64 + {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Debug|Win64.Build.0 = Debug|x64 {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Release|Win32.ActiveCfg = Release|Win32 {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Release|Win32.Build.0 = Release|Win32 - {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Debug|Win32.ActiveCfg = Debug|Win32 - {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Debug|Win32.Build.0 = Debug|Win32 + {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Release|Win64.ActiveCfg = Release|x64 + {A910A5C9-9BCA-47BA-AFAD-92698E512DED}.Release|Win64.Build.0 = Release|x64 + {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Debug|Win32.ActiveCfg = Debug|x64 + {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Debug|Win32.Build.0 = Debug|x64 + {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Debug|Win64.ActiveCfg = Debug|x64 + {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Debug|Win64.Build.0 = Debug|x64 {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Release|Win32.ActiveCfg = Release|Win32 {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Release|Win32.Build.0 = Release|Win32 + {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Release|Win64.ActiveCfg = Release|x64 + {DC2D13B6-4BD1-4AC8-933F-DDB0DE850162}.Release|Win64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/trunk/NProcessHacker/NProcessHacker.vcproj b/trunk/NProcessHacker/NProcessHacker.vcproj index d34d57e52..6834dca3a 100644 --- a/trunk/NProcessHacker/NProcessHacker.vcproj +++ b/trunk/NProcessHacker/NProcessHacker.vcproj @@ -11,6 +11,9 @@ + @@ -160,6 +163,153 @@ Name="VCPostBuildEventTool" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/NProcessHacker/NProcessHackerHook/NProcessHackerHook.vcproj b/trunk/NProcessHacker/NProcessHackerHook/NProcessHackerHook.vcproj index 22f9db3bc..254e1902d 100644 --- a/trunk/NProcessHacker/NProcessHackerHook/NProcessHackerHook.vcproj +++ b/trunk/NProcessHacker/NProcessHackerHook/NProcessHackerHook.vcproj @@ -11,6 +11,9 @@ + @@ -156,6 +159,149 @@ Name="VCPostBuildEventTool" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/NProcessHacker/Release/NProcessHacker.dll b/trunk/NProcessHacker/Release/NProcessHacker.dll index 7aaf8927e5ef70ae825f9888415c977c2e6d25c0..ba83356068ab501112f0a424582586f89ce9b3f0 100644 GIT binary patch delta 52 zcmZpe!`v{3dBO+gl?JU7Kl?H@-QVoQXw(AYZZ2;h$$7g+52Vofao DH6#>{ delta 52 zcmZpe!`v{3dBO)~t$WcEKl?JJKi}-cXw(AYZZ2;h$$7g+52Vofao DFy|C# diff --git a/trunk/NProcessHacker/Test/Test.vcproj b/trunk/NProcessHacker/Test/Test.vcproj index d2d170827..fd7dceb32 100644 --- a/trunk/NProcessHacker/Test/Test.vcproj +++ b/trunk/NProcessHacker/Test/Test.vcproj @@ -12,6 +12,9 @@ + @@ -161,6 +164,153 @@ Name="VCPostBuildEventTool" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/NProcessHacker/hook.h b/trunk/NProcessHacker/hook.h index 8cd57b92c..e06c74bfc 100644 --- a/trunk/NProcessHacker/hook.h +++ b/trunk/NProcessHacker/hook.h @@ -27,6 +27,8 @@ /* Almost exactly the same as the hooking code in KProcessHacker. */ +#ifdef _X86_ + #define PH_DEFINE_HOOK_CALL(Name, Arguments, Hook) \ __declspec(naked) Name(Arguments) \ { \ @@ -49,6 +51,23 @@ __asm jmp edx \ } \ +#else + +#define PH_DEFINE_HOOK_CALL(Name, Arguments, Hook) \ + Name(Arguments) \ + { \ + RaiseException(STATUS_NOT_SUPPORTED, 0, 0, NULL); \ + return 0; \ + } \ + +#define PH_DEFINE_NT_HOOK_CALL(Name, Arguments, Hook) \ + Name(Arguments) \ + { \ + RaiseException(STATUS_NOT_SUPPORTED, 0, 0, NULL); \ + return 0; \ + } \ + +#endif typedef struct _PH_HOOK { PVOID Function; diff --git a/trunk/NProcessHacker/process.c b/trunk/NProcessHacker/process.c index faa84c7ff..52c0b35d9 100644 --- a/trunk/NProcessHacker/process.c +++ b/trunk/NProcessHacker/process.c @@ -49,7 +49,7 @@ WsCounters: ULONG sharedCount = 0; ULONG shareableCount = 0; PPSAPI_WORKING_SET_INFORMATION wsInfo; - ULONG wsInfoLength; + SIZE_T wsInfoLength; ULONG i; if (!GetProcessMemoryInfo(ProcessHandle, &procMem, sizeof(procMem))) diff --git a/trunk/NProcessHacker/x64/Release/NProcessHacker.dll b/trunk/NProcessHacker/x64/Release/NProcessHacker.dll new file mode 100644 index 0000000000000000000000000000000000000000..625f98d4405e6a0fbc25c1ecbb504462711a92cf GIT binary patch literal 53248 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 n`f$20ok;hmN7AF|v2-Rqo}NheeJ1f4igwNUL +:: Copy the 64-bit NPH to the "Release" folder +COPY "..\..\..\NProcessHacker\x64\Release\NProcessHacker.dll" "NProcessHacker64.dll" >NUL + :: Clear older files present in "Release" folder DEL/f/a "ProcessHacker.exe.config" "processhacker-*-setup.exe"^ "Assistant.dll" "processhacker-*.zip" >NUL 2>&1