steal some hooks for willplus and waffle

This commit is contained in:
Akash Mozumdar 2020-08-12 02:18:39 -06:00
parent 6da63208c7
commit 341b6915c8
3 changed files with 61 additions and 5 deletions

View File

@ -5,6 +5,7 @@ If you're on this list and want your link changed let me know.
- [DoumanAsh](https://github.com/DoumanAsh) - [DoumanAsh](https://github.com/DoumanAsh)
- [Niakr1s](https://github.com/Niakr1s) - [Niakr1s](https://github.com/Niakr1s)
- [tinyAdapter](https://github.com/tinyAdapter) - [tinyAdapter](https://github.com/tinyAdapter)
- [lgztx96](https://github.com/lgztx96)
- French translation by Racky - French translation by Racky
- Spanish translation by [scese250](https://github.com/scese250) - Spanish translation by [scese250](https://github.com/scese250)
- Turkish translation by niisokusu - Turkish translation by niisokusu

View File

@ -5984,8 +5984,9 @@ bool InsertWaffleDynamicHook(LPVOID addr, DWORD frame, DWORD stack)
* Sample game: * Sample game:
* GDI text: TextOutA and GetTextExtentPoint32A * GDI text: TextOutA and GetTextExtentPoint32A
*/ */
void InsertWaffleHook() bool InsertWaffleHook()
{ {
bool found = false;
for (DWORD i = processStartAddress + 0x1000; i < processStopAddress - 4; i++) for (DWORD i = processStartAddress + 0x1000; i < processStopAddress - 4; i++)
if (*(DWORD *)i == 0xac68) { if (*(DWORD *)i == 0xac68) {
HookParam hp = {}; HookParam hp = {};
@ -5997,10 +5998,39 @@ void InsertWaffleHook()
hp.type = DATA_INDIRECT|USING_SPLIT; hp.type = DATA_INDIRECT|USING_SPLIT;
ConsoleOutput("vnreng: INSERT WAFFLE"); ConsoleOutput("vnreng: INSERT WAFFLE");
NewHook(hp, "WAFFLE"); NewHook(hp, "WAFFLE");
return; found = true;
}
/** new waffle? stolen from https://github.com/lgztx96
* test on https://vndb.org/v24214
* and https://vndb.org/v24215
* and https://vndb.org/v26205
* and https://vndb.org/v27781
*/
const BYTE bytes[] = {
0x50, //50 push eax
0x8b, 0xce, //8BCE mov ecx,esi
0xc6, 0x45, 0xfc, 0x01, //C645 FC 01 move byte ptr ss:[ebp-4],1
0x89, 0x75, 0xd4, //8975 D4 move dword ptr ss:[ebp-0x2c],esi
0xe8, XX4, //E8 ?? call ??
0x8d, 0x45, 0xdc //8D45 DC lea eax,dword ptr ss:[ebp-0x24]
};
if (DWORD addr = MemDbg::findBytes(bytes, sizeof(bytes), processStartAddress, processStopAddress))
{
HookParam hp = {};
hp.address = addr;
hp.offset = pusha_eax_off - 4;
hp.index = 0x00;
hp.split = 0x48;
hp.length_offset = 1;
hp.type = DATA_INDIRECT | USING_SPLIT;
ConsoleOutput("Textractor: INSERT WAFFLE2");
NewHook(hp, "WAFFLE2");
found = true;
} }
//ConsoleOutput("Probably Waffle. Wait for text."); //ConsoleOutput("Probably Waffle. Wait for text.");
trigger_fun = InsertWaffleDynamicHook; if (!found) trigger_fun = InsertWaffleDynamicHook;
return found;
//ConsoleOutput("vnreng:WAFFLE: failed"); //ConsoleOutput("vnreng:WAFFLE: failed");
} }
@ -9409,7 +9439,32 @@ static bool InsertNewWillPlusHook()
NewHook(hp, "WillPlus2"); NewHook(hp, "WillPlus2");
found = true; found = true;
} }
if (!found) ConsoleOutput("Textractor: WillPlus2: failed to find instructions"); /*
stolen from https://github.com/lgztx96
hook cmp esi,0x3000
Sample games:
https://vndb.org/r54549
https://vndb.org/v22705
https://vndb.org/v24852
https://vndb.org/v25719
https://vndb.org/v27227
https://vndb.org/v27385
*/
const BYTE pattern[] =
{
0x81,0xfe,0x00,0x30,0x00,0x00 //81FE 00300000 cmp esi,0x3000
};
for (auto addr : Util::SearchMemory(pattern, sizeof(pattern), PAGE_EXECUTE, processStartAddress, processStopAddress))
{
HookParam hp = {};
hp.address = addr;
hp.type = USING_UNICODE;
hp.offset = pusha_esi_off - 4;
hp.length_offset = 1;
NewHook(hp, "WillPlus3");
found = true;
}
if (!found) ConsoleOutput("Textractor: WillPlus: failed to find instructions");
return found; return found;
} }

View File

@ -163,7 +163,7 @@ void InsertRyokuchaHook(); // Ryokucha: _checksum.exe
void InsertRealliveHook(); // RealLive: RealLive*.exe void InsertRealliveHook(); // RealLive: RealLive*.exe
void InsertStuffScriptHook(); // Stuff: *.mpk void InsertStuffScriptHook(); // Stuff: *.mpk
bool InsertTinkerBellHook(); // TinkerBell: arc00.dat bool InsertTinkerBellHook(); // TinkerBell: arc00.dat
void InsertWaffleHook(); // WAFFLE: cg.pak bool InsertWaffleHook(); // WAFFLE: cg.pak
// CIRCUS: avdata/ // CIRCUS: avdata/
bool InsertCircusHook1(); bool InsertCircusHook1();