Skip to content

Commit 8ed9ff6

Browse files
committed
fix(FakeAppIds): Readd IClientUGC::pipeLoop hook
1 parent a7a1d4b commit 8ed9ff6

4 files changed

Lines changed: 32 additions & 0 deletions

File tree

src/hooks.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,11 +577,20 @@ static void hkClientRemoteStorage_PipeLoop(void* pClientRemoteStorage, void* a1,
577577
hooked = true;
578578
}
579579

580+
//Cloud & Workshop
580581
FakeAppIds::pipeLoop(false);
581582
Hooks::IClientRemoteStorage_PipeLoop.tramp.fn(pClientRemoteStorage, a1, a2, a3);
582583
FakeAppIds::pipeLoop(true);
583584
}
584585

586+
static void hkClientUGC_PipeLoop(void* pClientUGC, void* a1, void* a2, void* a3)
587+
{
588+
//Workshop
589+
FakeAppIds::pipeLoop(false);
590+
Hooks::IClientUGC_PipeLoop.tramp.fn(pClientUGC, a1, a2, a3);
591+
FakeAppIds::pipeLoop(true);
592+
}
593+
585594
static uint32_t hkClientUtils_GetAppId(void* pClientUtils)
586595
{
587596
uint32_t appId = Hooks::IClientUtils_GetAppId.originalFn.fn(pClientUtils);
@@ -818,6 +827,7 @@ static void hkClientUser_PipeLoop(void* pClientUser, void* a1, void* a2, void* a
818827

819828
static void hkClientUserStats_PipeLoop(void* pClientUserStats, void* a1, void* a2, void* a3)
820829
{
830+
//Achievements
821831
FakeAppIds::pipeLoop(false);
822832
Hooks::IClientUserStats_PipeLoop.tramp.fn(pClientUserStats, a1, a2, a3);
823833
FakeAppIds::pipeLoop(true);
@@ -956,6 +966,7 @@ namespace Hooks
956966
DetourHook<IClientAppManager_PipeLoop_t> IClientAppManager_PipeLoop;
957967
DetourHook<IClientApps_PipeLoop_t> IClientApps_PipeLoop;
958968
DetourHook<IClientRemoteStorage_PipeLoop_t> IClientRemoteStorage_PipeLoop;
969+
DetourHook<IClientUGC_PipeLoop_t> IClientUGC_PipeLoop;
959970
DetourHook<IClientUtils_PipeLoop_t> IClientUtils_PipeLoop;
960971
DetourHook<IClientUser_PipeLoop_t> IClientUser_PipeLoop;
961972
DetourHook<IClientUserStats_PipeLoop_t> IClientUserStats_PipeLoop;
@@ -1031,6 +1042,7 @@ bool Hooks::setup()
10311042
&& IClientApps_PipeLoop.setup(Patterns::IClientApps::PipeLoop, hkClientApps_PipeLoop)
10321043
&& IClientAppManager_PipeLoop.setup(Patterns::IClientAppManager::PipeLoop, hkClientAppManager_PipeLoop)
10331044
&& IClientRemoteStorage_PipeLoop.setup(Patterns::IClientRemoteStorage::PipeLoop, hkClientRemoteStorage_PipeLoop)
1045+
&& IClientUGC_PipeLoop.setup(Patterns::IClientUGC::PipeLoop, hkClientUGC_PipeLoop)
10341046
&& IClientUtils_PipeLoop.setup(Patterns::IClientUtils::PipeLoop, hkClientUtils_PipeLoop)
10351047
&& IClientUser_PipeLoop.setup(Patterns::IClientUser::PipeLoop, hkClientUser_PipeLoop)
10361048
&& IClientUserStats_PipeLoop.setup(Patterns::IClientUserStats::PipeLoop, hkClientUserStats_PipeLoop)
@@ -1078,6 +1090,7 @@ void Hooks::place()
10781090
IClientApps_PipeLoop.place();
10791091
IClientAppManager_PipeLoop.place();
10801092
IClientRemoteStorage_PipeLoop.place();
1093+
IClientUGC_PipeLoop.place();
10811094
IClientUtils_PipeLoop.place();
10821095
IClientUser_PipeLoop.place();
10831096
IClientUserStats_PipeLoop.place();
@@ -1117,6 +1130,7 @@ void Hooks::remove()
11171130
IClientApps_PipeLoop.remove();
11181131
IClientAppManager_PipeLoop.remove();
11191132
IClientRemoteStorage_PipeLoop.remove();
1133+
IClientUGC_PipeLoop.remove();
11201134
IClientUtils_PipeLoop.remove();
11211135
IClientUser_PipeLoop.remove();
11221136
IClientUserStats_PipeLoop.remove();

src/hooks.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ namespace Hooks
7575
typedef void(*IClientAppManager_PipeLoop_t)(void*, void*, void*, void*);
7676
typedef void(*IClientApps_PipeLoop_t)(void*, void*, void*, void*);
7777
typedef void(*IClientRemoteStorage_PipeLoop_t)(void*, void*, void*, void*);
78+
typedef void(*IClientUGC_PipeLoop_t)(void*, void*, void*, void*);
7879
typedef void(*IClientUtils_PipeLoop_t)(void*, void*, void*, void*);
7980
typedef void(*IClientUser_PipeLoop_t)(void*, void*, void*, void*);
8081
typedef void(*IClientUserStats_PipeLoop_t)(void*, void*, void*, void*);
@@ -113,6 +114,7 @@ namespace Hooks
113114
extern DetourHook<IClientAppManager_PipeLoop_t> IClientAppManager_PipeLoop;
114115
extern DetourHook<IClientApps_PipeLoop_t> IClientApps_PipeLoop;
115116
extern DetourHook<IClientRemoteStorage_PipeLoop_t> IClientRemoteStorage_PipeLoop;
117+
extern DetourHook<IClientUGC_PipeLoop_t> IClientUGC_PipeLoop;
116118
extern DetourHook<IClientUtils_PipeLoop_t> IClientUtils_PipeLoop;
117119
extern DetourHook<IClientUser_PipeLoop_t> IClientUser_PipeLoop;
118120
extern DetourHook<IClientUserStats_PipeLoop_t> IClientUserStats_PipeLoop;

src/patterns.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,17 @@ namespace Patterns
260260
};
261261
}
262262

263+
namespace IClientUGC
264+
{
265+
Pattern_t PipeLoop
266+
{
267+
"IClientUGC::PipeLoop",
268+
"FF B5 ? ? ? ? 50 8D 86 ? ? ? ? 68 76 11 00 00",
269+
SigFollowMode::PrologueUpwards,
270+
std::vector<uint8_t> { 0x56, 0x57, 0xe5, 0x89, 0x55 }
271+
};
272+
}
273+
263274
namespace IClientUserStats
264275
{
265276
Pattern_t PipeLoop

src/patterns.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ namespace Patterns
9292
extern Pattern_t RequiresLegacyCDKey;
9393
}
9494

95+
namespace IClientUGC
96+
{
97+
extern Pattern_t PipeLoop;
98+
}
99+
95100
namespace IClientUserStats
96101
{
97102
extern Pattern_t PipeLoop;

0 commit comments

Comments
 (0)