39 lines
1.0 KiB
C++
Raw Normal View History

2024-02-07 20:59:24 +08:00
#include"Purple.h"
bool Purple::attach_function() {
//夢幻 虚実と真実
//世界の果ての物語
const DWORD funcs[] = {
0xCCCCCCCC,
0xec8b55,
};
enum { FunctionCount = sizeof(funcs) / sizeof(*funcs) };
ULONG addr = MemDbg::findMultiCallerAddress((ULONG)::GetGlyphOutlineA, funcs, FunctionCount, processStartAddress, processStopAddress);
if (!addr) return false;
if(*(DWORD*)addr==0xCCCCCCCC)addr+=4;
HookParam hp;
hp.address = addr;
hp.offset=get_stack(1);
hp.type = USING_STRING;
return NewHook(hp, "Purple");
}
bool Purple2::attach_function() {
//はっぴ~ぶり~でぃんぐ https://vndb.org/p132
//夏色小町
//はぴぶり いまさら ふぁんでぃすく
ULONG addr = MemDbg::findCallerAddress((ULONG)::TextOutA, 0x90909090 , processStartAddress, processStopAddress);
if (!addr) return false;
addr+=4;
HookParam hp;
hp.address = addr;
hp.offset=get_stack(1);
hp.index=0;
hp.type = DATA_INDIRECT;
return NewHook(hp, "Purple2");
}