So... you might have noticed the KalOnline no longer let you use dbghelp or d3dx9_29.dll with proxies.
Kal-Online checking mechanism is very simple -> Get some information about file and compare (Size, version and such things).
At the moment I have 3 solutions in my mind (Though there are more).
Right now I'm going to show you fixing by DETOUR
So how does it works?
It's pretty easy:
They are using 3 functions we are interested in
-> CreateFileA (They are using it for GetFileInformationByHandle)
-> GetFileVersionInfoSizeA
-> GetFileVersionInfoA
Where is the trick?
All those functions has filename as one of their input argument.
We will detour all original functions and we will be checking for filename.
If the filename is our proxy-dll, then change the filename to name of original dll.
Check the source for better understanding.
Delete or add any pieces to make the source faster (Yea I haven't spent much time on this so please be understanding)
You can ask a question about the source or mechanism. Please try to avoid asking a incredibly easy questions.
Update #00:
This update fixes the synchronization with version.dll .
There were 2 possible errors:
-> Our detours were attached too late.
-> Our detours weren't loaded because version.dll wasn't loaded yet (attached too early)
How does this fix works?
Adding another detour on kernel32.LoadLibraryA.
Were checking for version.dll if it's being loaded -> If yes
Place the rest of the detours.
Kal-Online checking mechanism is very simple -> Get some information about file and compare (Size, version and such things).
At the moment I have 3 solutions in my mind (Though there are more).
Right now I'm going to show you fixing by DETOUR
So how does it works?
It's pretty easy:
They are using 3 functions we are interested in
-> CreateFileA (They are using it for GetFileInformationByHandle)
-> GetFileVersionInfoSizeA
-> GetFileVersionInfoA
Where is the trick?
All those functions has filename as one of their input argument.
We will detour all original functions and we will be checking for filename.
If the filename is our proxy-dll, then change the filename to name of original dll.
Check the source for better understanding.
Delete or add any pieces to make the source faster (Yea I haven't spent much time on this so please be understanding)
You can ask a question about the source or mechanism. Please try to avoid asking a incredibly easy questions.
Update #00:
This update fixes the synchronization with version.dll .
There were 2 possible errors:
-> Our detours were attached too late.
-> Our detours weren't loaded because version.dll wasn't loaded yet (attached too early)
How does this fix works?
Adding another detour on kernel32.LoadLibraryA.
Were checking for version.dll if it's being loaded -> If yes
Place the rest of the detours.