It's a bit disappointing to see how much of other peoples stuff this requires and you used, but you are gating features/updates behind a paywall.
What I mean by this is:
1. You used emoose's DQXIHook code directly and just renamed the output file. Original source code is here:
https://github.com/emoose/DQXIHookThe code is all his stuff with the exception of you adjusting it to not be specific to DQ.
The actual hook is the same.
His:
Code: Select all
bool FileExists(LPCWSTR path)
{
DWORD dwAttrib = GetFileAttributesW(path);
return (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}
void* __fastcall PakFile__Find_hook(void* thisptr, void* Filename)
{
const TCHAR* fname = *(TCHAR**)Filename;
if (wcsstr(fname, gameDataStart) && FileExists(fname))
return 0; // file exists loosely, return false so the game thinks that it doesn't exist in the .pak
return PakFile__Find_orig(thisptr, Filename);
}
Yours:
Code: Select all
__int64 __fastcall sub_1800011F0(__int64 a1, const wchar_t **a2, __int64 a3)
{
const WCHAR *v3; // rbx
const wchar_t **v4; // rdi
__int64 v5; // rbp
__int64 v6; // rsi
DWORD v7; // eax
__int64 result; // rax
v3 = *a2;
v4 = a2;
v5 = a1;
v6 = a3;
if ( !wcsstr(*a2, L"../../../") || (v7 = GetFileAttributesW(v3), v7 == -1) || v7 & 0x10 )
result = qword_1800089B0(v5, v4, v6);
else
result = 0i64;
return result;
}
You even left debug symbols/info in which further proves this:
Code: Select all
C:\Users\GHFea\Documents\GitHub\illusorypakhooksource\x64\Release\DQXIHook.pdb
2. Your setup as it is relies on things to even work.
- My personal Steamless project.
- An injector. (In your case, you showed with ExtremeInjector.)
- An offline Steam Emulator. (In your case, you showed with Goldberg.)
Steamless isn't required to get something like this to work. Understanding how injection works and how SteamStub works would get around all of that along with the issue you had in your video of the game double-loading/restarting itself. This is all stuff that is easily fixed/avoided if you understand the base of what you're doing/working on.
I don't want to sound harsh or mean towards your project/goal, but I would highly encourage you to rethink your Patreon and just leave open a means of people to donate as a way to say thanks if you are going to use everyone else's stuff to do this. It's pretty crappy for you to ask for money directly for new features/early access to something like this when it's like.. 99% not yours to begin with.