mirror of
https://github.com/R2Northstar/NorthstarLauncher
synced 2024-10-30 11:26:40 +01:00
add wsock32 proxy!!! (it works quite nicely)
This commit is contained in:
parent
65c2e58a6a
commit
664d5d434e
@ -9,6 +9,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NorthstarLauncher", "Launch
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_launcher_proxy", "loader_launcher_proxy\loader_launcher_proxy.vcxproj", "{F65C322D-66DF-4AF1-B650-70221DE334C0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_wsock32_proxy", "loader_wsock32_proxy\loader_wsock32_proxy.vcxproj", "{CF55F3B5-F348-450A-9CCB-C269F21D629D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
@ -27,6 +29,10 @@ Global
|
||||
{F65C322D-66DF-4AF1-B650-70221DE334C0}.Debug|x64.Build.0 = Debug|x64
|
||||
{F65C322D-66DF-4AF1-B650-70221DE334C0}.Release|x64.ActiveCfg = Release|x64
|
||||
{F65C322D-66DF-4AF1-B650-70221DE334C0}.Release|x64.Build.0 = Release|x64
|
||||
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Debug|x64.Build.0 = Debug|x64
|
||||
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Release|x64.ActiveCfg = Release|x64
|
||||
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -93,7 +93,7 @@ bool LoadNorthstar()
|
||||
FARPROC Hook_Init = nullptr;
|
||||
{
|
||||
swprintf_s(dllPath, L"%s\\Northstar.dll", exePath);
|
||||
hHookModule = LoadLibraryExW(dllPath, 0i64, 8u);
|
||||
hHookModule = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if (hHookModule) Hook_Init = GetProcAddress(hHookModule, "InitialiseNorthstar");
|
||||
if (!hHookModule || Hook_Init == nullptr)
|
||||
{
|
||||
@ -120,7 +120,7 @@ extern "C" __declspec(dllexport) int LauncherMain(HINSTANCE hInstance, HINSTANCE
|
||||
if (loadNorthstar)
|
||||
{
|
||||
swprintf_s(dllPath, L"%s\\bin\\x64_retail\\tier0.dll", exePath);
|
||||
hTier0Module = LoadLibraryW(dllPath);
|
||||
hTier0Module = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if (!hTier0Module)
|
||||
{
|
||||
LibraryLoadError(GetLastError(), L"tier0.dll", dllPath);
|
||||
@ -133,7 +133,7 @@ extern "C" __declspec(dllexport) int LauncherMain(HINSTANCE hInstance, HINSTANCE
|
||||
//else printf("\n\n WILL !!!NOT!!! LOAD NORTHSTAR\n\n");
|
||||
|
||||
swprintf_s(dllPath, L"%s\\bin\\x64_retail\\launcher.org.dll", exePath);
|
||||
hLauncherModule = LoadLibraryExW(dllPath, 0i64, 8u);
|
||||
hLauncherModule = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if (!hLauncherModule)
|
||||
{
|
||||
LibraryLoadError(GetLastError(), L"launcher.org.dll", dllPath);
|
||||
|
133
loader_wsock32_proxy/dllmain.cpp
Normal file
133
loader_wsock32_proxy/dllmain.cpp
Normal file
@ -0,0 +1,133 @@
|
||||
#include "pch.h"
|
||||
#include "loader.h"
|
||||
|
||||
#include <Shlwapi.h>
|
||||
#include <filesystem>
|
||||
|
||||
HINSTANCE hLThis = 0;
|
||||
FARPROC p[857];
|
||||
HINSTANCE hL = 0;
|
||||
|
||||
bool GetExePathWide(wchar_t* dest, DWORD destSize)
|
||||
{
|
||||
if (!dest) return NULL;
|
||||
if (destSize < MAX_PATH) return NULL;
|
||||
|
||||
DWORD length = GetModuleFileNameW(NULL, dest, destSize);
|
||||
return length && PathRemoveFileSpecW(dest);
|
||||
}
|
||||
|
||||
wchar_t exePath[4096];
|
||||
wchar_t dllPath[8192];
|
||||
wchar_t dllPath2[4096];
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD reason, LPVOID)
|
||||
{
|
||||
if (reason == DLL_PROCESS_ATTACH)
|
||||
{
|
||||
hLThis = hInst;
|
||||
|
||||
if (!GetExePathWide(exePath, 4096))
|
||||
{
|
||||
MessageBoxA(GetForegroundWindow(), "Failed getting game directory.\nThe game cannot continue and has to exit.", "Northstar Wsock32 Proxy Error", 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!ProvisionNorthstar()) // does not call InitialiseNorthstar yet, will do it on LauncherMain hook
|
||||
return 1;
|
||||
|
||||
swprintf_s(dllPath, L"%s\\bin\\x64_retail\\wsock32.org.dll", exePath);
|
||||
GetSystemDirectoryW(dllPath2, 4096);
|
||||
swprintf_s(dllPath2, L"%s\\wsock32.dll", dllPath2);
|
||||
try
|
||||
{
|
||||
std::filesystem::copy_file(dllPath2, dllPath);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
if (!std::filesystem::exists(dllPath))
|
||||
{
|
||||
swprintf_s(dllPath, L"Failed copying wsock32.dll from system32 to \"%s\"\n\n%S", dllPath, e.what());
|
||||
MessageBoxW(GetForegroundWindow(), dllPath, L"Northstar Wsock32 Proxy Error", 0);
|
||||
}
|
||||
}
|
||||
hL = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if (!hL) return false;
|
||||
|
||||
p[1] = GetProcAddress(hL, "EnumProtocolsA");
|
||||
p[2] = GetProcAddress(hL, "EnumProtocolsW");
|
||||
p[4] = GetProcAddress(hL, "GetAddressByNameA");
|
||||
p[5] = GetProcAddress(hL, "GetAddressByNameW");
|
||||
p[17] = GetProcAddress(hL, "WEP");
|
||||
p[30] = GetProcAddress(hL, "WSARecvEx");
|
||||
p[36] = GetProcAddress(hL, "__WSAFDIsSet");
|
||||
p[45] = GetProcAddress(hL, "getnetbyname");
|
||||
p[52] = GetProcAddress(hL, "getsockopt");
|
||||
p[56] = GetProcAddress(hL, "inet_network");
|
||||
p[67] = GetProcAddress(hL, "s_perror");
|
||||
p[72] = GetProcAddress(hL, "setsockopt");
|
||||
}
|
||||
|
||||
if (reason == DLL_PROCESS_DETACH)
|
||||
{
|
||||
FreeLibrary(hL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
FARPROC PA = NULL;
|
||||
int RunASM();
|
||||
|
||||
void PROXY_EnumProtocolsA() {
|
||||
PA = p[1];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_EnumProtocolsW() {
|
||||
PA = p[2];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_GetAddressByNameA() {
|
||||
PA = p[4];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_GetAddressByNameW() {
|
||||
PA = p[5];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_WEP() {
|
||||
PA = p[17];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_WSARecvEx() {
|
||||
PA = p[30];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY___WSAFDIsSet() {
|
||||
PA = p[36];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_getnetbyname() {
|
||||
PA = p[45];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_getsockopt() {
|
||||
PA = p[52];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_inet_network() {
|
||||
PA = p[56];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_s_perror() {
|
||||
PA = p[67];
|
||||
RunASM();
|
||||
}
|
||||
void PROXY_setsockopt() {
|
||||
PA = p[72];
|
||||
RunASM();
|
||||
}
|
||||
}
|
71
loader_wsock32_proxy/hookutils.cpp
Normal file
71
loader_wsock32_proxy/hookutils.cpp
Normal file
@ -0,0 +1,71 @@
|
||||
#include "pch.h"
|
||||
#include "../NorthstarDedicatedTest/hookutils.h"
|
||||
|
||||
#define ERROR(...) { char err[2048]; sprintf_s(err, __VA_ARGS__); MessageBoxA(GetForegroundWindow(), err, "Northstar Wsock32 Proxy Error", 0); }
|
||||
|
||||
TempReadWrite::TempReadWrite(void* ptr)
|
||||
{
|
||||
m_ptr = ptr;
|
||||
MEMORY_BASIC_INFORMATION mbi;
|
||||
VirtualQuery(m_ptr, &mbi, sizeof(mbi));
|
||||
VirtualProtect(mbi.BaseAddress, mbi.RegionSize, PAGE_EXECUTE_READWRITE, &mbi.Protect);
|
||||
m_origProtection = mbi.Protect;
|
||||
}
|
||||
|
||||
TempReadWrite::~TempReadWrite()
|
||||
{
|
||||
MEMORY_BASIC_INFORMATION mbi;
|
||||
VirtualQuery(m_ptr, &mbi, sizeof(mbi));
|
||||
VirtualProtect(mbi.BaseAddress, mbi.RegionSize, m_origProtection, &mbi.Protect);
|
||||
}
|
||||
|
||||
|
||||
void HookEnabler::CreateHook(LPVOID ppTarget, LPVOID ppDetour, LPVOID* ppOriginal, const char* targetName)
|
||||
{
|
||||
// the macro for this uses ppTarget's name as targetName, and this typically starts with &
|
||||
// targetname is used for debug stuff and debug output is nicer if we don't have this
|
||||
if (*targetName == '&')
|
||||
targetName++;
|
||||
|
||||
if (MH_CreateHook(ppTarget, ppDetour, ppOriginal) == MH_OK)
|
||||
{
|
||||
HookTarget* target = new HookTarget;
|
||||
target->targetAddress = ppTarget;
|
||||
target->targetName = (char*)targetName;
|
||||
|
||||
m_hookTargets.push_back(target);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (targetName != nullptr)
|
||||
{
|
||||
ERROR("MH_CreateHook failed for function %s", targetName);
|
||||
}
|
||||
else
|
||||
{
|
||||
ERROR("MH_CreateHook failed for unknown function");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HookEnabler::~HookEnabler()
|
||||
{
|
||||
for (auto& hook : m_hookTargets)
|
||||
{
|
||||
if (MH_EnableHook(hook->targetAddress) != MH_OK)
|
||||
{
|
||||
if (hook->targetName != nullptr)
|
||||
{
|
||||
ERROR("MH_EnableHook failed for function %s", hook->targetName);
|
||||
}
|
||||
else
|
||||
{
|
||||
ERROR("MH_EnableHook failed for unknown function");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//ERROR("Enabling hook %s", hook->targetName);
|
||||
}
|
||||
}
|
||||
}
|
61
loader_wsock32_proxy/loader.cpp
Normal file
61
loader_wsock32_proxy/loader.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
#include "pch.h"
|
||||
#include "loader.h"
|
||||
#include "../NorthstarDedicatedTest/hookutils.h"
|
||||
#include <string>
|
||||
#include <system_error>
|
||||
|
||||
void LibraryLoadError(DWORD dwMessageId, const wchar_t* libName, const wchar_t* location)
|
||||
{
|
||||
char text[2048];
|
||||
std::string message = std::system_category().message(dwMessageId);
|
||||
sprintf_s(text, "Failed to load the %ls at \"%ls\" (%lu):\n\n%hs", libName, location, dwMessageId, message.c_str());
|
||||
MessageBoxA(GetForegroundWindow(), text, "Northstar Wsock32 Proxy Error", 0);
|
||||
}
|
||||
|
||||
bool LoadNorthstar()
|
||||
{
|
||||
FARPROC Hook_Init = nullptr;
|
||||
{
|
||||
swprintf_s(dllPath, L"%s\\Northstar.dll", exePath);
|
||||
auto hHookModule = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
if (hHookModule) Hook_Init = GetProcAddress(hHookModule, "InitialiseNorthstar");
|
||||
if (!hHookModule || Hook_Init == nullptr)
|
||||
{
|
||||
LibraryLoadError(GetLastError(), L"Northstar.dll", dllPath);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
((bool (*)()) Hook_Init)();
|
||||
return true;
|
||||
}
|
||||
|
||||
typedef int(*LauncherMainType)(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
|
||||
LauncherMainType LauncherMainOriginal;
|
||||
|
||||
int LauncherMainHook(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
LoadNorthstar();
|
||||
return LauncherMainOriginal(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
|
||||
}
|
||||
|
||||
bool ProvisionNorthstar()
|
||||
{
|
||||
if (MH_Initialize() != MH_OK)
|
||||
{
|
||||
MessageBoxA(GetForegroundWindow(), "MH_Initialize failed\nThe game cannot continue and has to exit.", "Northstar Wsock32 Proxy Error", 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
auto launcherHandle = GetModuleHandleA("launcher.dll");
|
||||
if (!launcherHandle)
|
||||
{
|
||||
MessageBoxA(GetForegroundWindow(), "Launcher isn't loaded yet.\nThe game cannot continue and has to exit.", "Northstar Wsock32 Proxy Error", 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
HookEnabler hook;
|
||||
ENABLER_CREATEHOOK(hook, GetProcAddress(launcherHandle, "LauncherMain"), &LauncherMainHook, reinterpret_cast<LPVOID*>(&LauncherMainOriginal));
|
||||
|
||||
return true;
|
||||
}
|
7
loader_wsock32_proxy/loader.h
Normal file
7
loader_wsock32_proxy/loader.h
Normal file
@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
extern wchar_t exePath[4096];
|
||||
extern wchar_t dllPath[8192];
|
||||
extern wchar_t dllPath2[4096];
|
||||
|
||||
bool ProvisionNorthstar();
|
115
loader_wsock32_proxy/loader_wsock32_proxy.vcxproj
Normal file
115
loader_wsock32_proxy/loader_wsock32_proxy.vcxproj
Normal file
@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{cf55f3b5-f348-450a-9ccb-c269f21d629d}</ProjectGuid>
|
||||
<RootNamespace>loaderwsock32proxy</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</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|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>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>wsock32</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;LOADERADVAPI32PROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;LOADERADVAPI32PROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>..\NorthstarDedicatedTest\</AdditionalIncludeDirectories>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<ModuleDefinitionFile>wsock32.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>..\NorthstarDedicatedTest\include\MinHook.x64.lib;mswsock.lib;ws2_32.lib;Shlwapi.lib;imagehlp.lib;dbghelp.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;wsock32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="loader.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp" />
|
||||
<ClCompile Include="hookutils.cpp" />
|
||||
<ClCompile Include="loader.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MASM Include="wsock32.asm" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="wsock32.def" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
|
||||
</ImportGroup>
|
||||
</Project>
|
49
loader_wsock32_proxy/loader_wsock32_proxy.vcxproj.filters
Normal file
49
loader_wsock32_proxy/loader_wsock32_proxy.vcxproj.filters
Normal file
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<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="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<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>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="loader.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="loader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hookutils.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MASM Include="wsock32.asm">
|
||||
<Filter>Source Files</Filter>
|
||||
</MASM>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="wsock32.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
5
loader_wsock32_proxy/pch.cpp
Normal file
5
loader_wsock32_proxy/pch.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
// pch.cpp: source file corresponding to the pre-compiled header
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
|
16
loader_wsock32_proxy/pch.h
Normal file
16
loader_wsock32_proxy/pch.h
Normal file
@ -0,0 +1,16 @@
|
||||
// pch.h: This is a precompiled header file.
|
||||
// Files listed below are compiled only once, improving build performance for future builds.
|
||||
// This also affects IntelliSense performance, including code completion and many code browsing features.
|
||||
// However, files listed here are ALL re-compiled if any one of them is updated between builds.
|
||||
// Do not add files here that you will be updating frequently as this negates the performance advantage.
|
||||
|
||||
#ifndef PCH_H
|
||||
#define PCH_H
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
// Windows Header Files
|
||||
#include <windows.h>
|
||||
|
||||
#include "include/MinHook.h"
|
||||
|
||||
#endif //PCH_H
|
7
loader_wsock32_proxy/wsock32.asm
Normal file
7
loader_wsock32_proxy/wsock32.asm
Normal file
@ -0,0 +1,7 @@
|
||||
.data
|
||||
extern PA : qword
|
||||
.code
|
||||
RunASM proc
|
||||
jmp qword ptr [PA]
|
||||
RunASM endp
|
||||
end
|
78
loader_wsock32_proxy/wsock32.def
Normal file
78
loader_wsock32_proxy/wsock32.def
Normal file
@ -0,0 +1,78 @@
|
||||
LIBRARY wsock32
|
||||
EXPORTS
|
||||
AcceptEx=mswsock.AcceptEx
|
||||
EnumProtocolsA=PROXY_EnumProtocolsA
|
||||
EnumProtocolsW=PROXY_EnumProtocolsW
|
||||
GetAcceptExSockaddrs=mswsock.GetAcceptExSockaddrs
|
||||
GetAddressByNameA=PROXY_GetAddressByNameA
|
||||
GetAddressByNameW=PROXY_GetAddressByNameW
|
||||
GetNameByTypeA=ws2_32.GetNameByTypeA
|
||||
GetNameByTypeW=ws2_32.GetNameByTypeW
|
||||
GetServiceA=ws2_32.GetServiceA
|
||||
GetServiceW=ws2_32.GetServiceW
|
||||
GetTypeByNameA=ws2_32.GetTypeByNameA
|
||||
GetTypeByNameW=ws2_32.GetTypeByNameW
|
||||
MigrateWinsockConfiguration=ws2_32.MigrateWinsockConfiguration
|
||||
NPLoadNameSpaces=ws2_32.NPLoadNameSpaces
|
||||
SetServiceA=ws2_32.SetServiceA
|
||||
SetServiceW=ws2_32.SetServiceW
|
||||
TransmitFile=mswsock.TransmitFile
|
||||
WEP=PROXY_WEP
|
||||
WSAAsyncGetHostByAddr=ws2_32.WSAAsyncGetHostByAddr
|
||||
WSAAsyncGetHostByName=ws2_32.WSAAsyncGetHostByName
|
||||
WSAAsyncGetProtoByName=ws2_32.WSAAsyncGetProtoByName
|
||||
WSAAsyncGetProtoByNumber=ws2_32.WSAAsyncGetProtoByNumber
|
||||
WSAAsyncGetServByName=ws2_32.WSAAsyncGetServByName
|
||||
WSAAsyncGetServByPort=ws2_32.WSAAsyncGetServByPort
|
||||
WSAAsyncSelect=ws2_32.WSAAsyncSelect
|
||||
WSACancelAsyncRequest=ws2_32.WSACancelAsyncRequest
|
||||
WSACancelBlockingCall=ws2_32.WSACancelBlockingCall
|
||||
WSACleanup=ws2_32.WSACleanup @116
|
||||
WSAGetLastError=ws2_32.WSAGetLastError @111
|
||||
WSAIsBlocking=ws2_32.WSAIsBlocking
|
||||
WSARecvEx=PROXY_WSARecvEx
|
||||
WSASetBlockingHook=ws2_32.WSASetBlockingHook
|
||||
WSASetLastError=ws2_32.WSASetLastError @112
|
||||
WSAStartup=ws2_32.WSAStartup @115
|
||||
WSAUnhookBlockingHook=ws2_32.WSAUnhookBlockingHook
|
||||
WSApSetPostRoutine=ws2_32.WSApSetPostRoutine
|
||||
__WSAFDIsSet=PROXY___WSAFDIsSet @151
|
||||
accept=ws2_32.accept @1
|
||||
bind=ws2_32.bind @2
|
||||
closesocket=ws2_32.closesocket @3
|
||||
connect=ws2_32.connect @4
|
||||
dn_expand=ws2_32.dn_expand @1106
|
||||
gethostbyaddr=ws2_32.gethostbyaddr
|
||||
gethostbyname=ws2_32.gethostbyname @52
|
||||
gethostname=ws2_32.gethostname @57
|
||||
getnetbyname=PROXY_getnetbyname @ 1101
|
||||
getpeername=ws2_32.getpeername @5
|
||||
getprotobyname=ws2_32.getprotobyname
|
||||
getprotobynumber=ws2_32.getprotobynumber
|
||||
getservbyname=ws2_32.getservbyname
|
||||
getservbyport=ws2_32.getservbyport
|
||||
getsockname=ws2_32.getsockname @6
|
||||
getsockopt=PROXY_getsockopt @7
|
||||
htonl=ws2_32.htonl
|
||||
htons=ws2_32.htons @9
|
||||
inet_addr=ws2_32.inet_addr
|
||||
inet_network=PROXY_inet_network
|
||||
inet_ntoa=ws2_32.inet_ntoa
|
||||
ioctlsocket=ws2_32.ioctlsocket @12
|
||||
listen=ws2_32.listen @13
|
||||
ntohl=ws2_32.ntohl
|
||||
ntohs=ws2_32.ntohs @15
|
||||
rcmd=ws2_32.rcmd
|
||||
recv=ws2_32.recv @16
|
||||
recvfrom=ws2_32.recvfrom @17
|
||||
rexec=ws2_32.rexec
|
||||
rresvport=ws2_32.rresvport
|
||||
s_perror=PROXY_s_perror
|
||||
select=ws2_32.select @18
|
||||
select=ws2_32.select @18
|
||||
send=ws2_32.send @19
|
||||
sendto=ws2_32.sendto @20
|
||||
sethostname=ws2_32.sethostname
|
||||
setsockopt=PROXY_setsockopt @21
|
||||
shutdown=ws2_32.shutdown @22
|
||||
socket=ws2_32.socket @23
|
Loading…
Reference in New Issue
Block a user