Skip to content

Commit

Permalink
Fix bug
Browse files Browse the repository at this point in the history
  • Loading branch information
momo5502 committed Dec 3, 2022
1 parent de868ad commit bdb2326
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/client/loader/loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ namespace loader
get_optional_header()
->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS].VirtualAddress);

auto* target_tls_start = PVOID(target_tls->StartAddressOfRawData);
auto* tls_start = PVOID(source_tls->StartAddressOfRawData);
const auto tls_size = source_tls->EndAddressOfRawData - source_tls->StartAddressOfRawData;
const auto tls_index = *reinterpret_cast<DWORD*>(target_tls->AddressOfIndex);
Expand All @@ -156,11 +157,11 @@ namespace loader
}

DWORD old_protect;
VirtualProtect(tls_start, tls_size, PAGE_READWRITE, &old_protect);
VirtualProtect(target_tls_start, tls_size, PAGE_READWRITE, &old_protect);

auto* const tls_base = *reinterpret_cast<LPVOID*>(__readgsqword(0x58) + 8ull * tls_index);
std::memmove(tls_base, tls_start, tls_size);
std::memmove(PVOID(target_tls->StartAddressOfRawData), tls_start, tls_size);
std::memmove(target_tls_start, tls_start, tls_size);

VirtualProtect(target_tls, sizeof(*target_tls), PAGE_READWRITE, &old_protect);
*target_tls = *source_tls;
Expand Down

0 comments on commit bdb2326

Please sign in to comment.