bigly changes (see description)

- use LdrRegisterDllNotification instead of LoadLibraryExW for patching
** LoadLibraryExW is currently still hooked for the UpdatePack7 compatibility fix, I'm looking into other alternatives
- more robust error checking
- refactored a lot of code to be more reusable
- header guards
- better logging framework
- tighter permissions on the unload event
- probably other stuff I forgot about
This commit is contained in:
zeffy
2017-08-27 19:04:57 -07:00
parent 59006284f6
commit 8052351b64
30 changed files with 806 additions and 554 deletions

View File

@@ -2,9 +2,10 @@
#include <Msiquery.h>
#include <tchar.h>
__declspec(dllexport)
UINT __stdcall AIHelper_SetUnloadEvent(MSIHANDLE hInstall) {
HANDLE hEvent = OpenEvent(EVENT_MODIFY_STATE, FALSE, _T("Global\\wufuc_UnloadEvent"));
if (hEvent) {
if ( hEvent ) {
SetEvent(hEvent);
CloseHandle(hEvent);
}

View File

@@ -1,7 +1,7 @@
#include <Windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
switch ( ul_reason_for_call ) {
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:

View File

@@ -1,2 +0,0 @@
EXPORTS
AIHelper_SetUnloadEvent

View File

@@ -111,7 +111,6 @@
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>Msi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -123,7 +122,6 @@
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -135,7 +133,6 @@
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -153,16 +150,12 @@
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>Msi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="aihelper.c" />
<ClCompile Include="dllmain.c" />
</ItemGroup>
<ItemGroup>
<None Include="exports.def" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>