updated changelog

This commit is contained in:
otavepto 2024-01-24 23:11:11 +02:00
parent 5ec61403f5
commit 5db4636cf1
3 changed files with 79 additions and 72 deletions

View File

@ -1,7 +1,7 @@
* added new options to the overlay to allow copying a friend's ID, plus current player ID
* added a new option to the overlay to invite all friends playing the same game
* addded new `auto_accept_invite.txt` setting to automatically accept game/lobby invites from this list, each SteamID64 on a separate line * addded new `auto_accept_invite.txt` setting to automatically accept game/lobby invites from this list, each SteamID64 on a separate line
also you can leave the file empty to accept invitations from anyone also you can leave the file empty to accept invitations from anyone, check the updated release readme
* fixed the condition of `warn_forced_setting`, previously it may be reset back to `false` accidentally
* deprecated `disable_overlay_warning.txt` in `steam_settings` folder in favor of new options/files
* added new `disable_overlay_warning_*.txt` settings to disable certain or all warnings in the overlay * added new `disable_overlay_warning_*.txt` settings to disable certain or all warnings in the overlay
* `disable_overlay_warning_forced_setting.txt`: * `disable_overlay_warning_forced_setting.txt`:
- disable the warning for the usage of any file `force_*.txt` in the overlay - disable the warning for the usage of any file `force_*.txt` in the overlay
@ -9,6 +9,12 @@
* `disable_overlay_warning_bad_appid.txt`: disable the warning for bad app ID (when app ID = 0) in the overlay * `disable_overlay_warning_bad_appid.txt`: disable the warning for bad app ID (when app ID = 0) in the overlay
* `disable_overlay_warning_local_save.txt`: disable the warning for using local save in the overlay * `disable_overlay_warning_local_save.txt`: disable the warning for using local save in the overlay
* `disable_overlay_warning_any.txt`: all the above * `disable_overlay_warning_any.txt`: all the above
* **deprecated** `disable_overlay_warning.txt` in `steam_settings` folder in favor of new the options/files
* added more Stub variants
* fixed the condition of `warn_forced_setting`, previously it may be reset back to `false` accidentally
* fixed a casting mistake when displaying friend ID
* avoid spam loading the achievements forever on failure, only try 3 times
* removed a debug flag in `UGC::GetItemState()` left by mistake
--- ---

View File

@ -275,83 +275,84 @@ PIMAGE_SECTION_HEADER pe_helpers::get_section_header_with_name(HMODULE hModule,
return nullptr; return nullptr;
} }
DWORD pe_helpers::loadlib_remote(HANDLE hProcess, const std::wstring &lib_fullpath, const char** err_reason) { DWORD pe_helpers::loadlib_remote(HANDLE hProcess, const std::wstring &lib_fullpath, const char** err_reason)
{
// create a remote page // create a remote page
const size_t lib_path_str_bytes = lib_fullpath.size() * sizeof(lib_fullpath[0]); const size_t lib_path_str_bytes = lib_fullpath.size() * sizeof(lib_fullpath[0]);
LPVOID lib_remote_page = VirtualAllocEx( LPVOID lib_remote_page = VirtualAllocEx(
hProcess, hProcess,
NULL, NULL,
lib_path_str_bytes + sizeof(lib_fullpath[0]) * 2, // *2 just to be safe lib_path_str_bytes + sizeof(lib_fullpath[0]) * 2, // *2 just to be safe
MEM_RESERVE | MEM_COMMIT, MEM_RESERVE | MEM_COMMIT,
PAGE_READWRITE PAGE_READWRITE
); );
if (!lib_remote_page) { if (!lib_remote_page) {
if (err_reason) { if (err_reason) {
*err_reason = "Failed to remotely allocate page with VirtualAllocEx()"; *err_reason = "Failed to remotely allocate page with VirtualAllocEx()";
}
return GetLastError();
} }
return GetLastError();
}
SIZE_T bytes_written = 0; SIZE_T bytes_written = 0;
BOOL written = WriteProcessMemory( BOOL written = WriteProcessMemory(
hProcess, hProcess,
lib_remote_page, lib_remote_page,
(LPCVOID)&lib_fullpath[0], (LPCVOID)&lib_fullpath[0],
lib_path_str_bytes, lib_path_str_bytes,
&bytes_written &bytes_written
); );
if (!written || bytes_written < lib_path_str_bytes) {
// cleanup allcoated page
VirtualFreeEx(
hProcess,
lib_remote_page,
0,
MEM_RELEASE);
if (err_reason) {
*err_reason = "Failed to remotely write dll path with WriteProcessMemory()";
}
return GetLastError();
}
// call LoadLibraryW() and pass the dll fullpath
HANDLE remote_thread = CreateRemoteThread(
hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)LoadLibraryW,
lib_remote_page,
0,
NULL);
if (!remote_thread) {
// cleanup allcoated page
VirtualFreeEx(
hProcess,
lib_remote_page,
0,
MEM_RELEASE);
if (err_reason) {
*err_reason = "Failed to create/run remote thread with CreateRemoteThread()";
}
return GetLastError();
}
// wait for DllMain
WaitForSingleObject(remote_thread, INFINITE);
CloseHandle(remote_thread);
if (!written || bytes_written < lib_path_str_bytes) {
// cleanup allcoated page // cleanup allcoated page
VirtualFreeEx( VirtualFreeEx(
hProcess, hProcess,
lib_remote_page, lib_remote_page,
0, 0,
MEM_RELEASE); MEM_RELEASE);
if (err_reason) { return ERROR_SUCCESS;
*err_reason = "Failed to remotely write dll path with WriteProcessMemory()";
}
return GetLastError();
}
// call LoadLibraryA() and pass "launc.dll"
HANDLE remote_thread = CreateRemoteThread(
hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)LoadLibraryW,
lib_remote_page,
0,
NULL);
if (!remote_thread) {
// cleanup allcoated page
VirtualFreeEx(
hProcess,
lib_remote_page,
0,
MEM_RELEASE);
if (err_reason) {
*err_reason = "Failed to create/run remote thread with CreateRemoteThread()";
}
return GetLastError();
}
WaitForSingleObject(remote_thread, INFINITE);
CloseHandle(remote_thread);
// cleanup allcoated page
VirtualFreeEx(
hProcess,
lib_remote_page,
0,
MEM_RELEASE);
return ERROR_SUCCESS;
} }
size_t pe_helpers::get_pe_size(HMODULE hModule) size_t pe_helpers::get_pe_size(HMODULE hModule)

View File

@ -50,12 +50,12 @@ function help_page () {
# mandatory checks # mandatory checks
if [[ ! -f "$script_dir/${STEAM_CLIENT_SO}" ]]; then if [[ ! -f "$script_dir/${STEAM_CLIENT_SO}" ]]; then
echo "'$STEAM_CLIENT_SO' must be placed beside this script" echo "'$STEAM_CLIENT_SO' must be placed beside this script"
exit 1 exit 1
fi fi
if [ ! -f "$script_dir/${STEAM_CLIENT64_SO}" ]; then if [ ! -f "$script_dir/${STEAM_CLIENT64_SO}" ]; then
echo "'$STEAM_CLIENT64_SO' must be placed beside this script" echo "'$STEAM_CLIENT64_SO' must be placed beside this script"
exit 1 exit 1
fi fi
# no args = help page # no args = help page