From 3e5e5e8679f88f6a0aa6795d5ead6c307670cf98 Mon Sep 17 00:00:00 2001 From: JKornev <8bit.dosninja@gmail.com> Date: Sat, 15 Oct 2016 18:10:35 +0300 Subject: [PATCH] Fixes for API and x64 compilation --- .gitignore | 4 ++ HiddenCLI/HiddenCLI.vcxproj | 4 +- HiddenLib/HiddenLib.cpp | 71 +++++++++++++++++---------------- HiddenLib/HiddenLib.h | 58 ++++++++++++++------------- HiddenTests/HiddenTests.cpp | 2 +- HiddenTests/HiddenTests.vcxproj | 2 +- 6 files changed, 75 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index 694e6c3..0d3a838 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,7 @@ /HiddenTests/*.idc /Hidden/Release /Hidden/x64/Release +/HiddenCLI/x64/Release +/HiddenLib/x64/Release +/HiddenTests/x64/Release/HiddenTests.tlog +/HiddenTests/x64/Release diff --git a/HiddenCLI/HiddenCLI.vcxproj b/HiddenCLI/HiddenCLI.vcxproj index dd52d7d..3fc301c 100644 --- a/HiddenCLI/HiddenCLI.vcxproj +++ b/HiddenCLI/HiddenCLI.vcxproj @@ -107,7 +107,7 @@ Console true HiddenLib.lib;%(AdditionalDependencies) - $(SolutionDir)$(Configuration)\ + $(SolutionDir)x64\$(Configuration)\ @@ -146,7 +146,7 @@ true true true - $(SolutionDir)$(Configuration)\ + $(SolutionDir)x64\$(Configuration)\ HiddenLib.lib;%(AdditionalDependencies) diff --git a/HiddenLib/HiddenLib.cpp b/HiddenLib/HiddenLib.cpp index 44dd013..3b182bd 100644 --- a/HiddenLib/HiddenLib.cpp +++ b/HiddenLib/HiddenLib.cpp @@ -44,7 +44,7 @@ static RtlDosPathNameToRelativeNtPathName_U_Prototype RtlDosPathNameToRelativeNt static RtlFormatCurrentUserKeyPath_Prototype RtlFormatCurrentUserKeyPath = nullptr; static RtlFreeUnicodeString_Prototype RtlFreeUnicodeString = nullptr; -HidStatus Hid_Initialize(PHidContext pcontext) +HidStatus _API Hid_Initialize(PHidContext pcontext, const wchar_t* deviceName) { HANDLE hdevice = INVALID_HANDLE_VALUE; PHidContextInternal context; @@ -79,8 +79,11 @@ HidStatus Hid_Initialize(PHidContext pcontext) return HID_SET_STATUS(FALSE, GetLastError()); } + if (!deviceName) + deviceName = DEVICE_WIN32_NAME; + hdevice = CreateFileW( - DEVICE_WIN32_NAME, + deviceName, GENERIC_READ | GENERIC_WRITE, 0, NULL, @@ -104,7 +107,7 @@ HidStatus Hid_Initialize(PHidContext pcontext) return HID_SET_STATUS(TRUE, 0); } -void Hid_Destroy(HidContext context) +void _API Hid_Destroy(HidContext context) { PHidContextInternal cntx = (PHidContextInternal)context; CloseHandle(cntx->hdevice); @@ -117,7 +120,7 @@ bool ConvertToNtPath(const wchar_t* path, wchar_t* normalized, size_t normalized DWORD size; bool result = false; - size = GetFullPathNameW(path, normalizedLen, normalized, NULL); + size = GetFullPathNameW(path, (DWORD)normalizedLen, normalized, NULL); if (size == 0) return false; @@ -262,14 +265,14 @@ HidStatus SendIoctl_HideObjectPacket(PHidContextInternal context, const wchar_t* total = (len + 1) * sizeof(wchar_t); size = sizeof(Hid_HideObjectPacket) + total; hide = (PHid_HideObjectPacket)_alloca(size); - hide->dataSize = total; + hide->dataSize = (unsigned short)total; hide->objType = type; memcpy((char*)hide + sizeof(Hid_HideObjectPacket), path, total); // Send IOCTL to device - if (!DeviceIoControl(context->hdevice, HID_IOCTL_ADD_HIDDEN_OBJECT, hide, size, &result, sizeof(result), &returned, NULL)) + if (!DeviceIoControl(context->hdevice, HID_IOCTL_ADD_HIDDEN_OBJECT, hide, (DWORD)size, &result, sizeof(result), &returned, NULL)) return HID_SET_STATUS(FALSE, GetLastError()); // Check result @@ -351,7 +354,7 @@ HidStatus SendIoctl_AddPsObjectPacket(PHidContextInternal context, const wchar_t total = (len + 1) * sizeof(wchar_t); size = sizeof(Hid_AddPsObjectPacket) + total; hide = (PHid_AddPsObjectPacket)_alloca(size); - hide->dataSize = total; + hide->dataSize = (unsigned short)total; hide->objType = type; hide->inheritType = inheritType; @@ -359,7 +362,7 @@ HidStatus SendIoctl_AddPsObjectPacket(PHidContextInternal context, const wchar_t // Send IOCTL to device - if (!DeviceIoControl(context->hdevice, HID_IOCTL_ADD_OBJECT, hide, size, &result, sizeof(result), &returned, NULL)) + if (!DeviceIoControl(context->hdevice, HID_IOCTL_ADD_OBJECT, hide, (DWORD)size, &result, sizeof(result), &returned, NULL)) return HID_SET_STATUS(FALSE, GetLastError()); // Check result @@ -492,13 +495,13 @@ HidStatus SendIoctl_SetPsStatePacket(PHidContextInternal context, HidProcId proc // Control interface -HidStatus Hid_SetState(HidContext context, HidActiveState state) +HidStatus _API Hid_SetState(HidContext context, HidActiveState state) { PHidContextInternal cntx = (PHidContextInternal)context; return HID_SET_STATUS(FALSE, ERROR_CALL_NOT_IMPLEMENTED); } -HidStatus Hid_GetState(HidContext context, HidActiveState* pstate) +HidStatus _API Hid_GetState(HidContext context, HidActiveState* pstate) { PHidContextInternal cntx = (PHidContextInternal)context; return HID_SET_STATUS(FALSE, ERROR_CALL_NOT_IMPLEMENTED); @@ -506,7 +509,7 @@ HidStatus Hid_GetState(HidContext context, HidActiveState* pstate) // Registry hiding interface -HidStatus Hid_AddHiddenRegKey(HidContext context, HidRegRootTypes root, const wchar_t* regKey, HidObjId* objId) +HidStatus _API Hid_AddHiddenRegKey(HidContext context, HidRegRootTypes root, const wchar_t* regKey, HidObjId* objId) { HidStatus status; wchar_t* normalized; @@ -521,17 +524,17 @@ HidStatus Hid_AddHiddenRegKey(HidContext context, HidRegRootTypes root, const wc return status; } -HidStatus Hid_RemoveHiddenRegKey(HidContext context, HidObjId objId) +HidStatus _API Hid_RemoveHiddenRegKey(HidContext context, HidObjId objId) { return SendIoctl_UnhideObjectPacket((PHidContextInternal)context, RegKeyObject, objId); } -HidStatus Hid_RemoveAllHiddenRegKeys(HidContext context) +HidStatus _API Hid_RemoveAllHiddenRegKeys(HidContext context) { return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, RegKeyObject); } -HidStatus Hid_AddHiddenRegValue(HidContext context, HidRegRootTypes root, const wchar_t* regValue, HidObjId* objId) +HidStatus _API Hid_AddHiddenRegValue(HidContext context, HidRegRootTypes root, const wchar_t* regValue, HidObjId* objId) { HidStatus status; wchar_t* normalized; @@ -546,19 +549,19 @@ HidStatus Hid_AddHiddenRegValue(HidContext context, HidRegRootTypes root, const return status; } -HidStatus Hid_RemoveHiddenRegValue(HidContext context, HidObjId objId) +HidStatus _API Hid_RemoveHiddenRegValue(HidContext context, HidObjId objId) { return SendIoctl_UnhideObjectPacket((PHidContextInternal)context, RegValueObject, objId); } -HidStatus Hid_RemoveAllHiddenRegValues(HidContext context) +HidStatus _API Hid_RemoveAllHiddenRegValues(HidContext context) { return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, RegValueObject); } // File system hiding interface -HidStatus Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjId* objId) +HidStatus _API Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjId* objId) { HidStatus status; wchar_t* normalized; @@ -573,17 +576,17 @@ HidStatus Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjI return status; } -HidStatus Hid_RemoveHiddenFile(HidContext context, HidObjId objId) +HidStatus _API Hid_RemoveHiddenFile(HidContext context, HidObjId objId) { return SendIoctl_UnhideObjectPacket((PHidContextInternal)context, FsFileObject, objId); } -HidStatus Hid_RemoveAllHiddenFiles(HidContext context) +HidStatus _API Hid_RemoveAllHiddenFiles(HidContext context) { return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, FsFileObject); } -HidStatus Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* objId) +HidStatus _API Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* objId) { HidStatus status; wchar_t* normalized; @@ -598,19 +601,19 @@ HidStatus Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* return status; } -HidStatus Hid_RemoveHiddenDir(HidContext context, HidObjId objId) +HidStatus _API Hid_RemoveHiddenDir(HidContext context, HidObjId objId) { return SendIoctl_UnhideObjectPacket((PHidContextInternal)context, FsDirObject, objId); } -HidStatus Hid_RemoveAllHiddenDirs(HidContext context) +HidStatus _API Hid_RemoveAllHiddenDirs(HidContext context) { return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, FsDirObject); } // Process exclude interface -HidStatus Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId) +HidStatus _API Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId) { HidStatus status; wchar_t* normalized; @@ -625,34 +628,34 @@ HidStatus Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, Hid return status; } -HidStatus Hid_RemoveExcludedImage(HidContext context, HidObjId objId) +HidStatus _API Hid_RemoveExcludedImage(HidContext context, HidObjId objId) { return SendIoctl_RemovePsObjectPacket((PHidContextInternal)context, PsExcludedObject, objId); } -HidStatus Hid_RemoveAllExcludedImages(HidContext context) +HidStatus _API Hid_RemoveAllExcludedImages(HidContext context) { return SendIoctl_RemoveAllPsObjectsPacket((PHidContextInternal)context, PsExcludedObject); } -HidStatus Hid_GetExcludedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType) +HidStatus _API Hid_GetExcludedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType) { return SendIoctl_GetPsStatePacket((PHidContextInternal)context, procId, PsExcludedObject, state, inheritType); } -HidStatus Hid_AttachExcludedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType) +HidStatus _API Hid_AttachExcludedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType) { return SendIoctl_SetPsStatePacket((PHidContextInternal)context, procId, PsExcludedObject, HidActiveState::StateEnabled, inheritType); } -HidStatus Hid_RemoveExcludedState(HidContext context, HidProcId procId) +HidStatus _API Hid_RemoveExcludedState(HidContext context, HidProcId procId) { return SendIoctl_SetPsStatePacket((PHidContextInternal)context, procId, PsExcludedObject, HidActiveState::StateDisabled, HidPsInheritTypes::WithoutInherit); } // Process protect interface -HidStatus Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId) +HidStatus _API Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId) { HidStatus status; wchar_t* normalized; @@ -667,27 +670,27 @@ HidStatus Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, Hi return status; } -HidStatus Hid_RemoveProtectedImage(HidContext context, HidObjId objId) +HidStatus _API Hid_RemoveProtectedImage(HidContext context, HidObjId objId) { return SendIoctl_RemovePsObjectPacket((PHidContextInternal)context, PsProtectedObject, objId); } -HidStatus Hid_RemoveAllProtectedImages(HidContext context) +HidStatus _API Hid_RemoveAllProtectedImages(HidContext context) { return SendIoctl_RemoveAllPsObjectsPacket((PHidContextInternal)context, PsProtectedObject); } -HidStatus Hid_GetProtectedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType) +HidStatus _API Hid_GetProtectedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType) { return SendIoctl_GetPsStatePacket((PHidContextInternal)context, procId, PsProtectedObject, state, inheritType); } -HidStatus Hid_AttachProtectedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType) +HidStatus _API Hid_AttachProtectedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType) { return SendIoctl_SetPsStatePacket((PHidContextInternal)context, procId, PsProtectedObject, HidActiveState::StateEnabled, inheritType); } -HidStatus Hid_RemoveProtectedState(HidContext context, HidProcId procId) +HidStatus _API Hid_RemoveProtectedState(HidContext context, HidProcId procId) { return SendIoctl_SetPsStatePacket((PHidContextInternal)context, procId, PsProtectedObject, HidActiveState::StateDisabled, HidPsInheritTypes::WithoutInherit); } diff --git a/HiddenLib/HiddenLib.h b/HiddenLib/HiddenLib.h index d48353c..858486a 100644 --- a/HiddenLib/HiddenLib.h +++ b/HiddenLib/HiddenLib.h @@ -7,6 +7,8 @@ typedef unsigned long long HidStatus; #define HID_SET_STATUS(state, code) (unsigned long long)((unsigned long long)code << 1 | (state ? 1 : 0)) +#define _API __cdecl + typedef void* HidContext; typedef HidContext* PHidContext; @@ -37,42 +39,42 @@ enum HidRegRootTypes RegHKU }; -HidStatus Hid_Initialize(PHidContext pcontext); -void Hid_Destroy(HidContext context); +HidStatus _API Hid_Initialize(PHidContext pcontext, const wchar_t* deviceName = 0); +void _API Hid_Destroy(HidContext context); -HidStatus Hid_SetState(HidContext context, HidActiveState state); -HidStatus Hid_GetState(HidContext context, HidActiveState* pstate); +HidStatus _API Hid_SetState(HidContext context, HidActiveState state); +HidStatus _API Hid_GetState(HidContext context, HidActiveState* pstate); // Fs\Reg -HidStatus Hid_AddHiddenRegKey(HidContext context, HidRegRootTypes root, const wchar_t* regKey, HidObjId* objId); -HidStatus Hid_RemoveHiddenRegKey(HidContext context, HidObjId objId); -HidStatus Hid_RemoveAllHiddenRegKeys(HidContext context); +HidStatus _API Hid_AddHiddenRegKey(HidContext context, HidRegRootTypes root, const wchar_t* regKey, HidObjId* objId); +HidStatus _API Hid_RemoveHiddenRegKey(HidContext context, HidObjId objId); +HidStatus _API Hid_RemoveAllHiddenRegKeys(HidContext context); -HidStatus Hid_AddHiddenRegValue(HidContext context, HidRegRootTypes root, const wchar_t* regValue, HidObjId* objId); -HidStatus Hid_RemoveHiddenRegValue(HidContext context, HidObjId objId); -HidStatus Hid_RemoveAllHiddenRegValues(HidContext context); +HidStatus _API Hid_AddHiddenRegValue(HidContext context, HidRegRootTypes root, const wchar_t* regValue, HidObjId* objId); +HidStatus _API Hid_RemoveHiddenRegValue(HidContext context, HidObjId objId); +HidStatus _API Hid_RemoveAllHiddenRegValues(HidContext context); -HidStatus Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjId* objId); -HidStatus Hid_RemoveHiddenFile(HidContext context, HidObjId objId); -HidStatus Hid_RemoveAllHiddenFiles(HidContext context); +HidStatus _API Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjId* objId); +HidStatus _API Hid_RemoveHiddenFile(HidContext context, HidObjId objId); +HidStatus _API Hid_RemoveAllHiddenFiles(HidContext context); -HidStatus Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* objId); -HidStatus Hid_RemoveHiddenDir(HidContext context, HidObjId objId); -HidStatus Hid_RemoveAllHiddenDirs(HidContext context); +HidStatus _API Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* objId); +HidStatus _API Hid_RemoveHiddenDir(HidContext context, HidObjId objId); +HidStatus _API Hid_RemoveAllHiddenDirs(HidContext context); // Ps -HidStatus Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId); -HidStatus Hid_RemoveExcludedImage(HidContext context, HidObjId objId); -HidStatus Hid_RemoveAllExcludedImages(HidContext context); -HidStatus Hid_GetExcludedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType); -HidStatus Hid_AttachExcludedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType); -HidStatus Hid_RemoveExcludedState(HidContext context, HidProcId procId); +HidStatus _API Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId); +HidStatus _API Hid_RemoveExcludedImage(HidContext context, HidObjId objId); +HidStatus _API Hid_RemoveAllExcludedImages(HidContext context); +HidStatus _API Hid_GetExcludedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType); +HidStatus _API Hid_AttachExcludedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType); +HidStatus _API Hid_RemoveExcludedState(HidContext context, HidProcId procId); -HidStatus Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId); -HidStatus Hid_RemoveProtectedImage(HidContext context, HidObjId objId); -HidStatus Hid_RemoveAllProtectedImages(HidContext context); -HidStatus Hid_GetProtectedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType); -HidStatus Hid_AttachProtectedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType); -HidStatus Hid_RemoveProtectedState(HidContext context, HidProcId procId); +HidStatus _API Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId); +HidStatus _API Hid_RemoveProtectedImage(HidContext context, HidObjId objId); +HidStatus _API Hid_RemoveAllProtectedImages(HidContext context); +HidStatus _API Hid_GetProtectedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType); +HidStatus _API Hid_AttachProtectedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType); +HidStatus _API Hid_RemoveProtectedState(HidContext context, HidProcId procId); diff --git a/HiddenTests/HiddenTests.cpp b/HiddenTests/HiddenTests.cpp index c05f84c..0a486a3 100644 --- a/HiddenTests/HiddenTests.cpp +++ b/HiddenTests/HiddenTests.cpp @@ -860,7 +860,7 @@ int wmain(int argc, wchar_t* argv[]) HidContext hid_context; HidStatus hid_status; - srand(time(0)); + srand((int)time(0)); hid_status = Hid_Initialize(&hid_context); if (!HID_STATUS_SUCCESSFUL(hid_status)) diff --git a/HiddenTests/HiddenTests.vcxproj b/HiddenTests/HiddenTests.vcxproj index f1fd301..2f81511 100644 --- a/HiddenTests/HiddenTests.vcxproj +++ b/HiddenTests/HiddenTests.vcxproj @@ -147,7 +147,7 @@ true true HiddenLib.lib;%(AdditionalDependencies) - $(SolutionDir)$(Configuration)\ + $(SolutionDir)x64\$(Configuration)\