mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-23 11:15:34 +08:00
updated changelog
This commit is contained in:
parent
5ec61403f5
commit
5db4636cf1
12
CHANGELOG.md
12
CHANGELOG.md
@ -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
|
||||
|
||||
---
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user