mirror of
https://github.com/diamante0018/MW3ServerFreezer.git
synced 2025-04-19 19:52:53 +00:00
70 lines
1.6 KiB
C++
70 lines
1.6 KiB
C++
#include <std_include.hpp>
|
|
#include "../loader/component_loader.hpp"
|
|
|
|
#include <utils/hook.hpp>
|
|
|
|
namespace remove_hooks {
|
|
namespace {
|
|
int msg_read_bits_compress_check_sv(const char* from, char* to, int size) {
|
|
static char buffer[0x8000];
|
|
|
|
if (size > 0x800) {
|
|
return 0;
|
|
}
|
|
|
|
size = game::MSG_ReadBitsCompress(from, buffer, size);
|
|
|
|
if (size > 0x800) {
|
|
return 0;
|
|
}
|
|
|
|
std::memcpy(to, buffer, size);
|
|
return size;
|
|
}
|
|
|
|
int msg_read_bits_compress_check_cl(const char* from, char* to, int size) {
|
|
static char buffer[0x100000];
|
|
|
|
if (size > 0x20000) {
|
|
return 0;
|
|
}
|
|
|
|
size = game::MSG_ReadBitsCompress(from, buffer, size);
|
|
|
|
if (size > 0x20000) {
|
|
return 0;
|
|
}
|
|
|
|
std::memcpy(to, buffer, size);
|
|
return size;
|
|
}
|
|
} // namespace
|
|
|
|
class component final : public component_interface {
|
|
public:
|
|
void post_start() override { remove_tekno_hooks(); }
|
|
|
|
void post_unpack() override {
|
|
utils::hook::call(0x4E3D42, msg_read_bits_compress_check_sv);
|
|
utils::hook::call(0x4A9F56, msg_read_bits_compress_check_cl);
|
|
}
|
|
|
|
private:
|
|
static void remove_tekno_hooks() {
|
|
utils::hook::set<BYTE>(0x4E3D42, 0xE8);
|
|
utils::hook::set<BYTE>(0x4E3D43, 0xA9);
|
|
utils::hook::set<BYTE>(0x4E3D44, 0x25);
|
|
utils::hook::set<BYTE>(0x4E3D45, 0xFE);
|
|
utils::hook::set<BYTE>(0x4E3D46, 0xFF);
|
|
|
|
utils::hook::set<BYTE>(0x6EA960, 0x55);
|
|
utils::hook::set<BYTE>(0x6EA961, 0x8B);
|
|
utils::hook::set<BYTE>(0x6EA962, 0xEC);
|
|
utils::hook::set<BYTE>(0x6EA963, 0x81);
|
|
utils::hook::set<BYTE>(0x6EA964, 0xEC);
|
|
}
|
|
};
|
|
} // namespace remove_hooks
|
|
|
|
REGISTER_COMPONENT(remove_hooks::component)
|