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
also you can leave the file empty to accept invitations from anyone
* 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
also you can leave the file empty to accept invitations from anyone, check the updated release readme
* added new `disable_overlay_warning_*.txt` settings to disable certain or all warnings in the overlay
* `disable_overlay_warning_forced_setting.txt`:
- 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_local_save.txt`: disable the warning for using local save in the overlay
* `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;
}
DWORD pe_helpers::loadlib_remote(HANDLE hProcess, const std::wstring &lib_fullpath, const char** err_reason) {
// create a remote page
const size_t lib_path_str_bytes = lib_fullpath.size() * sizeof(lib_fullpath[0]);
LPVOID lib_remote_page = VirtualAllocEx(
DWORD pe_helpers::loadlib_remote(HANDLE hProcess, const std::wstring &lib_fullpath, const char** err_reason)
{
// create a remote page
const size_t lib_path_str_bytes = lib_fullpath.size() * sizeof(lib_fullpath[0]);
LPVOID lib_remote_page = VirtualAllocEx(
hProcess,
NULL,
lib_path_str_bytes + sizeof(lib_fullpath[0]) * 2, // *2 just to be safe
MEM_RESERVE | MEM_COMMIT,
PAGE_READWRITE
);
);
if (!lib_remote_page) {
if (err_reason) {
*err_reason = "Failed to remotely allocate page with VirtualAllocEx()";
if (!lib_remote_page) {
if (err_reason) {
*err_reason = "Failed to remotely allocate page with VirtualAllocEx()";
}
return GetLastError();
}
return GetLastError();
}
SIZE_T bytes_written = 0;
BOOL written = WriteProcessMemory(
hProcess,
lib_remote_page,
(LPCVOID)&lib_fullpath[0],
lib_path_str_bytes,
&bytes_written
);
SIZE_T bytes_written = 0;
BOOL written = WriteProcessMemory(
hProcess,
lib_remote_page,
(LPCVOID)&lib_fullpath[0],
lib_path_str_bytes,
&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
VirtualFreeEx(
hProcess,
lib_remote_page,
0,
MEM_RELEASE);
hProcess,
lib_remote_page,
0,
MEM_RELEASE);
if (err_reason) {
*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;
return ERROR_SUCCESS;
}
size_t pe_helpers::get_pe_size(HMODULE hModule)

View File

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