diff --git a/LunaHook/CMakeLists.txt b/LunaHook/CMakeLists.txt index d9e6b79..114f5f4 100644 --- a/LunaHook/CMakeLists.txt +++ b/LunaHook/CMakeLists.txt @@ -1,6 +1,6 @@ include_directories(. util engines) if(${CMAKE_SIZEOF_VOID_P} EQUAL 8) - set(enginessrc vita3k rpcs3 yuzusuyu TYPEMOON ENTERGRAM AGES7 mono Godot Renpy 5pb lucasystem LightVN V8 pchooks Artemis KiriKiri YOX PPSSPP CMVS Suika2 ) + set(enginessrc Kincaid vita3k rpcs3 yuzusuyu TYPEMOON ENTERGRAM AGES7 mono Godot Renpy 5pb lucasystem LightVN V8 pchooks Artemis KiriKiri YOX PPSSPP CMVS Suika2 ) set(enginepath "engine64") set(collector "enginecollection64.cpp") else() @@ -11,7 +11,7 @@ endif() string(REPLACE ";" ".cpp;${enginepath}/" enginessrc "${enginessrc}") #message("${enginessrc}") set(enginessrc "${enginepath}/${enginessrc}.cpp") -#message("${enginessrc}") +message("${enginessrc}") set_source_files_properties(${enginessrc} PROPERTIES SOURCE_ENCODING "UTF-8") set(texthook_src diff --git a/LunaHook/engine64/Kincaid.cpp b/LunaHook/engine64/Kincaid.cpp new file mode 100644 index 0000000..6499ade --- /dev/null +++ b/LunaHook/engine64/Kincaid.cpp @@ -0,0 +1,38 @@ +#include"Kincaid.h" +namespace{ + bool _1(){ +// .text:0000000140230D80 mov rsi, rax +// .text:0000000140230D83 mov edx, 1 +// .text:0000000140230D88 mov rcx, rdi +// .text:0000000140230D8B call sub_1402B35B0 +// .text:0000000140230D90 lea ebx, [rax-1] +// .text:0000000140230D93 mov edx, 2 +// .text:0000000140230D98 mov rcx, rdi +// .text:0000000140230D9B call sub_1402B35B0 + BYTE b1[]={ + 0x48,0x8b,0xf0, + 0xba,0x01,0x00,0x00,0x00, + 0x48,0x8b,0xcf, + 0xe8,XX4, + 0x8d,0x58,0xff, + 0xba,0x02,0x00,0x00,0x00, + 0x48,0x8b,0xcf, + 0xe8,XX4 + }; + auto addr=MemDbg::findBytes(b1,sizeof(b1),processStartAddress,processStopAddress); + if(addr==0)return false; + HookParam hp; + hp.address=addr; + hp.type=USING_STRING|CODEC_UTF8; + hp.offset=get_reg(regs::rax); + hp.text_fun=[](hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ + *data=stack->rax; + if(stack->retaddr==(DWORD)-1) + *len=strlen((char*)*data); + }; + return NewHook(hp,"Kincaid"); + } +} +bool Kincaid::attach_function(){ + return _1(); +} \ No newline at end of file diff --git a/LunaHook/engine64/Kincaid.h b/LunaHook/engine64/Kincaid.h new file mode 100644 index 0000000..a03af25 --- /dev/null +++ b/LunaHook/engine64/Kincaid.h @@ -0,0 +1,40 @@ + +// FILEVERSION 0,0,0,1 +// PRODUCTVERSION 0,0,0,1 +// FILEFLAGSMASK 0x3F +// FILEFLAGS 0x0 +// FILEOS VOS_UNKNOWN | VOS__WINDOWS32 +// FILETYPE VFT_DLL +// FILESUBTYPE 0x0 +// { +// BLOCK "StringFileInfo" +// { +// BLOCK "080904b0" +// { +// VALUE "CompanyName", "Cookiedraggy" +// VALUE "FileDescription", "The Adventures of Kincaid" +// VALUE "FileVersion", "0.0.0.1" +// VALUE "LegalCopyright", "(c) 2019 Cookiedraggy" +// VALUE "PrivateBuild", "01.00.00.00" +// VALUE "ProductName", "The Adventures of Kincaid" +// VALUE "ProductVersion", "0.0.0.1" +// } +// } +// BLOCK "VarFileInfo" +// { +// VALUE "Translation", 0x809, 1200 +// } +// } + +class Kincaid:public ENGINE{ + public: + Kincaid(){ + + check_by=CHECK_BY::CUSTOM; + check_by_target=[](){ + return Util::SearchResourceString(L"Cookiedraggy")|| Util::SearchResourceString(L"The Adventures of Kincaid"); + }; + + }; + bool attach_function(); +}; \ No newline at end of file diff --git a/LunaHook/enginecollection64.cpp b/LunaHook/enginecollection64.cpp index 9e006ed..a6abb51 100644 --- a/LunaHook/enginecollection64.cpp +++ b/LunaHook/enginecollection64.cpp @@ -14,6 +14,7 @@ #include"engine64/lucasystem.h" #include"engine64/ENTERGRAM.h" #include"engine64/TYPEMOON.h" +#include"engine64/Kincaid.h" #include"engine64/LightVN.h" #include"engine64/yuzusuyu.h" #include"engine64/vita3k.h" @@ -42,7 +43,8 @@ std::vector check_engines(){ new yuzusuyu, new PPSSPPengine, new vita3k, - new rpcs3 + new rpcs3, + new Kincaid }; }