diff --git a/LunaHook/engine32/CMVS.cpp b/LunaHook/engine32/CMVS.cpp index 25050d1..ac7eeec 100644 --- a/LunaHook/engine32/CMVS.cpp +++ b/LunaHook/engine32/CMVS.cpp @@ -1178,9 +1178,7 @@ bool attach(const uint8_t pattern[],int patternSize,DWORD startAddress,DWORD sto hp.hook_font=F_GetGlyphOutlineA; hp.filter_fun=[](void* data, size_t* len, HookParam* hp){ auto text = reinterpret_cast(data); - std::string str = text; - str = str.substr(0, *len); - + std::string str = std::string(text, *len); std::regex reg1("\\{(.*?)/(.*?)\\}"); std::string result1 = std::regex_replace(str, reg1, "$1"); diff --git a/LunaHook/engine32/Debonosu.cpp b/LunaHook/engine32/Debonosu.cpp index 6a82464..7b2f950 100644 --- a/LunaHook/engine32/Debonosu.cpp +++ b/LunaHook/engine32/Debonosu.cpp @@ -183,6 +183,20 @@ namespace hp.address = addr + 6; hp.type = USING_STRING | NO_CONTEXT; hp.offset = get_reg(regs::eax); + hp.filter_fun = [](LPVOID data, size_t *size, HookParam *) + { + auto text = reinterpret_cast(data); + auto len = reinterpret_cast(size); + if (all_ascii(text, *len)) + return false; + + std::string str = std::string(text, *len); + std::regex reg1("\\{(.*?)/(.*?)\\}"); + std::string result1 = std::regex_replace(str, reg1, "$1"); + + return write_string_overwrite(text, len, result1); + return true; + }; succ |= NewHook(hp, "debonosu"); } return succ;