LunaHook-mirror/LunaHook/engine32/Onscripter.cpp

46 lines
1.1 KiB
C++
Raw Normal View History

2024-09-02 08:23:44 +08:00
#include "Onscripter.h"
namespace
{
// Monster Girl Quest Remastered
2024-09-02 08:25:06 +08:00
2024-09-02 08:23:44 +08:00
bool hook2()
{
BYTE bytes[] = {
//clang-format off
0x8b, 0xbe, XX2, 0x00, 0x00,
0x80, 0x3c, 0x07, 0x00,
0x8d, 0x1c, 0x07,
0x75, XX,
0x8b, 0xce,
0xe8, XX4,
//clang-format on
};
auto addr = MemDbg::findBytes(bytes, sizeof(bytes), processStartAddress, processStopAddress);
if (!addr)
return false;
HookParam hp;
hp.address = addr;
hp.offset = get_reg(regs::eax);
hp.type = USING_STRING | CODEC_UTF8;
hp.filter_fun = [](LPVOID data, size_t *size, HookParam *)
{
auto xx = std::string((char *)data, *size);
static std::string last;
if (xx == last)
return false;
last = xx;
strReplace(xx, "@", "");
strReplace(xx, "\\", "");
strReplace(xx, "_", "\n");
strReplace(xx, "/", "");
// # ( ) < 代码里但C了一会儿没遇到不管了先
return write_string_overwrite(data, size, xx);
};
return NewHook(hp, "onscripter");
}
}
bool Onscripter::attach_function()
{
2024-09-02 08:25:06 +08:00
return hook2();
2024-09-02 08:23:44 +08:00
}