Star Wars Fix Save 2
- Star Wars Hook GetDriveTypeA to return drive type for our fake save drive. - Add Generic Function to check save drives
This commit is contained in:
parent
299103aa34
commit
8f13c344e3
@ -126,6 +126,29 @@ BOOL SetWindowPosHook(
|
|||||||
|
|
||||||
char newFileName[MAX_PATH];
|
char newFileName[MAX_PATH];
|
||||||
|
|
||||||
|
static bool IsSaveDrive(LPCSTR filename)
|
||||||
|
{
|
||||||
|
if ((filename[0] == 'f' || filename[0] == 'F' || filename[0] == 'g' || filename[0] == 'G') && filename[1] == ':')
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT (WINAPI *g_origGetDriveTypeA)(
|
||||||
|
LPCSTR lpRootPathName
|
||||||
|
);
|
||||||
|
|
||||||
|
UINT GetDriveTypeAHook(
|
||||||
|
LPCSTR lpRootPathName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (IsSaveDrive(lpRootPathName))
|
||||||
|
{
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
return g_origGetDriveTypeA(lpRootPathName);
|
||||||
|
}
|
||||||
|
|
||||||
errno_t (WINAPI *g_orig_sopen_s)(
|
errno_t (WINAPI *g_orig_sopen_s)(
|
||||||
int* pfh,
|
int* pfh,
|
||||||
@ -143,7 +166,7 @@ errno_t _sopen_sHook(
|
|||||||
int pmode
|
int pmode
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if((filename[0] == 'f' || filename[0] == 'F' || filename[0] == 'g' || filename[0] == 'G') && filename[1] == ':')
|
if (IsSaveDrive(filename))
|
||||||
{
|
{
|
||||||
memset(newFileName, 0, MAX_PATH);
|
memset(newFileName, 0, MAX_PATH);
|
||||||
if(GetCurrentDirectoryA(MAX_PATH, newFileName) == 0)
|
if(GetCurrentDirectoryA(MAX_PATH, newFileName) == 0)
|
||||||
@ -170,7 +193,7 @@ int _mkdirHook(
|
|||||||
const char* dirname
|
const char* dirname
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ((dirname[0] == 'f' || dirname[0] == 'F' || dirname[0] == 'g' || dirname[0] == 'G') && dirname[1] == ':')
|
if (IsSaveDrive(dirname))
|
||||||
{
|
{
|
||||||
memset(newFileName, 0, MAX_PATH);
|
memset(newFileName, 0, MAX_PATH);
|
||||||
if (GetCurrentDirectoryA(MAX_PATH, newFileName) == 0)
|
if (GetCurrentDirectoryA(MAX_PATH, newFileName) == 0)
|
||||||
@ -253,6 +276,7 @@ static InitFunction StarWarsEs3XLauncherFunc([]()
|
|||||||
|
|
||||||
MH_Initialize();
|
MH_Initialize();
|
||||||
MH_CreateHookApi(L"kernel32.dll", "CreateProcessW", CreateProcessWHook, (void**)&g_origCreateProcessW);
|
MH_CreateHookApi(L"kernel32.dll", "CreateProcessW", CreateProcessWHook, (void**)&g_origCreateProcessW);
|
||||||
|
MH_CreateHookApi(L"kernel32.dll", "GetDriveTypeA", GetDriveTypeAHook, (void**)&g_origGetDriveTypeA);
|
||||||
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_write", Hook_hasp_write, NULL);
|
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_write", Hook_hasp_write, NULL);
|
||||||
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_read", Hook_hasp_read, NULL);
|
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_read", Hook_hasp_read, NULL);
|
||||||
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_get_size", Hook_hasp_get_size, NULL);
|
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_get_size", Hook_hasp_get_size, NULL);
|
||||||
@ -304,6 +328,7 @@ static InitFunction StarWarsJapEs3XLauncherFunc([]()
|
|||||||
|
|
||||||
MH_Initialize();
|
MH_Initialize();
|
||||||
MH_CreateHookApi(L"kernel32.dll", "CreateProcessW", CreateProcessWHook, (void**)& g_origCreateProcessW);
|
MH_CreateHookApi(L"kernel32.dll", "CreateProcessW", CreateProcessWHook, (void**)& g_origCreateProcessW);
|
||||||
|
MH_CreateHookApi(L"kernel32.dll", "GetDriveTypeA", GetDriveTypeAHook, (void**)&g_origGetDriveTypeA);
|
||||||
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_write", Hook_hasp_write, NULL);
|
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_write", Hook_hasp_write, NULL);
|
||||||
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_read", Hook_hasp_read, NULL);
|
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_read", Hook_hasp_read, NULL);
|
||||||
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_get_size", Hook_hasp_get_size, NULL);
|
MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_get_size", Hook_hasp_get_size, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user