From f865a010ff98a0e4e755ce300032bf13c3dc50e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Fern=C3=A1ndez=20Aldana?= Date: Thu, 7 Nov 2024 14:17:45 +0100 Subject: [PATCH] Separated Age2 & Age3 FakeOnline implementations, reverted Age2 implementation to original --- FakeOnline/FakeOnline.aps | Bin 2796 -> 0 bytes age2/FakeOnline/Age2FakeOnline.aps | Bin 0 -> 2404 bytes .../FakeOnline/Age2FakeOnline.filters | 0 .../FakeOnline/Age2FakeOnline.rc | 198 +++++++++--------- .../FakeOnline/Age2FakeOnline.user | 0 .../FakeOnline/Age2FakeOnline.vcxproj | 10 +- .../FakeOnline/Age2FakeOnline.vcxproj.filters | 2 +- .../FakeOnline/Age2FakeOnline.vcxproj.user | 0 age2/FakeOnline/dllmain.cpp | 27 +++ .../FakeOnline}/fakecomresolver.cpp | 0 .../FakeOnline}/fakecomresolver.h | 0 .../FakeOnline}/fakeonline.cpp | 11 +- {FakeOnline => age2/FakeOnline}/fakeonline.h | 0 {FakeOnline => age2/FakeOnline}/framework.h | 0 {FakeOnline => age2/FakeOnline}/pch.cpp | 0 {FakeOnline => age2/FakeOnline}/pch.h | 0 {FakeOnline => age2/FakeOnline}/resource.h | 0 age3/FakeOnline/Age3FakeOnline.aps | Bin 0 -> 2404 bytes age3/FakeOnline/Age3FakeOnline.filters | 45 ++++ age3/FakeOnline/Age3FakeOnline.rc | 99 +++++++++ age3/FakeOnline/Age3FakeOnline.user | 4 + age3/FakeOnline/Age3FakeOnline.vcxproj | 117 +++++++++++ .../FakeOnline/Age3FakeOnline.vcxproj.filters | 62 ++++++ age3/FakeOnline/Age3FakeOnline.vcxproj.user | 4 + {FakeOnline => age3/FakeOnline}/dllmain.cpp | 0 age3/FakeOnline/fakecomresolver.cpp | 22 ++ age3/FakeOnline/fakecomresolver.h | 4 + age3/FakeOnline/fakeenumnetworks.cpp | 67 ++++++ age3/FakeOnline/fakeenumnetworks.h | 35 ++++ age3/FakeOnline/fakenetwork.cpp | 100 +++++++++ age3/FakeOnline/fakenetwork.h | 58 +++++ age3/FakeOnline/fakeonline.cpp | 74 +++++++ age3/FakeOnline/fakeonline.h | 44 ++++ age3/FakeOnline/framework.h | 4 + age3/FakeOnline/pch.cpp | 1 + age3/FakeOnline/pch.h | 9 + age3/FakeOnline/resource.h | 14 ++ ageLANServerLauncherCompanion.sln | 8 +- 38 files changed, 905 insertions(+), 114 deletions(-) delete mode 100644 FakeOnline/FakeOnline.aps create mode 100644 age2/FakeOnline/Age2FakeOnline.aps rename FakeOnline/FakeOnline.filters => age2/FakeOnline/Age2FakeOnline.filters (100%) rename FakeOnline/FakeOnline.rc => age2/FakeOnline/Age2FakeOnline.rc (89%) rename FakeOnline/FakeOnline.user => age2/FakeOnline/Age2FakeOnline.user (100%) rename FakeOnline/FakeOnline.vcxproj => age2/FakeOnline/Age2FakeOnline.vcxproj (92%) rename FakeOnline/FakeOnline.vcxproj.filters => age2/FakeOnline/Age2FakeOnline.vcxproj.filters (96%) rename FakeOnline/FakeOnline.vcxproj.user => age2/FakeOnline/Age2FakeOnline.vcxproj.user (100%) create mode 100644 age2/FakeOnline/dllmain.cpp rename {FakeOnline => age2/FakeOnline}/fakecomresolver.cpp (100%) rename {FakeOnline => age2/FakeOnline}/fakecomresolver.h (100%) rename {FakeOnline => age2/FakeOnline}/fakeonline.cpp (92%) rename {FakeOnline => age2/FakeOnline}/fakeonline.h (100%) rename {FakeOnline => age2/FakeOnline}/framework.h (100%) rename {FakeOnline => age2/FakeOnline}/pch.cpp (100%) rename {FakeOnline => age2/FakeOnline}/pch.h (100%) rename {FakeOnline => age2/FakeOnline}/resource.h (100%) create mode 100644 age3/FakeOnline/Age3FakeOnline.aps create mode 100644 age3/FakeOnline/Age3FakeOnline.filters create mode 100644 age3/FakeOnline/Age3FakeOnline.rc create mode 100644 age3/FakeOnline/Age3FakeOnline.user create mode 100644 age3/FakeOnline/Age3FakeOnline.vcxproj create mode 100644 age3/FakeOnline/Age3FakeOnline.vcxproj.filters create mode 100644 age3/FakeOnline/Age3FakeOnline.vcxproj.user rename {FakeOnline => age3/FakeOnline}/dllmain.cpp (100%) create mode 100644 age3/FakeOnline/fakecomresolver.cpp create mode 100644 age3/FakeOnline/fakecomresolver.h create mode 100644 age3/FakeOnline/fakeenumnetworks.cpp create mode 100644 age3/FakeOnline/fakeenumnetworks.h create mode 100644 age3/FakeOnline/fakenetwork.cpp create mode 100644 age3/FakeOnline/fakenetwork.h create mode 100644 age3/FakeOnline/fakeonline.cpp create mode 100644 age3/FakeOnline/fakeonline.h create mode 100644 age3/FakeOnline/framework.h create mode 100644 age3/FakeOnline/pch.cpp create mode 100644 age3/FakeOnline/pch.h create mode 100644 age3/FakeOnline/resource.h diff --git a/FakeOnline/FakeOnline.aps b/FakeOnline/FakeOnline.aps deleted file mode 100644 index 7f691e206b846118cd627a3e3eb6267922d752d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2796 zcmbtW&5qkt6#hbk#1v2~78M($w9KNFNXD6lDRcqKI1aVyu}5(x?MRVQ*KspZ6DP_~ zhrS0(9->P&NL^N}S+K2m0N#M`o$ENZ<6%Y!NB8F5^MB8|=d%Hz#IagMgUifgbGOU! z2v2ax|JACn=3oD0y+CaTa36M$XOqFq8+-n65_Y{wu-`B&FLZ<1t6*k%%g{dyX8L42 z^+FM7dM^Vf91X)DwXDp18hy`^_4!V@(vbMPtthuK3+9vM%nvGOU|_xavD>qar|n+L zaGjHuZuB~J>%>4+tAbG`eBC)Zs@shupoV-E#FF$|xvZng3)V)=!iF**yHF zIO#mJd05ldt&;{1skpnWQJT7cA@%--D)PJo%wE>l9w~r!Gs(G&hv?!MGfXhx>|xB| zW5|6-j>rE1`)I&`#a#%O`x#!TStv`=e4MGhPU$hGN-nn0dD$O%6X$`3BOJVZG8@7An1Eg{lYix_yIy z&vUh^E0Hot$k8Bo;_7Qbe!Yx?%Bj6f+z3L#Nfo{bV7?XkkzpOzVi1^;FNq9>_f%X>cMd{DMrsJf8Ua-G_pOuWpxHaAZjro4g8N6jX)J^yO zYepj|5-9W1eRKA|Acx?FJkRk3b>gmWsLuA4?086M~$m8hsZCeKPMjU@i(BA1*uEsu0p&N zl-;A3Y;O1H`TwD{l6$s;H^raWCRv?IM!1B%4)j7$DaZFma`R2hmkk&{LwUYykTHAx^@sf2_n;5g#K<28PmzW7YeuS z?FCji9)&?+TaJ9-JdM^l`)J`I*ABWcU}76hQgZ(l24jGG3Sd`veHy8Rp6Nj^Y9({w1eL3H-bwL8HAnB8(7Xh&I1t1hgFDF{YGx zu4F32pn|_R>v+T!sNo!S4a!Wg50CQC7?a0efpRd$0yFF>PC)xI9^rTDWImddoWWPV z_Zh>8wn8P>rq&+0y3&?)j03LED6cE2v5HqDX4LdJ#hZ)@eku4E&`Ly3Zo7&yWwHs} z#s$jDdFM(tRNnHFWU*M3$h?-Z!~IzKdqey+=3GGZBu+tOpOFfpL+sKjPN3;nBlSAt zuQ8e$QPpvSQ{?B=pWznP`8TAMIjIX`S0+}1_By>RW4lhzLq=et!8@?kIi9H1Bxk|M zecBKtiuaXc(pDH)Y0Q!da+2(xz zb4Ty3Nj;4f;n7xr{>J z&;YlwWxL(h!@k>V+17T?Xt{%ix!ppwQe|Nj_=dH)+2}S?cD+)e0Lwl%U|8LL&oU47 z$!A~7`S#zNtxR34vy)~qWgUn>Xan0Fw0d^O>bjk7+d>r=p>>*uYxf)dj)Aos)$2?# zP3g+|FPnHe{@{t0ad@vd(uXn};&iO6+RRNSz2%|8cS3Ca6kCV;@6APrHg2R*HI#vjKr&11QdWJEDHvTi$AUpG)-r zWt}`0imD;6?AEC|$KPRjgXh%w(i{ANHb0h%=ga#<;uVk@`u}WECac~tHb~R literal 0 HcmV?d00001 diff --git a/FakeOnline/FakeOnline.filters b/age2/FakeOnline/Age2FakeOnline.filters similarity index 100% rename from FakeOnline/FakeOnline.filters rename to age2/FakeOnline/Age2FakeOnline.filters diff --git a/FakeOnline/FakeOnline.rc b/age2/FakeOnline/Age2FakeOnline.rc similarity index 89% rename from FakeOnline/FakeOnline.rc rename to age2/FakeOnline/Age2FakeOnline.rc index 4ceae5c..7d94004 100644 --- a/FakeOnline/FakeOnline.rc +++ b/age2/FakeOnline/Age2FakeOnline.rc @@ -1,99 +1,99 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Español (España, alfabetización internacional) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) -LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000904b0" - BEGIN - VALUE "CompanyName", "luskaner" - VALUE "FileDescription", "Fake an always online status" - VALUE "FileVersion", "1.0.0.1" - VALUE "InternalName", "FakeOnline.dll" - VALUE "LegalCopyright", "Copyright (C) 2024 - https://github.com/luskaner/ageLANServerLauncherCompanion" - VALUE "OriginalFilename", "FakeOnline.dll" - VALUE "ProductName", "FakeOnline" - VALUE "ProductVersion", "1.0.0.1" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x9, 1200 - END -END - -#endif // Español (España, alfabetización internacional) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Español (España, alfabetización internacional) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000904b0" + BEGIN + VALUE "CompanyName", "luskaner" + VALUE "FileDescription", "Fake an always online status" + VALUE "FileVersion", "1.0.0.1" + VALUE "InternalName", "Age2FakeOnline.dll" + VALUE "LegalCopyright", "Copyright (C) 2024 - https://github.com/luskaner/ageLANServerLauncherCompanion" + VALUE "OriginalFilename", "Age2FakeOnline.dll" + VALUE "ProductName", "Age2FakeOnline" + VALUE "ProductVersion", "1.0.0.1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x9, 1200 + END +END + +#endif // Español (España, alfabetización internacional) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/FakeOnline/FakeOnline.user b/age2/FakeOnline/Age2FakeOnline.user similarity index 100% rename from FakeOnline/FakeOnline.user rename to age2/FakeOnline/Age2FakeOnline.user diff --git a/FakeOnline/FakeOnline.vcxproj b/age2/FakeOnline/Age2FakeOnline.vcxproj similarity index 92% rename from FakeOnline/FakeOnline.vcxproj rename to age2/FakeOnline/Age2FakeOnline.vcxproj index 63a8077..fb0ef22 100644 --- a/FakeOnline/FakeOnline.vcxproj +++ b/age2/FakeOnline/Age2FakeOnline.vcxproj @@ -14,9 +14,9 @@ 17.0 Win32Proj {68c1afc3-2635-4663-90d8-050c3a7a3c8d} - FakeOnline + Age2FakeOnline 10.0 - FakeOnline + Age2FakeOnline @@ -52,7 +52,7 @@ EnableAllWarnings true - _DEBUG;FakeOnline_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + _DEBUG;Age2FakeOnline_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true Use pch.h @@ -71,7 +71,7 @@ true true true - NDEBUG;FakeOnline_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + NDEBUG;Age2FakeOnline_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true Use pch.h @@ -105,7 +105,7 @@ - + diff --git a/FakeOnline/FakeOnline.vcxproj.filters b/age2/FakeOnline/Age2FakeOnline.vcxproj.filters similarity index 96% rename from FakeOnline/FakeOnline.vcxproj.filters rename to age2/FakeOnline/Age2FakeOnline.vcxproj.filters index b5b6d3f..4465be0 100644 --- a/FakeOnline/FakeOnline.vcxproj.filters +++ b/age2/FakeOnline/Age2FakeOnline.vcxproj.filters @@ -43,7 +43,7 @@ - + Resources diff --git a/FakeOnline/FakeOnline.vcxproj.user b/age2/FakeOnline/Age2FakeOnline.vcxproj.user similarity index 100% rename from FakeOnline/FakeOnline.vcxproj.user rename to age2/FakeOnline/Age2FakeOnline.vcxproj.user diff --git a/age2/FakeOnline/dllmain.cpp b/age2/FakeOnline/dllmain.cpp new file mode 100644 index 0000000..8ce6715 --- /dev/null +++ b/age2/FakeOnline/dllmain.cpp @@ -0,0 +1,27 @@ +#include "pch.h" +#include "fakecomresolver.h" +#include + +BOOL APIENTRY DllMain( HMODULE /*hModule*/, + DWORD ul_reason_for_call, + LPVOID /*lpReserved*/ + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + DetourTransactionBegin(); + DetourUpdateThread(GetCurrentThread()); + COMDllProcessAttach(); + DetourTransactionCommit(); + break; + case DLL_PROCESS_DETACH: + DetourTransactionBegin(); + DetourUpdateThread(GetCurrentThread()); + COMDllProcessDetach(); + DetourTransactionCommit(); + break; + } + return TRUE; +} + diff --git a/FakeOnline/fakecomresolver.cpp b/age2/FakeOnline/fakecomresolver.cpp similarity index 100% rename from FakeOnline/fakecomresolver.cpp rename to age2/FakeOnline/fakecomresolver.cpp diff --git a/FakeOnline/fakecomresolver.h b/age2/FakeOnline/fakecomresolver.h similarity index 100% rename from FakeOnline/fakecomresolver.h rename to age2/FakeOnline/fakecomresolver.h diff --git a/FakeOnline/fakeonline.cpp b/age2/FakeOnline/fakeonline.cpp similarity index 92% rename from FakeOnline/fakeonline.cpp rename to age2/FakeOnline/fakeonline.cpp index 3d71cd2..2df08d1 100644 --- a/FakeOnline/fakeonline.cpp +++ b/age2/FakeOnline/fakeonline.cpp @@ -20,12 +20,11 @@ HRESULT STDMETHODCALLTYPE FakeNetworkListManager::Invoke(DISPID dispIdMember, RE } HRESULT STDMETHODCALLTYPE FakeNetworkListManager::get_IsConnectedToInternet(VARIANT_BOOL* pbIsConnected) { - return get_IsConnected(pbIsConnected); + return original->get_IsConnected(pbIsConnected); } HRESULT STDMETHODCALLTYPE FakeNetworkListManager::get_IsConnected(VARIANT_BOOL* pbIsConnected) { - *pbIsConnected = VARIANT_TRUE; - return S_OK; + return original->get_IsConnected(pbIsConnected); } HRESULT STDMETHODCALLTYPE FakeNetworkListManager::QueryInterface(REFIID riid, void** ppvObject) { @@ -37,11 +36,7 @@ ULONG STDMETHODCALLTYPE FakeNetworkListManager::AddRef() { } ULONG STDMETHODCALLTYPE FakeNetworkListManager::Release() { - ULONG refCount = original->Release(); - if (refCount == 0) { - delete this; - } - return refCount; + return original->Release(); } HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetNetworks(NLM_ENUM_NETWORK Flags, IEnumNetworks** ppEnumNetwork) { diff --git a/FakeOnline/fakeonline.h b/age2/FakeOnline/fakeonline.h similarity index 100% rename from FakeOnline/fakeonline.h rename to age2/FakeOnline/fakeonline.h diff --git a/FakeOnline/framework.h b/age2/FakeOnline/framework.h similarity index 100% rename from FakeOnline/framework.h rename to age2/FakeOnline/framework.h diff --git a/FakeOnline/pch.cpp b/age2/FakeOnline/pch.cpp similarity index 100% rename from FakeOnline/pch.cpp rename to age2/FakeOnline/pch.cpp diff --git a/FakeOnline/pch.h b/age2/FakeOnline/pch.h similarity index 100% rename from FakeOnline/pch.h rename to age2/FakeOnline/pch.h diff --git a/FakeOnline/resource.h b/age2/FakeOnline/resource.h similarity index 100% rename from FakeOnline/resource.h rename to age2/FakeOnline/resource.h diff --git a/age3/FakeOnline/Age3FakeOnline.aps b/age3/FakeOnline/Age3FakeOnline.aps new file mode 100644 index 0000000000000000000000000000000000000000..271d205c2b3949446f91ffcb6361657d4fc0de22 GIT binary patch literal 2404 zcmb_e&2H0J6#hH}%}_dG#Dd*O=4Vl)Ax%P5&9DFkClL{DT*YZ%BukcYO&T?EDkq`v zCOiU59so9o1?IM!1B%4)j7$DaZFma`R2hmkk&{LwUYykTHAx^@sf2_n;5g#K<28PmzW7YeuS z?FCji9)&?+TaJ9-JdM^l`)J`I*ABWcU}76hQgZ(l24jGG3Sd`veHy8Rp6Nj^Y9({w1eL3H-bwL8HAnB8(7Xh&I1t1hgFDF{YGx zu4F32pn|_R>v+T!sNo!S4a!Wg50CQC7?a0efpRd$0yFF>PC)xI9^rTDWImddoWWPV z_Zh>8wn8P>rq&+0y3&?)j03LED6cE2v5HqDX4LdJ#hZ)@eku4E&`Ly3Zo7&yWwHs} z#s$jDdFM(tRNnHFWU*M3$h?-Z!~IzKdqey+=3GGZBu+tOpOFfpL+sKjPN3;nBlSAt zuQ8e$QPpvSQ{?B=pWznP`8TAMIjIX`S0+}1_By>RW4lhzLq=et!8@?kIi9H1Bxk|M zecBKtiuaXc(pDH)Y0Q!da+2(xz zb4Ty3Nj;4f;n7xr{>J z&;YlwWxL(h!@k>V+17T?Xt{%ix!ppwQe|Nj_=dH)+2}S?cD+)e0Lwl%U|8LL&oU47 z$!A~7`S#zNtxR34vy)~qWgUn>Xan0Fw0d^O>bjk7+d>r=p>>*uYxf)dj)Aos)$2?# zP3g+|FPnHe{@{t0ad@vd(uXn};&iO6+RRNSz2%|8cS3Ca6kCV;@6APrHg2R*HI#vjKr&11QdWJEDHvTi$AUpG)-r zWt}`0imD;6?AEC|$KPRjgXh%w(i{ANHb0h%=ga#<;uVk@`u}WECac~tHb~R literal 0 HcmV?d00001 diff --git a/age3/FakeOnline/Age3FakeOnline.filters b/age3/FakeOnline/Age3FakeOnline.filters new file mode 100644 index 0000000..e33272a --- /dev/null +++ b/age3/FakeOnline/Age3FakeOnline.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Archivos de encabezado + + + Archivos de encabezado + + + Archivos de encabezado + + + Archivos de encabezado + + + + + Archivos de origen + + + Archivos de origen + + + Archivos de origen + + + Archivos de origen + + + \ No newline at end of file diff --git a/age3/FakeOnline/Age3FakeOnline.rc b/age3/FakeOnline/Age3FakeOnline.rc new file mode 100644 index 0000000..500f31d --- /dev/null +++ b/age3/FakeOnline/Age3FakeOnline.rc @@ -0,0 +1,99 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Español (España, alfabetización internacional) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000904b0" + BEGIN + VALUE "CompanyName", "luskaner" + VALUE "FileDescription", "Fake an always online status" + VALUE "FileVersion", "1.0.0.0" + VALUE "InternalName", "Age3FakeOnline.dll" + VALUE "LegalCopyright", "Copyright (C) 2024 - https://github.com/luskaner/ageLANServerLauncherCompanion" + VALUE "OriginalFilename", "Age3FakeOnline.dll" + VALUE "ProductName", "Age3FakeOnline" + VALUE "ProductVersion", "1.0.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x9, 1200 + END +END + +#endif // Español (España, alfabetización internacional) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/age3/FakeOnline/Age3FakeOnline.user b/age3/FakeOnline/Age3FakeOnline.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/age3/FakeOnline/Age3FakeOnline.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/age3/FakeOnline/Age3FakeOnline.vcxproj b/age3/FakeOnline/Age3FakeOnline.vcxproj new file mode 100644 index 0000000..60f4fb2 --- /dev/null +++ b/age3/FakeOnline/Age3FakeOnline.vcxproj @@ -0,0 +1,117 @@ + + + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {942B1424-6C69-4C2A-A4E1-3F2D7539C21B} + Age3FakeOnline + 10.0 + Age3FakeOnline + + + + DynamicLibrary + true + v143 + Unicode + true + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + true + + + + EnableAllWarnings + true + _DEBUG;Age3FakeOnline_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + + + + + EnableAllWarnings + true + true + true + NDEBUG;Age3FakeOnline_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + None + Speed + + + Windows + true + true + true + false + + + + + + + + + + + + + + + + + + + Create + Create + + + + + + + + + \ No newline at end of file diff --git a/age3/FakeOnline/Age3FakeOnline.vcxproj.filters b/age3/FakeOnline/Age3FakeOnline.vcxproj.filters new file mode 100644 index 0000000..32ffacf --- /dev/null +++ b/age3/FakeOnline/Age3FakeOnline.vcxproj.filters @@ -0,0 +1,62 @@ + + + + + Implementation + + + Implementation + + + Implementation + + + Implementation + + + Implementation + + + Implementation + + + + + Headers + + + Headers + + + Headers + + + Headers + + + Resources + + + Headers + + + Headers + + + + + {76998c53-1484-4ba0-8807-c38a5e4db3c8} + + + {6e116d30-1214-4641-b3f5-18e477af5157} + + + {9316102e-f6d5-4627-8506-a813d6433eb1} + + + + + Resources + + + \ No newline at end of file diff --git a/age3/FakeOnline/Age3FakeOnline.vcxproj.user b/age3/FakeOnline/Age3FakeOnline.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/age3/FakeOnline/Age3FakeOnline.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/FakeOnline/dllmain.cpp b/age3/FakeOnline/dllmain.cpp similarity index 100% rename from FakeOnline/dllmain.cpp rename to age3/FakeOnline/dllmain.cpp diff --git a/age3/FakeOnline/fakecomresolver.cpp b/age3/FakeOnline/fakecomresolver.cpp new file mode 100644 index 0000000..6721b21 --- /dev/null +++ b/age3/FakeOnline/fakecomresolver.cpp @@ -0,0 +1,22 @@ +#include "pch.h" +#include "fakecomresolver.h" +#include "fakeonline.h" + +HRESULT(WINAPI* Real_CoCreateInstance)(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID* ppv) = CoCreateInstance; + +HRESULT WINAPI Mine_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID* ppv) { + HRESULT hr = Real_CoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); + if (SUCCEEDED(hr) && riid == IID_INetworkListManager) { + INetworkListManager* original = (INetworkListManager*)(*ppv); + *ppv = new FakeNetworkListManager(original); + } + return hr; +} + +void COMDllProcessAttach() { + DetourAttach(&(PVOID&)Real_CoCreateInstance, Mine_CoCreateInstance); +} + +void COMDllProcessDetach() { + DetourDetach(&(PVOID&)Real_CoCreateInstance, Mine_CoCreateInstance); +} \ No newline at end of file diff --git a/age3/FakeOnline/fakecomresolver.h b/age3/FakeOnline/fakecomresolver.h new file mode 100644 index 0000000..406a88a --- /dev/null +++ b/age3/FakeOnline/fakecomresolver.h @@ -0,0 +1,4 @@ +#pragma once + +void COMDllProcessAttach(); +void COMDllProcessDetach(); \ No newline at end of file diff --git a/age3/FakeOnline/fakeenumnetworks.cpp b/age3/FakeOnline/fakeenumnetworks.cpp new file mode 100644 index 0000000..bd8863e --- /dev/null +++ b/age3/FakeOnline/fakeenumnetworks.cpp @@ -0,0 +1,67 @@ +#include "pch.h" +#include "fakeenumnetworks.h" +#include "fakenetwork.h" +#include + +FakeEnumNetworks::FakeEnumNetworks(IEnumNetworks* pOriginal) : m_pOriginal(pOriginal) {} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::QueryInterface(REFIID riid, void** ppvObject) { + if (riid == __uuidof(IUnknown) || riid == __uuidof(IDispatch) || riid == __uuidof(IEnumNetworks)) { + *ppvObject = static_cast(this); + AddRef(); + return S_OK; + } + return m_pOriginal->QueryInterface(riid, ppvObject); +} + +ULONG STDMETHODCALLTYPE FakeEnumNetworks::AddRef() { + return m_pOriginal->AddRef(); +} + +ULONG STDMETHODCALLTYPE FakeEnumNetworks::Release() { + ULONG count = m_pOriginal->Release(); + if (count == 0) { + delete this; + } + return count; +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::Next(ULONG celt, INetwork** rgelt, ULONG* pceltFetched) { + HRESULT res = m_pOriginal->Next(celt, rgelt, pceltFetched); + INetwork* pOriginalINetwork = *rgelt; + FakeNetwork* proxy = new FakeNetwork(pOriginalINetwork); + *rgelt = proxy; + return res; +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::Skip(ULONG celt) { + return m_pOriginal->Skip(celt); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::Reset() { + return m_pOriginal->Reset(); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::Clone(IEnumNetworks** ppenum) { + return m_pOriginal->Clone(ppenum); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::get__NewEnum(IEnumVARIANT** ppEnum) { + return m_pOriginal->get__NewEnum(ppEnum); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::GetTypeInfoCount(UINT* pctinfo) { + return m_pOriginal->GetTypeInfoCount(pctinfo); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) { + return m_pOriginal->GetTypeInfo(iTInfo, lcid, ppTInfo); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) { + return m_pOriginal->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); +} + +HRESULT STDMETHODCALLTYPE FakeEnumNetworks::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) { + return m_pOriginal->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} \ No newline at end of file diff --git a/age3/FakeOnline/fakeenumnetworks.h b/age3/FakeOnline/fakeenumnetworks.h new file mode 100644 index 0000000..59749a4 --- /dev/null +++ b/age3/FakeOnline/fakeenumnetworks.h @@ -0,0 +1,35 @@ +#pragma once +#include "pch.h" + +class FakeEnumNetworks : public IEnumNetworks { +private: + IEnumNetworks* m_pOriginal; + +public: + FakeEnumNetworks(IEnumNetworks* pOriginal); + virtual ~FakeEnumNetworks() = default; + + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override; + + ULONG STDMETHODCALLTYPE AddRef() override; + + ULONG STDMETHODCALLTYPE Release() override; + + HRESULT STDMETHODCALLTYPE Next(ULONG celt, INetwork** rgelt, ULONG* pceltFetched) override; + + HRESULT STDMETHODCALLTYPE Skip(ULONG celt) override; + + HRESULT STDMETHODCALLTYPE Reset() override; + + HRESULT STDMETHODCALLTYPE Clone(IEnumNetworks** ppenum) override; + + HRESULT STDMETHODCALLTYPE get__NewEnum(IEnumVARIANT** ppEnum) override; + + HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT* pctinfo) override; + + HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) override; + + HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) override; + + HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) override; +}; \ No newline at end of file diff --git a/age3/FakeOnline/fakenetwork.cpp b/age3/FakeOnline/fakenetwork.cpp new file mode 100644 index 0000000..4cbbf6b --- /dev/null +++ b/age3/FakeOnline/fakenetwork.cpp @@ -0,0 +1,100 @@ +#include "pch.h" +#include "fakenetwork.h" + +FakeNetwork::FakeNetwork(INetwork* pOriginal) : m_pOriginal(pOriginal) {} + +HRESULT STDMETHODCALLTYPE FakeNetwork::QueryInterface(REFIID riid, void** ppvObject) { + if (riid == __uuidof(IUnknown) || riid == __uuidof(IDispatch) || riid == __uuidof(INetwork)) { + *ppvObject = static_cast(this); + AddRef(); + return S_OK; + } + return m_pOriginal->QueryInterface(riid, ppvObject); +} + +ULONG STDMETHODCALLTYPE FakeNetwork::AddRef() { + return m_pOriginal->AddRef(); +} + +ULONG STDMETHODCALLTYPE FakeNetwork::Release() { + ULONG count = m_pOriginal->Release(); + if (count == 0) { + delete this; + } + return count; +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetNetworkId(GUID* pgdGuidNetworkId) { + return m_pOriginal->GetNetworkId(pgdGuidNetworkId); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetName(BSTR* pszNetworkName) { + return m_pOriginal->GetName(pszNetworkName); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::SetName(BSTR szNetworkNewName) { + return m_pOriginal->SetName(szNetworkNewName); +} + +HRESULT FakeNetwork::GetDomainType( + NLM_DOMAIN_TYPE* pNetworkType +) { + return m_pOriginal->GetDomainType(pNetworkType); +} + +HRESULT FakeNetwork::GetConnectivity( + NLM_CONNECTIVITY* pConnectivity +) { + return m_pOriginal->GetConnectivity(pConnectivity); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetDescription(BSTR* pszDescription) { + return m_pOriginal->GetDescription(pszDescription); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::SetDescription(BSTR szDescription) { + return m_pOriginal->SetDescription(szDescription); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetNetworkConnections(IEnumNetworkConnections** ppEnumNetworkConnections) { + return m_pOriginal->GetNetworkConnections(ppEnumNetworkConnections); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetTimeCreatedAndConnected(DWORD* pdwLowDateTimeCreated, + DWORD* pdwHighDateTimeCreated, + DWORD* pdwLowDateTimeConnected, + DWORD* pdwHighDateTimeConnected) { + return m_pOriginal->GetTimeCreatedAndConnected(pdwLowDateTimeCreated, pdwHighDateTimeCreated, pdwLowDateTimeConnected, pdwHighDateTimeConnected); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::get_IsConnected(VARIANT_BOOL* pbIsConnected) { + return m_pOriginal->get_IsConnected(pbIsConnected); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::get_IsConnectedToInternet(VARIANT_BOOL* pbIsConnected) { + return m_pOriginal->get_IsConnected(pbIsConnected); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetCategory(NLM_NETWORK_CATEGORY* pCategory) { + return m_pOriginal->GetCategory(pCategory); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::SetCategory(NLM_NETWORK_CATEGORY NewCategory) { + return m_pOriginal->SetCategory(NewCategory); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetTypeInfoCount(UINT* pctinfo) { + return m_pOriginal->GetTypeInfoCount(pctinfo); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) { + return m_pOriginal->GetTypeInfo(iTInfo, lcid, ppTInfo); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) { + return m_pOriginal->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); +} + +HRESULT STDMETHODCALLTYPE FakeNetwork::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) { + return m_pOriginal->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} \ No newline at end of file diff --git a/age3/FakeOnline/fakenetwork.h b/age3/FakeOnline/fakenetwork.h new file mode 100644 index 0000000..b29edad --- /dev/null +++ b/age3/FakeOnline/fakenetwork.h @@ -0,0 +1,58 @@ +#pragma once +#include "pch.h" + +class FakeNetwork : public INetwork { +private: + INetwork* m_pOriginal; + +public: + FakeNetwork(INetwork* pOriginal); + virtual ~FakeNetwork() = default; + + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override; + + ULONG STDMETHODCALLTYPE AddRef() override; + + ULONG STDMETHODCALLTYPE Release() override; + + HRESULT STDMETHODCALLTYPE GetNetworkId(GUID* pgdGuidNetworkId) override; + + HRESULT STDMETHODCALLTYPE GetName(BSTR* pszNetworkName) override; + + HRESULT STDMETHODCALLTYPE SetName(BSTR szNetworkNewName) override; + + HRESULT GetDomainType( + NLM_DOMAIN_TYPE* pNetworkType + )override; + + HRESULT GetConnectivity( + NLM_CONNECTIVITY* pConnectivity + )override; + + HRESULT STDMETHODCALLTYPE GetDescription(BSTR* pszDescription) override; + + HRESULT STDMETHODCALLTYPE SetDescription(BSTR szDescription) override; + + HRESULT STDMETHODCALLTYPE GetNetworkConnections(IEnumNetworkConnections** ppEnumNetworkConnections) override; + + HRESULT STDMETHODCALLTYPE GetTimeCreatedAndConnected(DWORD* pdwLowDateTimeCreated, + DWORD* pdwHighDateTimeCreated, + DWORD* pdwLowDateTimeConnected, + DWORD* pdwHighDateTimeConnected) override; + + HRESULT STDMETHODCALLTYPE get_IsConnected(VARIANT_BOOL* pbIsConnected) override; + + HRESULT STDMETHODCALLTYPE get_IsConnectedToInternet(VARIANT_BOOL* pbIsConnected) override; + + HRESULT STDMETHODCALLTYPE GetCategory(NLM_NETWORK_CATEGORY* pCategory) override; + + HRESULT STDMETHODCALLTYPE SetCategory(NLM_NETWORK_CATEGORY NewCategory) override; + + HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT* pctinfo) override; + + HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) override; + + HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) override; + + HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) override; +}; \ No newline at end of file diff --git a/age3/FakeOnline/fakeonline.cpp b/age3/FakeOnline/fakeonline.cpp new file mode 100644 index 0000000..111eade --- /dev/null +++ b/age3/FakeOnline/fakeonline.cpp @@ -0,0 +1,74 @@ +#include "pch.h" +#include "fakeonline.h" +#include "fakeenumnetworks.h" +#include + +FakeNetworkListManager::FakeNetworkListManager(INetworkListManager* original) : original(original) {} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetTypeInfoCount(UINT* pctinfo) { + return original->GetTypeInfoCount(pctinfo); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) { + return original->GetTypeInfo(iTInfo, lcid, ppTInfo); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) { + return original->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) { + return original->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::get_IsConnectedToInternet(VARIANT_BOOL* pbIsConnected) { + return original->get_IsConnected(pbIsConnected); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::get_IsConnected(VARIANT_BOOL* pbIsConnected) { + return original->get_IsConnected(pbIsConnected); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::QueryInterface(REFIID riid, void** ppvObject) { + return original->QueryInterface(riid, ppvObject); +} + +ULONG STDMETHODCALLTYPE FakeNetworkListManager::AddRef() { + return original->AddRef(); +} + +ULONG STDMETHODCALLTYPE FakeNetworkListManager::Release() { + return original->Release(); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetNetworks(NLM_ENUM_NETWORK Flags, IEnumNetworks** ppEnumNetwork) { + HRESULT hr = original->GetNetworks(Flags, ppEnumNetwork); + IEnumNetworks* pOriginalEnumNetwork = *ppEnumNetwork; + FakeEnumNetworks* pProxy = new FakeEnumNetworks(pOriginalEnumNetwork); + *ppEnumNetwork = pProxy; + return hr; +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetNetwork(GUID gdNetworkId, INetwork** ppNetwork) { + return original->GetNetwork(gdNetworkId, ppNetwork); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetNetworkConnections(IEnumNetworkConnections** ppEnum) { + return original->GetNetworkConnections(ppEnum); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetNetworkConnection(GUID gdNetworkConnectionId, INetworkConnection** ppNetworkConnection) { + return original->GetNetworkConnection(gdNetworkConnectionId, ppNetworkConnection); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::GetConnectivity(NLM_CONNECTIVITY* pConnectivity) { + return original->GetConnectivity(pConnectivity); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::SetSimulatedProfileInfo(NLM_SIMULATED_PROFILE_INFO* pSimulatedInfo) { + return original->SetSimulatedProfileInfo(pSimulatedInfo); +} + +HRESULT STDMETHODCALLTYPE FakeNetworkListManager::ClearSimulatedProfileInfo() { + return original->ClearSimulatedProfileInfo(); +} \ No newline at end of file diff --git a/age3/FakeOnline/fakeonline.h b/age3/FakeOnline/fakeonline.h new file mode 100644 index 0000000..e9eb244 --- /dev/null +++ b/age3/FakeOnline/fakeonline.h @@ -0,0 +1,44 @@ +#pragma once +#include "pch.h" + +class FakeNetworkListManager : public INetworkListManager +{ +public: + FakeNetworkListManager(INetworkListManager* original); + + HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT* pctinfo) override; + + HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) override; + + HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) override; + + HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) override; + + HRESULT STDMETHODCALLTYPE get_IsConnectedToInternet(VARIANT_BOOL* pbIsConnected) override; + + HRESULT STDMETHODCALLTYPE get_IsConnected(VARIANT_BOOL* pbIsConnected) override; + + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override; + + ULONG STDMETHODCALLTYPE AddRef() override; + + ULONG STDMETHODCALLTYPE Release() override; + + HRESULT STDMETHODCALLTYPE GetNetworks(NLM_ENUM_NETWORK Flags, IEnumNetworks** ppEnumNetwork) override; + + HRESULT STDMETHODCALLTYPE GetNetwork(GUID gdNetworkId, INetwork** ppNetwork) override; + + HRESULT STDMETHODCALLTYPE GetNetworkConnections(IEnumNetworkConnections** ppEnum) override; + + HRESULT STDMETHODCALLTYPE GetNetworkConnection(GUID gdNetworkConnectionId, INetworkConnection** ppNetworkConnection) override; + + HRESULT STDMETHODCALLTYPE GetConnectivity(NLM_CONNECTIVITY* pConnectivity) override; + + HRESULT STDMETHODCALLTYPE SetSimulatedProfileInfo(NLM_SIMULATED_PROFILE_INFO* pSimulatedInfo) override; + + HRESULT STDMETHODCALLTYPE ClearSimulatedProfileInfo() override; + + virtual ~FakeNetworkListManager() = default; +private: + INetworkListManager* original; +}; \ No newline at end of file diff --git a/age3/FakeOnline/framework.h b/age3/FakeOnline/framework.h new file mode 100644 index 0000000..5cb4cbf --- /dev/null +++ b/age3/FakeOnline/framework.h @@ -0,0 +1,4 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN +#include diff --git a/age3/FakeOnline/pch.cpp b/age3/FakeOnline/pch.cpp new file mode 100644 index 0000000..1d9f38c --- /dev/null +++ b/age3/FakeOnline/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/age3/FakeOnline/pch.h b/age3/FakeOnline/pch.h new file mode 100644 index 0000000..37201ac --- /dev/null +++ b/age3/FakeOnline/pch.h @@ -0,0 +1,9 @@ +#ifndef PCH_H +#define PCH_H + +#include "framework.h" +#include "windows.h" +#include +#include "detours/detours.h" + +#endif diff --git a/age3/FakeOnline/resource.h b/age3/FakeOnline/resource.h new file mode 100644 index 0000000..ffafdfb --- /dev/null +++ b/age3/FakeOnline/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by FakeOnline.rc + +// Valores predeterminados siguientes para nuevos objetos +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/ageLANServerLauncherCompanion.sln b/ageLANServerLauncherCompanion.sln index 9e01065..8cb1663 100644 --- a/ageLANServerLauncherCompanion.sln +++ b/ageLANServerLauncherCompanion.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.11.35312.102 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeOnline", "FakeOnline\FakeOnline.vcxproj", "{68C1AFC3-2635-4663-90D8-050C3A7A3C8D}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Age2FakeOnline", "age2\FakeOnline\Age2FakeOnline.vcxproj", "{68C1AFC3-2635-4663-90D8-050C3A7A3C8D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Elementos de la solución", "Elementos de la solución", "{80712833-CA6D-4A74-BABC-0D5F675489B4}" ProjectSection(SolutionItems) = preProject @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Elementos de la solución", Directory.Build.targets = Directory.Build.targets EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeOnline", "age3\FakeOnline\Age3FakeOnline.vcxproj", "{942B1424-6C69-4C2A-A4E1-3F2D7539C21B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,6 +23,10 @@ Global {68C1AFC3-2635-4663-90D8-050C3A7A3C8D}.Debug|x64.Build.0 = Debug|x64 {68C1AFC3-2635-4663-90D8-050C3A7A3C8D}.Release|x64.ActiveCfg = Release|x64 {68C1AFC3-2635-4663-90D8-050C3A7A3C8D}.Release|x64.Build.0 = Release|x64 + {942B1424-6C69-4C2A-A4E1-3F2D7539C21B}.Debug|x64.ActiveCfg = Debug|x64 + {942B1424-6C69-4C2A-A4E1-3F2D7539C21B}.Debug|x64.Build.0 = Debug|x64 + {942B1424-6C69-4C2A-A4E1-3F2D7539C21B}.Release|x64.ActiveCfg = Release|x64 + {942B1424-6C69-4C2A-A4E1-3F2D7539C21B}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE