mirror of
https://github.com/NohamR/RMHook-Win.git
synced 2026-05-24 19:59:43 +00:00
First hook
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/.vs
|
||||
/paho-mqtt3as-proxy/x64
|
||||
/x64
|
||||
9
README.md
Normal file
9
README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
Set-ExecutionPolicy
|
||||
Run from an elevated PowerShell (script will attempt to relaunch elevated if not already) or right-click -> Run with PowerShell.
|
||||
Example: .\scripts\install-hook.ps1 -Action install
|
||||
To use a specific DLL: .\scripts\install-hook.ps1 -Action install -SourcePath "C:\path\to\your.dll"
|
||||
To restore original: .\scripts\install-hook.ps1 -Action restore
|
||||
|
||||
|
||||
install-hook.bat -Action install
|
||||
install-hook.bat -Action restore
|
||||
8
paho-mqtt3as-proxy.slnx
Normal file
8
paho-mqtt3as-proxy.slnx
Normal file
@@ -0,0 +1,8 @@
|
||||
<Solution>
|
||||
<Configurations>
|
||||
<Platform Name="ARM64" />
|
||||
<Platform Name="x64" />
|
||||
<Platform Name="x86" />
|
||||
</Configurations>
|
||||
<Project Path="paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj" Id="94cd70a0-e80b-43f7-ae12-b80376310905" />
|
||||
</Solution>
|
||||
59
paho-mqtt3as-proxy/common.h
Normal file
59
paho-mqtt3as-proxy/common.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#pragma once
|
||||
#include <windows.h>
|
||||
|
||||
struct paho_mqtt3as_dll {
|
||||
HMODULE dll;
|
||||
FARPROC OrignalMQTTAsync_connect;
|
||||
FARPROC OrignalMQTTAsync_create;
|
||||
FARPROC OrignalMQTTAsync_createWithOptions;
|
||||
FARPROC OrignalMQTTAsync_destroy;
|
||||
FARPROC OrignalMQTTAsync_disconnect;
|
||||
FARPROC OrignalMQTTAsync_free;
|
||||
FARPROC OrignalMQTTAsync_freeMessage;
|
||||
FARPROC OrignalMQTTAsync_getPendingTokens;
|
||||
FARPROC OrignalMQTTAsync_getVersionInfo;
|
||||
FARPROC OrignalMQTTAsync_global_init;
|
||||
FARPROC OrignalMQTTAsync_isComplete;
|
||||
FARPROC OrignalMQTTAsync_isConnected;
|
||||
FARPROC OrignalMQTTAsync_malloc;
|
||||
FARPROC OrignalMQTTAsync_reconnect;
|
||||
FARPROC OrignalMQTTAsync_send;
|
||||
FARPROC OrignalMQTTAsync_sendMessage;
|
||||
FARPROC OrignalMQTTAsync_setAfterPersistenceRead;
|
||||
FARPROC OrignalMQTTAsync_setBeforePersistenceWrite;
|
||||
FARPROC OrignalMQTTAsync_setCallbacks;
|
||||
FARPROC OrignalMQTTAsync_setConnected;
|
||||
FARPROC OrignalMQTTAsync_setConnectionLostCallback;
|
||||
FARPROC OrignalMQTTAsync_setDeliveryCompleteCallback;
|
||||
FARPROC OrignalMQTTAsync_setDisconnected;
|
||||
FARPROC OrignalMQTTAsync_setMessageArrivedCallback;
|
||||
FARPROC OrignalMQTTAsync_setTraceCallback;
|
||||
FARPROC OrignalMQTTAsync_setTraceLevel;
|
||||
FARPROC OrignalMQTTAsync_setUpdateConnectOptions;
|
||||
FARPROC OrignalMQTTAsync_strerror;
|
||||
FARPROC OrignalMQTTAsync_subscribe;
|
||||
FARPROC OrignalMQTTAsync_subscribeMany;
|
||||
FARPROC OrignalMQTTAsync_unsubscribe;
|
||||
FARPROC OrignalMQTTAsync_unsubscribeMany;
|
||||
FARPROC OrignalMQTTAsync_waitForCompletion;
|
||||
FARPROC OrignalMQTTProperties_add;
|
||||
FARPROC OrignalMQTTProperties_copy;
|
||||
FARPROC OrignalMQTTProperties_free;
|
||||
FARPROC OrignalMQTTProperties_getNumericValue;
|
||||
FARPROC OrignalMQTTProperties_getNumericValueAt;
|
||||
FARPROC OrignalMQTTProperties_getProperty;
|
||||
FARPROC OrignalMQTTProperties_getPropertyAt;
|
||||
FARPROC OrignalMQTTProperties_hasProperty;
|
||||
FARPROC OrignalMQTTProperties_propertyCount;
|
||||
FARPROC OrignalMQTTPropertyName;
|
||||
FARPROC OrignalMQTTProperty_getType;
|
||||
FARPROC OrignalMQTTReasonCode_toString;
|
||||
FARPROC OrignalThread_create_mutex;
|
||||
FARPROC OrignalThread_getid;
|
||||
FARPROC OrignalThread_lock_mutex;
|
||||
FARPROC OrignalThread_start;
|
||||
FARPROC OrignalThread_unlock_mutex;
|
||||
};
|
||||
|
||||
extern paho_mqtt3as_dll paho_mqtt3as;
|
||||
extern "C" FARPROC PA;
|
||||
59
paho-mqtt3as-proxy/exports.cpp
Normal file
59
paho-mqtt3as-proxy/exports.cpp
Normal file
@@ -0,0 +1,59 @@
|
||||
#include "common.h"
|
||||
|
||||
paho_mqtt3as_dll paho_mqtt3as;
|
||||
extern "C" FARPROC PA = NULL;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern "C" void FakeMQTTAsync_connect() {}
|
||||
extern "C" void FakeMQTTAsync_create() {}
|
||||
extern "C" void FakeMQTTAsync_createWithOptions() {}
|
||||
extern "C" void FakeMQTTAsync_destroy() {}
|
||||
extern "C" void FakeMQTTAsync_disconnect() {}
|
||||
extern "C" void FakeMQTTAsync_free() {}
|
||||
extern "C" void FakeMQTTAsync_freeMessage() {}
|
||||
extern "C" void FakeMQTTAsync_getPendingTokens() {}
|
||||
extern "C" void FakeMQTTAsync_getVersionInfo() {}
|
||||
extern "C" void FakeMQTTAsync_global_init() {}
|
||||
extern "C" void FakeMQTTAsync_isComplete() {}
|
||||
extern "C" void FakeMQTTAsync_isConnected() {}
|
||||
extern "C" void FakeMQTTAsync_malloc() {}
|
||||
extern "C" void FakeMQTTAsync_reconnect() {}
|
||||
extern "C" void FakeMQTTAsync_send() {}
|
||||
extern "C" void FakeMQTTAsync_sendMessage() {}
|
||||
extern "C" void FakeMQTTAsync_setAfterPersistenceRead() {}
|
||||
extern "C" void FakeMQTTAsync_setBeforePersistenceWrite() {}
|
||||
extern "C" void FakeMQTTAsync_setCallbacks() {}
|
||||
extern "C" void FakeMQTTAsync_setConnected() {}
|
||||
extern "C" void FakeMQTTAsync_setConnectionLostCallback() {}
|
||||
extern "C" void FakeMQTTAsync_setDeliveryCompleteCallback() {}
|
||||
extern "C" void FakeMQTTAsync_setDisconnected() {}
|
||||
extern "C" void FakeMQTTAsync_setMessageArrivedCallback() {}
|
||||
extern "C" void FakeMQTTAsync_setTraceCallback() {}
|
||||
extern "C" void FakeMQTTAsync_setTraceLevel() {}
|
||||
extern "C" void FakeMQTTAsync_setUpdateConnectOptions() {}
|
||||
extern "C" void FakeMQTTAsync_strerror() {}
|
||||
extern "C" void FakeMQTTAsync_subscribe() {}
|
||||
extern "C" void FakeMQTTAsync_subscribeMany() {}
|
||||
extern "C" void FakeMQTTAsync_unsubscribe() {}
|
||||
extern "C" void FakeMQTTAsync_unsubscribeMany() {}
|
||||
extern "C" void FakeMQTTAsync_waitForCompletion() {}
|
||||
extern "C" void FakeMQTTProperties_add() {}
|
||||
extern "C" void FakeMQTTProperties_copy() {}
|
||||
extern "C" void FakeMQTTProperties_free() {}
|
||||
extern "C" void FakeMQTTProperties_getNumericValue() {}
|
||||
extern "C" void FakeMQTTProperties_getNumericValueAt() {}
|
||||
extern "C" void FakeMQTTProperties_getProperty() {}
|
||||
extern "C" void FakeMQTTProperties_getPropertyAt() {}
|
||||
extern "C" void FakeMQTTProperties_hasProperty() {}
|
||||
extern "C" void FakeMQTTProperties_propertyCount() {}
|
||||
extern "C" void FakeMQTTPropertyName() {}
|
||||
extern "C" void FakeMQTTProperty_getType() {}
|
||||
extern "C" void FakeMQTTReasonCode_toString() {}
|
||||
extern "C" void FakeThread_create_mutex() {}
|
||||
extern "C" void FakeThread_getid() {}
|
||||
extern "C" void FakeThread_lock_mutex() {}
|
||||
extern "C" void FakeThread_start() {}
|
||||
extern "C" void FakeThread_unlock_mutex() {}
|
||||
}
|
||||
|
||||
89
paho-mqtt3as-proxy/main.cpp
Normal file
89
paho-mqtt3as-proxy/main.cpp
Normal file
@@ -0,0 +1,89 @@
|
||||
#include "common.h"
|
||||
|
||||
DWORD WINAPI DelayedHelloThread(LPVOID lpParam)
|
||||
{
|
||||
Sleep(10000); // 10 seconds
|
||||
MessageBox(0, "Hello :)", "Proxy", MB_OK | MB_ICONINFORMATION);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void LoadOriginalDllFunctions() {
|
||||
paho_mqtt3as.OrignalMQTTAsync_connect = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_connect");
|
||||
paho_mqtt3as.OrignalMQTTAsync_create = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_create");
|
||||
paho_mqtt3as.OrignalMQTTAsync_createWithOptions = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_createWithOptions");
|
||||
paho_mqtt3as.OrignalMQTTAsync_destroy = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_destroy");
|
||||
paho_mqtt3as.OrignalMQTTAsync_disconnect = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_disconnect");
|
||||
paho_mqtt3as.OrignalMQTTAsync_free = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_free");
|
||||
paho_mqtt3as.OrignalMQTTAsync_freeMessage = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_freeMessage");
|
||||
paho_mqtt3as.OrignalMQTTAsync_getPendingTokens = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_getPendingTokens");
|
||||
paho_mqtt3as.OrignalMQTTAsync_getVersionInfo = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_getVersionInfo");
|
||||
paho_mqtt3as.OrignalMQTTAsync_global_init = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_global_init");
|
||||
paho_mqtt3as.OrignalMQTTAsync_isComplete = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_isComplete");
|
||||
paho_mqtt3as.OrignalMQTTAsync_isConnected = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_isConnected");
|
||||
paho_mqtt3as.OrignalMQTTAsync_malloc = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_malloc");
|
||||
paho_mqtt3as.OrignalMQTTAsync_reconnect = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_reconnect");
|
||||
paho_mqtt3as.OrignalMQTTAsync_send = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_send");
|
||||
paho_mqtt3as.OrignalMQTTAsync_sendMessage = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_sendMessage");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setAfterPersistenceRead = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setAfterPersistenceRead");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setBeforePersistenceWrite = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setBeforePersistenceWrite");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setCallbacks = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setCallbacks");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setConnected = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setConnected");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setConnectionLostCallback = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setConnectionLostCallback");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setDeliveryCompleteCallback = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setDeliveryCompleteCallback");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setDisconnected = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setDisconnected");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setMessageArrivedCallback = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setMessageArrivedCallback");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setTraceCallback = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setTraceCallback");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setTraceLevel = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setTraceLevel");
|
||||
paho_mqtt3as.OrignalMQTTAsync_setUpdateConnectOptions = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_setUpdateConnectOptions");
|
||||
paho_mqtt3as.OrignalMQTTAsync_strerror = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_strerror");
|
||||
paho_mqtt3as.OrignalMQTTAsync_subscribe = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_subscribe");
|
||||
paho_mqtt3as.OrignalMQTTAsync_subscribeMany = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_subscribeMany");
|
||||
paho_mqtt3as.OrignalMQTTAsync_unsubscribe = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_unsubscribe");
|
||||
paho_mqtt3as.OrignalMQTTAsync_unsubscribeMany = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_unsubscribeMany");
|
||||
paho_mqtt3as.OrignalMQTTAsync_waitForCompletion = GetProcAddress(paho_mqtt3as.dll, "MQTTAsync_waitForCompletion");
|
||||
paho_mqtt3as.OrignalMQTTProperties_add = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_add");
|
||||
paho_mqtt3as.OrignalMQTTProperties_copy = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_copy");
|
||||
paho_mqtt3as.OrignalMQTTProperties_free = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_free");
|
||||
paho_mqtt3as.OrignalMQTTProperties_getNumericValue = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_getNumericValue");
|
||||
paho_mqtt3as.OrignalMQTTProperties_getNumericValueAt = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_getNumericValueAt");
|
||||
paho_mqtt3as.OrignalMQTTProperties_getProperty = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_getProperty");
|
||||
paho_mqtt3as.OrignalMQTTProperties_getPropertyAt = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_getPropertyAt");
|
||||
paho_mqtt3as.OrignalMQTTProperties_hasProperty = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_hasProperty");
|
||||
paho_mqtt3as.OrignalMQTTProperties_propertyCount = GetProcAddress(paho_mqtt3as.dll, "MQTTProperties_propertyCount");
|
||||
paho_mqtt3as.OrignalMQTTPropertyName = GetProcAddress(paho_mqtt3as.dll, "MQTTPropertyName");
|
||||
paho_mqtt3as.OrignalMQTTProperty_getType = GetProcAddress(paho_mqtt3as.dll, "MQTTProperty_getType");
|
||||
paho_mqtt3as.OrignalMQTTReasonCode_toString = GetProcAddress(paho_mqtt3as.dll, "MQTTReasonCode_toString");
|
||||
paho_mqtt3as.OrignalThread_create_mutex = GetProcAddress(paho_mqtt3as.dll, "Thread_create_mutex");
|
||||
paho_mqtt3as.OrignalThread_getid = GetProcAddress(paho_mqtt3as.dll, "Thread_getid");
|
||||
paho_mqtt3as.OrignalThread_lock_mutex = GetProcAddress(paho_mqtt3as.dll, "Thread_lock_mutex");
|
||||
paho_mqtt3as.OrignalThread_start = GetProcAddress(paho_mqtt3as.dll, "Thread_start");
|
||||
paho_mqtt3as.OrignalThread_unlock_mutex = GetProcAddress(paho_mqtt3as.dll, "Thread_unlock_mutex");
|
||||
}
|
||||
|
||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
|
||||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
{
|
||||
DisableThreadLibraryCalls(hModule);
|
||||
CreateThread(NULL, 0, DelayedHelloThread, NULL, 0, NULL);
|
||||
MessageBox(0, "Hello", "Proxy", MB_OK | MB_ICONINFORMATION);
|
||||
paho_mqtt3as.dll = LoadLibrary("paho-mqtt3as_orig.dll");
|
||||
if (paho_mqtt3as.dll == NULL)
|
||||
{
|
||||
MessageBox(0, "Cannot load original paho_mqtt3as.dll library", "Proxy", MB_ICONERROR);
|
||||
ExitProcess(0);
|
||||
}
|
||||
|
||||
LoadOriginalDllFunctions();
|
||||
|
||||
break;
|
||||
}
|
||||
case DLL_PROCESS_DETACH:
|
||||
{
|
||||
FreeLibrary(paho_mqtt3as.dll);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
229
paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj
Normal file
229
paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj
Normal file
@@ -0,0 +1,229 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="exports.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="common.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MASM Include="paho-mqtt3as.asm">
|
||||
<FileType>Document</FileType>
|
||||
</MASM>
|
||||
<None Include="paho-mqtt3as.def" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>18.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{94cd70a0-e80b-43f7-ae12-b80376310905}</ProjectGuid>
|
||||
<RootNamespace>pahomqtt3asproxy</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetName>paho-mqtt3as</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;PAHOMQTT3ASPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>paho-mqtt3as.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;PAHOMQTT3ASPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>paho-mqtt3as.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;PAHOMQTT3ASPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>paho-mqtt3as.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;PAHOMQTT3ASPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>paho-mqtt3as.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;PAHOMQTT3ASPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>paho-mqtt3as.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;PAHOMQTT3ASPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>paho-mqtt3as.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
40
paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj.filters
Normal file
40
paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj.filters
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Fichiers sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Fichiers d%27en-tête">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Fichiers de ressources">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="exports.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="paho-mqtt3as.def">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="common.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MASM Include="paho-mqtt3as.asm">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</MASM>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
6
paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj.user
Normal file
6
paho-mqtt3as-proxy/paho-mqtt3as-proxy.vcxproj.user
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ShowAllFiles>true</ShowAllFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
7
paho-mqtt3as-proxy/paho-mqtt3as.asm
Normal file
7
paho-mqtt3as-proxy/paho-mqtt3as.asm
Normal file
@@ -0,0 +1,7 @@
|
||||
.data
|
||||
extern PA : qword
|
||||
.code
|
||||
RunASM proc
|
||||
jmp qword ptr [PA]
|
||||
RunASM endp
|
||||
end
|
||||
52
paho-mqtt3as-proxy/paho-mqtt3as.def
Normal file
52
paho-mqtt3as-proxy/paho-mqtt3as.def
Normal file
@@ -0,0 +1,52 @@
|
||||
LIBRARY paho-mqtt3as
|
||||
EXPORTS
|
||||
MQTTAsync_connect=FakeMQTTAsync_connect @1
|
||||
MQTTAsync_create=FakeMQTTAsync_create @2
|
||||
MQTTAsync_createWithOptions=FakeMQTTAsync_createWithOptions @3
|
||||
MQTTAsync_destroy=FakeMQTTAsync_destroy @4
|
||||
MQTTAsync_disconnect=FakeMQTTAsync_disconnect @5
|
||||
MQTTAsync_free=FakeMQTTAsync_free @6
|
||||
MQTTAsync_freeMessage=FakeMQTTAsync_freeMessage @7
|
||||
MQTTAsync_getPendingTokens=FakeMQTTAsync_getPendingTokens @8
|
||||
MQTTAsync_getVersionInfo=FakeMQTTAsync_getVersionInfo @9
|
||||
MQTTAsync_global_init=FakeMQTTAsync_global_init @10
|
||||
MQTTAsync_isComplete=FakeMQTTAsync_isComplete @11
|
||||
MQTTAsync_isConnected=FakeMQTTAsync_isConnected @12
|
||||
MQTTAsync_malloc=FakeMQTTAsync_malloc @13
|
||||
MQTTAsync_reconnect=FakeMQTTAsync_reconnect @14
|
||||
MQTTAsync_send=FakeMQTTAsync_send @15
|
||||
MQTTAsync_sendMessage=FakeMQTTAsync_sendMessage @16
|
||||
MQTTAsync_setAfterPersistenceRead=FakeMQTTAsync_setAfterPersistenceRead @17
|
||||
MQTTAsync_setBeforePersistenceWrite=FakeMQTTAsync_setBeforePersistenceWrite @18
|
||||
MQTTAsync_setCallbacks=FakeMQTTAsync_setCallbacks @19
|
||||
MQTTAsync_setConnected=FakeMQTTAsync_setConnected @20
|
||||
MQTTAsync_setConnectionLostCallback=FakeMQTTAsync_setConnectionLostCallback @21
|
||||
MQTTAsync_setDeliveryCompleteCallback=FakeMQTTAsync_setDeliveryCompleteCallback @22
|
||||
MQTTAsync_setDisconnected=FakeMQTTAsync_setDisconnected @23
|
||||
MQTTAsync_setMessageArrivedCallback=FakeMQTTAsync_setMessageArrivedCallback @24
|
||||
MQTTAsync_setTraceCallback=FakeMQTTAsync_setTraceCallback @25
|
||||
MQTTAsync_setTraceLevel=FakeMQTTAsync_setTraceLevel @26
|
||||
MQTTAsync_setUpdateConnectOptions=FakeMQTTAsync_setUpdateConnectOptions @27
|
||||
MQTTAsync_strerror=FakeMQTTAsync_strerror @28
|
||||
MQTTAsync_subscribe=FakeMQTTAsync_subscribe @29
|
||||
MQTTAsync_subscribeMany=FakeMQTTAsync_subscribeMany @30
|
||||
MQTTAsync_unsubscribe=FakeMQTTAsync_unsubscribe @31
|
||||
MQTTAsync_unsubscribeMany=FakeMQTTAsync_unsubscribeMany @32
|
||||
MQTTAsync_waitForCompletion=FakeMQTTAsync_waitForCompletion @33
|
||||
MQTTProperties_add=FakeMQTTProperties_add @34
|
||||
MQTTProperties_copy=FakeMQTTProperties_copy @35
|
||||
MQTTProperties_free=FakeMQTTProperties_free @36
|
||||
MQTTProperties_getNumericValue=FakeMQTTProperties_getNumericValue @37
|
||||
MQTTProperties_getNumericValueAt=FakeMQTTProperties_getNumericValueAt @38
|
||||
MQTTProperties_getProperty=FakeMQTTProperties_getProperty @39
|
||||
MQTTProperties_getPropertyAt=FakeMQTTProperties_getPropertyAt @40
|
||||
MQTTProperties_hasProperty=FakeMQTTProperties_hasProperty @41
|
||||
MQTTProperties_propertyCount=FakeMQTTProperties_propertyCount @42
|
||||
MQTTPropertyName=FakeMQTTPropertyName @43
|
||||
MQTTProperty_getType=FakeMQTTProperty_getType @44
|
||||
MQTTReasonCode_toString=FakeMQTTReasonCode_toString @45
|
||||
Thread_create_mutex=FakeThread_create_mutex @46
|
||||
Thread_getid=FakeThread_getid @47
|
||||
Thread_lock_mutex=FakeThread_lock_mutex @48
|
||||
Thread_start=FakeThread_start @49
|
||||
Thread_unlock_mutex=FakeThread_unlock_mutex @50
|
||||
10
scripts/install-hook.bat
Normal file
10
scripts/install-hook.bat
Normal file
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
set SCRIPT_DIR=%~dp0
|
||||
|
||||
powershell.exe ^
|
||||
-NoProfile ^
|
||||
-ExecutionPolicy Bypass ^
|
||||
-File "%SCRIPT_DIR%install-hook.ps1" ^
|
||||
%*
|
||||
|
||||
pause
|
||||
122
scripts/install-hook.ps1
Normal file
122
scripts/install-hook.ps1
Normal file
@@ -0,0 +1,122 @@
|
||||
<#
|
||||
Installs or restores a paho-mqtt3as proxy DLL into "C:\Program Files\reMarkable".
|
||||
Usage examples:
|
||||
.\install-hook.ps1 -Action install
|
||||
.\install-hook.ps1 -Action install -SourcePath "C:\some\path\my.dll"
|
||||
.\install-hook.ps1 -Action restore
|
||||
#>
|
||||
|
||||
param(
|
||||
[ValidateSet("install","restore","help")]
|
||||
[string]$Action = "help",
|
||||
|
||||
[string]$SourcePath = "",
|
||||
|
||||
[switch]$Force
|
||||
)
|
||||
|
||||
$InstallDir = "C:\Program Files\reMarkable"
|
||||
$TargetName = "paho-mqtt3as.dll"
|
||||
$OrigName = "paho-mqtt3as_orig.dll"
|
||||
$TargetPath = Join-Path $InstallDir $TargetName
|
||||
$OrigPath = Join-Path $InstallDir $OrigName
|
||||
|
||||
$DefaultDebug = "C:\Users\noham\Documents\paho-mqtt3as-proxy\x64\Debug\paho-mqtt3as-proxy.dll"
|
||||
$DefaultRelease = "C:\Users\noham\Documents\paho-mqtt3as-proxy\x64\Release\paho-mqtt3as-proxy.dll"
|
||||
|
||||
function Show-Help {
|
||||
"Actions:"
|
||||
" install - rename existing paho-mqtt3as.dll -> paho-mqtt3as_orig.dll (if present) and copy proxy DLL into place."
|
||||
" restore - remove proxy DLL (if present) and rename paho-mqtt3as_orig.dll back to paho-mqtt3as.dll."
|
||||
""
|
||||
"Examples:"
|
||||
" .\install-hook.ps1 -Action install"
|
||||
" .\install-hook.ps1 -Action install -SourcePath `"$DefaultDebug`""
|
||||
" .\install-hook.ps1 -Action restore"
|
||||
}
|
||||
|
||||
function Ensure-Admin {
|
||||
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
|
||||
if (-not $isAdmin) {
|
||||
Write-Host "Requesting administrator privileges..."
|
||||
|
||||
$args = @(
|
||||
"-NoProfile",
|
||||
"-ExecutionPolicy", "Bypass",
|
||||
"-File", "`"$PSCommandPath`""
|
||||
)
|
||||
|
||||
if ($MyInvocation.UnboundArguments -and $MyInvocation.UnboundArguments.Count -gt 0) {
|
||||
$args += $MyInvocation.UnboundArguments
|
||||
}
|
||||
|
||||
Start-Process -FilePath "powershell.exe" -Verb RunAs -ArgumentList $args
|
||||
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
function Install-Proxy {
|
||||
Ensure-Admin
|
||||
|
||||
$resolvedSource = $SourcePath
|
||||
|
||||
if (-not $resolvedSource) {
|
||||
if (Test-Path $DefaultDebug) {
|
||||
$resolvedSource = $DefaultDebug
|
||||
}
|
||||
elseif (Test-Path $DefaultRelease) {
|
||||
$resolvedSource = $DefaultRelease
|
||||
}
|
||||
else {
|
||||
Write-Error "No source DLL supplied and none found in default Debug/Release paths."
|
||||
exit 2
|
||||
}
|
||||
}
|
||||
|
||||
if (-not (Test-Path $resolvedSource)) {
|
||||
Write-Error "Source DLL not found: $resolvedSource"
|
||||
exit 3
|
||||
}
|
||||
|
||||
if (-not (Test-Path $InstallDir)) {
|
||||
Write-Error "Install directory not found: $InstallDir"
|
||||
exit 4
|
||||
}
|
||||
|
||||
if (-not (Test-Path $OrigPath) -and (Test-Path $TargetPath)) {
|
||||
Move-Item $TargetPath $OrigPath -Force
|
||||
Write-Host "Backed up original DLL"
|
||||
}
|
||||
|
||||
Copy-Item $resolvedSource $TargetPath -Force
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Hook installed successfully."
|
||||
}
|
||||
|
||||
function Restore-Original {
|
||||
Ensure-Admin
|
||||
|
||||
if (Test-Path $TargetPath) {
|
||||
Remove-Item -Path $TargetPath -Force
|
||||
Write-Host "Removed proxy DLL at $TargetPath"
|
||||
} else {
|
||||
Write-Host "No proxy DLL found at $TargetPath"
|
||||
}
|
||||
|
||||
if (Test-Path $OrigPath) {
|
||||
Move-Item -Path $OrigPath -Destination $TargetPath -Force
|
||||
Write-Host "Restored original DLL: $OrigName -> $TargetName"
|
||||
} else {
|
||||
Write-Host "No backup original found at $OrigPath"
|
||||
}
|
||||
}
|
||||
|
||||
switch ($Action) {
|
||||
"install" { Install-Proxy; break }
|
||||
"restore" { Restore-Original; break }
|
||||
"help" { Show-Help; break }
|
||||
default { Show-Help; break }
|
||||
}
|
||||
Reference in New Issue
Block a user