LunaHook-mirror/LunaHook/engine32/Jellyfish.cpp

37 lines
1.2 KiB
C++
Raw Normal View History

2024-02-07 20:59:24 +08:00
#include"Jellyfish.h"
bool Jellyfish_attach_function() {
//https://vndb.org/r13456
//GREEN秋空のスクリーン STANDARD EDITION
//https://vndb.org/r1136
//LOVERS恋に落ちたら…
auto ism=GetModuleHandle(L"ism.dll");
if(ism==0)return false;
auto [minaddr,maxaddr]=Util::QueryModuleLimits(ism);
const BYTE bytes[] = {
0x8a,XX,0x01, //mov cl, [ecx+1]
0x80,XX,0x6e, //cmp cl, 6Eh ; 'n'
0x75,XX,
};
ULONG addr = MemDbg::findBytes(bytes, sizeof(bytes), minaddr, maxaddr);
if (addr == 0)return false;
addr = MemDbg::findEnclosingAlignedFunction(addr,0x1000);
if (addr == 0)return false;
HookParam hp;
hp.address = addr;
hp.offset=get_stack(1);
hp.type = USING_STRING;
hp.filter_fun=[](LPVOID data, size_t *size, HookParam *){
if(*size==2)return false;
StringCharReplacer(reinterpret_cast<char*>(data), size, "\\n", 2, '\n');
StringCharReplacer(reinterpret_cast<char*>(data), size, "\\N", 2, '\n');
2024-03-21 17:57:04 +08:00
return write_string_overwrite(data,size,std::regex_replace(std::string(reinterpret_cast<char*>(data),*size), std::regex("\\\\[0-7a-zA-Z]"), ""));
2024-02-07 20:59:24 +08:00
};
return NewHook(hp, "Jellyfish");
}
bool Jellyfish::attach_function(){
return Jellyfish_attach_function();
}