1
0
mirror of https://github.com/momo5502/hypervisor.git synced 2025-06-02 09:27:43 +00:00

Improve patches

This commit is contained in:
Maurice Heumann 2022-12-27 21:17:54 +01:00
parent 90889e7d32
commit 4cde82aae1
2 changed files with 52 additions and 11 deletions

View File

@ -69,7 +69,7 @@ namespace process
std::string buffer{}; std::string buffer{};
buffer.resize(1024); buffer.resize(1024);
const auto length = GetModuleFileNameExA(process, module, &buffer[0], static_cast<DWORD>(buffer.size())); const auto length = GetModuleFileNameExA(process, module, buffer.data(), static_cast<DWORD>(buffer.size()));
if (length > 0) if (length > 0)
{ {
buffer.resize(length); buffer.resize(length);

View File

@ -25,18 +25,21 @@ bool insert_nop(const uint32_t process_id, const uint64_t address, const size_t
return patch_data(process_id, address, buffer.data(), buffer.size()); return patch_data(process_id, address, buffer.data(), buffer.size());
} }
uint32_t get_process_id() std::optional<uint32_t> get_process_id_from_window(const char* class_name, const char* window_name)
{ {
std::string pid_str{}; const auto window = FindWindowA(class_name, window_name);
printf("Please enter the pid: "); if (!window)
std::getline(std::cin, pid_str); {
return {};
}
return atoi(pid_str.data()); DWORD process_id{};
GetWindowThreadProcessId(window, &process_id);
return static_cast<uint32_t>(process_id);
} }
void activate_patches(const uint32_t pid) void patch_iw5(const uint32_t pid)
{ {
// IW5
insert_nop(pid, 0x4488A8, 2); // Force calling CG_DrawFriendOrFoeTargetBoxes insert_nop(pid, 0x4488A8, 2); // Force calling CG_DrawFriendOrFoeTargetBoxes
insert_nop(pid, 0x47F6C7, 2); // Ignore blind-eye perks insert_nop(pid, 0x47F6C7, 2); // Ignore blind-eye perks
//insert_nop(driver_device, pid, 0x44894C, 2); // Miniconsole //insert_nop(driver_device, pid, 0x44894C, 2); // Miniconsole
@ -55,13 +58,51 @@ void activate_patches(const uint32_t pid)
patch_data(pid, 0x443978, data3, sizeof(data3)); patch_data(pid, 0x443978, data3, sizeof(data3));
} }
void try_patch_iw5()
{
const auto pid = get_process_id_from_window("IW5", nullptr);
if (pid)
{
printf("Patching IW5...\n");
patch_iw5(*pid);
}
}
void patch_t6(const uint32_t pid)
{
// Force calling SatellitePingEnemyPlayer
insert_nop(pid, 0x7993B1, 2);
insert_nop(pid, 0x7993C1, 2);
// Better vsat updates
insert_nop(pid, 0x41D06C, 2); // No time check
insert_nop(pid, 0x41D092, 2); // No perk check
insert_nop(pid, 0x41D0BB, 2); // No fadeout
// Enable chopper boxes
insert_nop(pid, 0x7B539C, 6); // ShouldDrawPlayerTargetHighlights
insert_nop(pid, 0x7B53AE, 6); // Enable chopper boxes
insert_nop(pid, 0x7B5461, 6); // Ignore player not visible
insert_nop(pid, 0x7B5471, 6); // Ignore blind-eye perks
}
void try_patch_t6()
{
const auto pid = get_process_id_from_window(nullptr, "Call of Duty" "\xAE" ": Black Ops II - Multiplayer");
if (pid)
{
printf("Patching T6...\n");
patch_t6(*pid);
}
}
int safe_main(const int /*argc*/, char* /*argv*/[]) int safe_main(const int /*argc*/, char* /*argv*/[])
{ {
const auto pid = get_process_id();
while (true) while (true)
{ {
activate_patches(pid); try_patch_iw5();
try_patch_t6();
printf("Press any key to exit!\n"); printf("Press any key to exit!\n");
if (_getch() != 'r') if (_getch() != 'r')