mirror of
https://github.com/HIllya51/LunaHook.git
synced 2024-12-27 13:44:11 +08:00
1023 lines
49 KiB
C++
1023 lines
49 KiB
C++
#include"Nexton.h"
|
||
/**
|
||
* jichi 9/5/2013: NEXTON games with aInfo.db
|
||
* Sample games:
|
||
* - /HA-C@4D69E:InnocentBullet.exe (イノセントバレッ<E383AC>)
|
||
* - /HA-C@40414C:ImoutoBancho.exe (妹番長)
|
||
*
|
||
* See: http://ja.wikipedia.org/wiki/ネクストン
|
||
* See (CaoNiMaGeBi): http://tieba.baidu.com/p/2576241908
|
||
*
|
||
* Old:
|
||
* md5 = 85ac031f2539e1827d9a1d9fbde4023d
|
||
* hcode = /HA-C@40414C:ImoutoBancho.exe
|
||
* - addr: 4211020 (0x40414c)
|
||
* - module: 1051997988 (0x3eb43724)
|
||
* - length_offset: 1
|
||
* - off: 4294967280 (0xfffffff0) = -0x10
|
||
* - split: 0
|
||
* - type: 68 (0x44)
|
||
*
|
||
* New (11/7/2013):
|
||
* /HA-20:4@583DE:MN2.EXE (NEW)
|
||
* - addr: 361438 (0x583de)
|
||
* - module: 3436540819
|
||
* - length_offset: 1
|
||
* - off: 4294967260 (0xffffffdc) = -0x24
|
||
* - split: 4
|
||
* - type: 84 (0x54)
|
||
*/
|
||
|
||
bool InsertNextonHook()
|
||
{
|
||
#if 0
|
||
// 0x8944241885c00f84
|
||
const BYTE bytes[] = {
|
||
//0xe8 //??,??,??,??, 00804147 e8 24d90100 call imoutoba.00821a70
|
||
0x89,0x44,0x24, 0x18, // 0080414c 894424 18 mov dword ptr ss:[esp+0x18],eax; hook here
|
||
0x85,0xc0, // 00804150 85c0 test eax,eax
|
||
0x0f,0x84 // 00804152 ^0f84 c0feffff je imoutoba.00804018
|
||
};
|
||
//enum { addr_offset = 0 };
|
||
ULONG addr = processStartAddress; //- sizeof(bytes);
|
||
do {
|
||
addr += sizeof(bytes); // ++ so that each time return diff address
|
||
ULONG range = min(processStopAddress - addr, MAX_REL_ADDR);
|
||
addr = MemDbg::findBytes(bytes, sizeof(bytes), addr, addr + range);
|
||
if (!addr) {
|
||
ConsoleOutput("NEXTON: pattern not exist");
|
||
return false;
|
||
}
|
||
|
||
//const BYTE hook_ins[] = {
|
||
// 0x57, // 00804144 57 push edi
|
||
// 0x8b,0xc3, // 00804145 8bc3 mov eax,ebx
|
||
// 0xe8 //??,??,??,??, 00804147 e8 24d90100 call imoutoba.00821a70
|
||
//};
|
||
} while(0xe8c38b57 != *(DWORD *)(addr - 8));
|
||
#endif // 0
|
||
const BYTE bytes[] = {
|
||
0x57, // 0044d696 57 push edi
|
||
0x8b,0xc3, // 0044d697 8bc3 mov eax,ebx
|
||
0xe8, XX4, // 0044d699 e8 6249fdff call .00422000
|
||
0x89,0x44,0x24, 0x18, // 0044d69e 894424 18 mov dword ptr ss:[esp+0x18],eax ; jichi: this is the ith hook point
|
||
0x85,0xc0, // 0044d6a2 85c0 test eax,eax
|
||
0x0f,0x84 //c2feffff // 0044d6a4 ^0f84 c2feffff je .0044d56c
|
||
};
|
||
enum { addr_offset = 0x0044d69e - 0x0044d696 }; // = 8
|
||
ULONG addr = MemDbg::findBytes(bytes, sizeof(bytes), processStartAddress, processStopAddress);
|
||
if (!addr) {
|
||
ConsoleOutput("NEXTON: pattern not exist");
|
||
return false;
|
||
}
|
||
|
||
|
||
HookParam hp;
|
||
hp.address = addr + addr_offset;
|
||
//hp.type = CODEC_ANSI_BE; // 4
|
||
|
||
// 魔王のくせに生イキ<E382A4>っ <20>今度は性戦ぽ // CheatEngine search for byte array: 8944241885C00F84
|
||
//addr = 0x4583de; // wrong
|
||
//addr = 0x5460ba;
|
||
//addr = 0x5f3d8a;
|
||
//addr = 0x768776;
|
||
//addr = 0x7a5319;
|
||
|
||
hp.offset=get_reg(regs::edi);
|
||
hp.split=get_stack(1);
|
||
hp.type = CODEC_ANSI_BE|USING_SPLIT; // 0x54
|
||
|
||
// Indirect is needed for new games,
|
||
// Such as: /HA-C*0@4583DE for 「魔王のくせに生イキ<E382A4>っ<EFBFBD><E381A3><EFBFBD> //hp.type = CODEC_ANSI_BE|DATA_INDIRECT; // 12
|
||
//hp.type = CODEC_UTF16;
|
||
//GROWL_DWORD3(addr, -hp.offset, hp.type);
|
||
|
||
ConsoleOutput("INSERT NEXTON");
|
||
return NewHook(hp, "NEXTON");
|
||
|
||
//ConsoleOutput("NEXTON: disable GDI hooks"); // There are no GDI functions hooked though
|
||
// // disable GetGlyphOutlineA
|
||
}
|
||
|
||
namespace { // unnamed
|
||
namespace ScenarioHook {
|
||
namespace Private {
|
||
/**
|
||
* Scenario caller:
|
||
* 0047D555 8BCE MOV ECX,ESI
|
||
* 0047D557 FFD0 CALL EAX
|
||
* 0047D559 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+0x8]
|
||
* 0047D55C 51 PUSH ECX
|
||
* 0047D55D 8BCE MOV ECX,ESI
|
||
* 0047D55F E8 ECFDFCFF CALL .0044D350 ; jichi: scenario called here
|
||
* 0047D564 A1 0C839800 MOV EAX,DWORD PTR DS:[0x98830C]
|
||
* 0047D569 C746 38 00000000 MOV DWORD PTR DS:[ESI+0x38],0x0
|
||
* 0047D570 8BB7 20040000 MOV ESI,DWORD PTR DS:[EDI+0x420]
|
||
* 0047D576 8B50 14 MOV EDX,DWORD PTR DS:[EAX+0x14]
|
||
* 0047D579 2B50 10 SUB EDX,DWORD PTR DS:[EAX+0x10]
|
||
* 0047D57C 8D78 10 LEA EDI,DWORD PTR DS:[EAX+0x10]
|
||
* 0047D57F C1FA 02 SAR EDX,0x2
|
||
* 0047D582 3BF2 CMP ESI,EDX
|
||
* 0047D584 72 05 JB SHORT .0047D58B
|
||
* 0047D586 E8 091C0300 CALL .004AF194
|
||
* 0047D58B 8B07 MOV EAX,DWORD PTR DS:[EDI]
|
||
* 0047D58D 8B34B0 MOV ESI,DWORD PTR DS:[EAX+ESI*4]
|
||
* 0047D590 8B16 MOV EDX,DWORD PTR DS:[ESI]
|
||
* 0047D592 8B42 04 MOV EAX,DWORD PTR DS:[EDX+0x4]
|
||
* 0047D595 8BCE MOV ECX,ESI
|
||
* 0047D597 FFD0 CALL EAX
|
||
* 0047D599 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+0xC]
|
||
* 0047D59C 51 PUSH ECX
|
||
* 0047D59D 8BCE MOV ECX,ESI
|
||
* 0047D59F E8 ACFDFCFF CALL .0044D350 ; jichi: name called here
|
||
* 0047D5A4 5F POP EDI
|
||
* 0047D5A5 5E POP ESI
|
||
* 0047D5A6 5B POP EBX
|
||
* 0047D5A7 8BE5 MOV ESP,EBP
|
||
* 0047D5A9 5D POP EBP
|
||
* 0047D5AA C2 0800 RETN 0x8
|
||
* 0047D5AD CC INT3
|
||
* 0047D5AE CC INT3
|
||
* 0047D5AF CC INT3
|
||
*
|
||
* History:
|
||
*
|
||
* 0047C054 50 PUSH EAX
|
||
* 0047C055 8BCF MOV ECX,EDI
|
||
* 0047C057 E8 F412FDFF CALL .0044D350 ; jichi: name history called here
|
||
* 0047C05C 46 INC ESI
|
||
* 0047C05D 3B7424 14 CMP ESI,DWORD PTR SS:[ESP+0x14]
|
||
* 0047C061 ^0F82 EAFEFFFF JB .0047BF51
|
||
* 0047C067 8B4C24 20 MOV ECX,DWORD PTR SS:[ESP+0x20]
|
||
* 0047C06B 3BF1 CMP ESI,ECX
|
||
* 0047C06D 0F83 A7000000 JNB .0047C11A
|
||
* 0047C073 EB 0B JMP SHORT .0047C080
|
||
* 0047C075 8DA424 00000000 LEA ESP,DWORD PTR SS:[ESP]
|
||
* 0047C07C 8D6424 00 LEA ESP,DWORD PTR SS:[ESP]
|
||
* 0047C080 8B8B 483A0000 MOV ECX,DWORD PTR DS:[EBX+0x3A48]
|
||
* 0047C086 2B8B 443A0000 SUB ECX,DWORD PTR DS:[EBX+0x3A44]
|
||
* 0047C08C C1F9 03 SAR ECX,0x3
|
||
* 0047C08F 3BF1 CMP ESI,ECX
|
||
* 0047C091 72 05 JB SHORT .0047C098
|
||
*
|
||
* 0045BFCF 53 PUSH EBX
|
||
* 0045BFD0 53 PUSH EBX
|
||
* 0045BFD1 E8 15670500 CALL .004B26EB ; jichi: scenario history called here
|
||
* 0045BFD6 8BC6 MOV EAX,ESI
|
||
* 0045BFD8 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-0xC]
|
||
* 0045BFDB 64:890D 00000000 MOV DWORD PTR FS:[0],ECX
|
||
* 0045BFE2 59 POP ECX
|
||
* 0045BFE3 5F POP EDI
|
||
* 0045BFE4 5E POP ESI
|
||
* 0045BFE5 5B POP EBX
|
||
* 0045BFE6 8BE5 MOV ESP,EBP
|
||
* 0045BFE8 5D POP EBP
|
||
* 0045BFE9 C3 RETN
|
||
* 0045BFEA CC INT3
|
||
*/
|
||
bool hookBefore(hook_stack*s,void* data, size_t* len1,uintptr_t*role)
|
||
{
|
||
static std::string data_;
|
||
auto text = (LPCSTR)s->stack[1]; // arg1
|
||
if (!text || !*text)
|
||
return false;
|
||
* role = Engine::OtherRole;
|
||
auto retaddr = s->stack[0];
|
||
BYTE ins = *(BYTE *)retaddr;
|
||
if (ins == 0xa1) // 0047D564 A1 0C839800 MOV EAX,DWORD PTR DS:[0x98830C]
|
||
*role = Engine::ScenarioRole;
|
||
else if (ins == 0x5f) // 0047D5A4 5F POP EDI
|
||
*role = Engine::NameRole;
|
||
|
||
write_string_overwrite(data,len1,text);
|
||
return true;
|
||
}
|
||
} // namespace Private
|
||
|
||
/**
|
||
* Sample game: Innocent Bullet
|
||
*
|
||
* Name/Scenario/History are translated in different callers.
|
||
*
|
||
* 0044D34D CC INT3
|
||
* 0044D34E CC INT3
|
||
* 0044D34F CC INT3
|
||
* 0044D350 55 PUSH EBP
|
||
* 0044D351 8BEC MOV EBP,ESP
|
||
* 0044D353 83E4 F8 AND ESP,0xFFFFFFF8
|
||
* 0044D356 6A FF PUSH -0x1
|
||
* 0044D358 68 30B88800 PUSH .0088B830
|
||
* 0044D35D 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
|
||
* 0044D363 50 PUSH EAX
|
||
* 0044D364 81EC B0000000 SUB ESP,0xB0
|
||
* 0044D36A A1 50569600 MOV EAX,DWORD PTR DS:[0x965650]
|
||
* 0044D36F 33C4 XOR EAX,ESP
|
||
* 0044D371 898424 A8000000 MOV DWORD PTR SS:[ESP+0xA8],EAX
|
||
* 0044D378 53 PUSH EBX
|
||
* 0044D379 56 PUSH ESI
|
||
* 0044D37A 57 PUSH EDI
|
||
* 0044D37B A1 50569600 MOV EAX,DWORD PTR DS:[0x965650]
|
||
* 0044D380 33C4 XOR EAX,ESP
|
||
* 0044D382 50 PUSH EAX
|
||
* 0044D383 8D8424 C0000000 LEA EAX,DWORD PTR SS:[ESP+0xC0]
|
||
* 0044D38A 64:A3 00000000 MOV DWORD PTR FS:[0],EAX
|
||
* 0044D390 8B45 08 MOV EAX,DWORD PTR SS:[EBP+0x8]
|
||
* 0044D393 8BF1 MOV ESI,ECX
|
||
* 0044D395 8B16 MOV EDX,DWORD PTR DS:[ESI]
|
||
* 0044D397 894424 38 MOV DWORD PTR SS:[ESP+0x38],EAX
|
||
* 0044D39B 8B42 04 MOV EAX,DWORD PTR DS:[EDX+0x4]
|
||
* 0044D39E 897424 34 MOV DWORD PTR SS:[ESP+0x34],ESI
|
||
* 0044D3A2 FFD0 CALL EAX
|
||
* 0044D3A4 68 60244200 PUSH .00422460
|
||
* 0044D3A9 B9 EC769800 MOV ECX,.009876EC
|
||
* 0044D3AE E8 FD41FDFF CALL .004215B0
|
||
* 0044D3B3 8B3D F4769800 MOV EDI,DWORD PTR DS:[0x9876F4]
|
||
* 0044D3B9 8B47 30 MOV EAX,DWORD PTR DS:[EDI+0x30]
|
||
* 0044D3BC 2B47 2C SUB EAX,DWORD PTR DS:[EDI+0x2C]
|
||
* 0044D3BF 8B5E 04 MOV EBX,DWORD PTR DS:[ESI+0x4]
|
||
* 0044D3C2 83C7 20 ADD EDI,0x20
|
||
* 0044D3C5 33C9 XOR ECX,ECX
|
||
* 0044D3C7 83C4 04 ADD ESP,0x4
|
||
* 0044D3CA C1F8 02 SAR EAX,0x2
|
||
* 0044D3CD 3BD9 CMP EBX,ECX
|
||
* 0044D3CF 7C 24 JL SHORT .0044D3F5
|
||
* 0044D3D1 3BC3 CMP EAX,EBX
|
||
* 0044D3D3 7E 20 JLE SHORT .0044D3F5
|
||
* 0044D3D5 8B57 10 MOV EDX,DWORD PTR DS:[EDI+0x10]
|
||
* 0044D3D8 2B57 0C SUB EDX,DWORD PTR DS:[EDI+0xC]
|
||
* 0044D3DB C1FA 02 SAR EDX,0x2
|
||
* 0044D3DE 3BDA CMP EBX,EDX
|
||
* 0044D3E0 72 07 JB SHORT .0044D3E9
|
||
* 0044D3E2 E8 AD1D0600 CALL .004AF194
|
||
* 0044D3E7 33C9 XOR ECX,ECX
|
||
* 0044D3E9 8B47 0C MOV EAX,DWORD PTR DS:[EDI+0xC]
|
||
* 0044D3EC 8B1498 MOV EDX,DWORD PTR DS:[EAX+EBX*4]
|
||
* 0044D3EF 895424 1C MOV DWORD PTR SS:[ESP+0x1C],EDX
|
||
* 0044D3F3 EB 04 JMP SHORT .0044D3F9
|
||
* 0044D3F5 894C24 1C MOV DWORD PTR SS:[ESP+0x1C],ECX
|
||
* 0044D3F9 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+0x1C]
|
||
* 0044D3FD D9EE FLDZ
|
||
* 0044D3FF 83C0 34 ADD EAX,0x34
|
||
* 0044D402 D95C24 14 FSTP DWORD PTR SS:[ESP+0x14]
|
||
* 0044D406 894424 4C MOV DWORD PTR SS:[ESP+0x4C],EAX
|
||
* 0044D40A 8B00 MOV EAX,DWORD PTR DS:[EAX]
|
||
* 0044D40C 894424 18 MOV DWORD PTR SS:[ESP+0x18],EAX
|
||
* 0044D410 DB4424 18 FILD DWORD PTR SS:[ESP+0x18]
|
||
* 0044D414 85C0 TEST EAX,EAX
|
||
* 0044D416 7D 06 JGE SHORT .0044D41E
|
||
* 0044D418 D805 D05C9100 FADD DWORD PTR DS:[0x915CD0]
|
||
* 0044D41E 894C24 3C MOV DWORD PTR SS:[ESP+0x3C],ECX
|
||
* 0044D422 D95C24 28 FSTP DWORD PTR SS:[ESP+0x28]
|
||
* 0044D426 894C24 2C MOV DWORD PTR SS:[ESP+0x2C],ECX
|
||
* 0044D42A 8D4C24 70 LEA ECX,DWORD PTR SS:[ESP+0x70]
|
||
* 0044D42E 51 PUSH ECX
|
||
* 0044D42F C74424 70 60DC90>MOV DWORD PTR SS:[ESP+0x70],.0090DC60
|
||
* 0044D437 E8 242B0000 CALL .0044FF60
|
||
* 0044D43C 33FF XOR EDI,EDI
|
||
* 0044D43E 8D5424 6C LEA EDX,DWORD PTR SS:[ESP+0x6C]
|
||
* 0044D442 89BC24 C8000000 MOV DWORD PTR SS:[ESP+0xC8],EDI
|
||
* 0044D449 8B4C24 38 MOV ECX,DWORD PTR SS:[ESP+0x38]
|
||
* 0044D44D 52 PUSH EDX
|
||
* 0044D44E E8 6D150000 CALL .0044E9C0
|
||
* 0044D453 8B8424 80000000 MOV EAX,DWORD PTR SS:[ESP+0x80]
|
||
* 0044D45A 8B4C24 7C MOV ECX,DWORD PTR SS:[ESP+0x7C]
|
||
* 0044D45E 894424 60 MOV DWORD PTR SS:[ESP+0x60],EAX
|
||
* 0044D462 3BC8 CMP ECX,EAX
|
||
* 0044D464 76 10 JBE SHORT .0044D476
|
||
* 0044D466 E8 291D0600 CALL .004AF194
|
||
* 0044D46B 8B8424 80000000 MOV EAX,DWORD PTR SS:[ESP+0x80]
|
||
* 0044D472 8B4C24 7C MOV ECX,DWORD PTR SS:[ESP+0x7C]
|
||
* 0044D476 8B5424 70 MOV EDX,DWORD PTR SS:[ESP+0x70]
|
||
* 0044D47A 895424 58 MOV DWORD PTR SS:[ESP+0x58],EDX
|
||
* 0044D47E 897C24 38 MOV DWORD PTR SS:[ESP+0x38],EDI
|
||
* 0044D482 8BD9 MOV EBX,ECX
|
||
* 0044D484 3BC8 CMP ECX,EAX
|
||
* 0044D486 76 05 JBE SHORT .0044D48D
|
||
* 0044D488 E8 071D0600 CALL .004AF194
|
||
* 0044D48D 8B7C24 70 MOV EDI,DWORD PTR SS:[ESP+0x70]
|
||
* 0044D491 897C24 50 MOV DWORD PTR SS:[ESP+0x50],EDI
|
||
* 0044D495 895C24 54 MOV DWORD PTR SS:[ESP+0x54],EBX
|
||
* 0044D499 85FF TEST EDI,EDI
|
||
* 0044D49B 74 06 JE SHORT .0044D4A3
|
||
* 0044D49D 3B7C24 58 CMP EDI,DWORD PTR SS:[ESP+0x58]
|
||
* 0044D4A1 74 05 JE SHORT .0044D4A8
|
||
* 0044D4A3 E8 EC1C0600 CALL .004AF194
|
||
* 0044D4A8 3B5C24 60 CMP EBX,DWORD PTR SS:[ESP+0x60]
|
||
* 0044D4AC 0F84 E4030000 JE .0044D896
|
||
* 0044D4B2 85FF TEST EDI,EDI
|
||
* 0044D4B4 0F85 9C000000 JNZ .0044D556
|
||
* 0044D4BA E8 D51C0600 CALL .004AF194
|
||
* 0044D4BF 33C0 XOR EAX,EAX
|
||
* 0044D4C1 3B58 10 CMP EBX,DWORD PTR DS:[EAX+0x10]
|
||
* 0044D4C4 72 05 JB SHORT .0044D4CB
|
||
* 0044D4C6 E8 C91C0600 CALL .004AF194
|
||
* 0044D4CB 8B0B MOV ECX,DWORD PTR DS:[EBX]
|
||
* 0044D4CD 8B01 MOV EAX,DWORD PTR DS:[ECX]
|
||
* 0044D4CF 8B50 10 MOV EDX,DWORD PTR DS:[EAX+0x10]
|
||
* 0044D4D2 FFD2 CALL EDX
|
||
* 0044D4D4 85C0 TEST EAX,EAX
|
||
* 0044D4D6 0F85 99030000 JNZ .0044D875
|
||
* 0044D4DC 85FF TEST EDI,EDI
|
||
* 0044D4DE 75 7D JNZ SHORT .0044D55D
|
||
* 0044D4E0 E8 AF1C0600 CALL .004AF194
|
||
* 0044D4E5 3B5F 10 CMP EBX,DWORD PTR DS:[EDI+0x10]
|
||
* 0044D4E8 72 05 JB SHORT .0044D4EF
|
||
* 0044D4EA E8 A51C0600 CALL .004AF194
|
||
* 0044D4EF 8B0B MOV ECX,DWORD PTR DS:[EBX]
|
||
* 0044D4F1 8B01 MOV EAX,DWORD PTR DS:[ECX]
|
||
* 0044D4F3 8B50 08 MOV EDX,DWORD PTR DS:[EAX+0x8]
|
||
* 0044D4F6 FFD2 CALL EDX
|
||
* 0044D4F8 8BC8 MOV ECX,EAX
|
||
* 0044D4FA C78424 B4000000 >MOV DWORD PTR SS:[ESP+0xB4],0xF
|
||
* 0044D505 C78424 B0000000 >MOV DWORD PTR SS:[ESP+0xB0],0x0
|
||
* 0044D510 C68424 A0000000 >MOV BYTE PTR SS:[ESP+0xA0],0x0
|
||
* 0044D518 8D79 01 LEA EDI,DWORD PTR DS:[ECX+0x1]
|
||
* 0044D51B EB 03 JMP SHORT .0044D520
|
||
* 0044D51D 8D49 00 LEA ECX,DWORD PTR DS:[ECX]
|
||
* 0044D520 8A11 MOV DL,BYTE PTR DS:[ECX]
|
||
* 0044D522 41 INC ECX
|
||
* 0044D523 84D2 TEST DL,DL
|
||
* 0044D525 ^75 F9 JNZ SHORT .0044D520
|
||
* 0044D527 2BCF SUB ECX,EDI
|
||
* 0044D529 51 PUSH ECX
|
||
* 0044D52A 50 PUSH EAX
|
||
* 0044D52B 8D8C24 A4000000 LEA ECX,DWORD PTR SS:[ESP+0xA4]
|
||
* 0044D532 E8 D934FCFF CALL .00410A10
|
||
* 0044D537 C68424 C8000000 >MOV BYTE PTR SS:[ESP+0xC8],0x1
|
||
* 0044D53F 83BC24 B4000000 >CMP DWORD PTR SS:[ESP+0xB4],0x10
|
||
* 0044D547 72 18 JB SHORT .0044D561
|
||
* 0044D549 8B8424 A0000000 MOV EAX,DWORD PTR SS:[ESP+0xA0]
|
||
* 0044D550 894424 30 MOV DWORD PTR SS:[ESP+0x30],EAX
|
||
* 0044D554 EB 16 JMP SHORT .0044D56C
|
||
* 0044D556 8B07 MOV EAX,DWORD PTR DS:[EDI]
|
||
* 0044D558 ^E9 64FFFFFF JMP .0044D4C1
|
||
* 0044D55D 8B3F MOV EDI,DWORD PTR DS:[EDI]
|
||
* 0044D55F ^EB 84 JMP SHORT .0044D4E5
|
||
* 0044D561 8D8C24 A0000000 LEA ECX,DWORD PTR SS:[ESP+0xA0]
|
||
* 0044D568 894C24 30 MOV DWORD PTR SS:[ESP+0x30],ECX
|
||
* 0044D56C 8B7C24 30 MOV EDI,DWORD PTR SS:[ESP+0x30]
|
||
* 0044D570 0FB617 MOVZX EDX,BYTE PTR DS:[EDI]
|
||
* 0044D573 52 PUSH EDX
|
||
* 0044D574 33DB XOR EBX,EBX
|
||
* 0044D576 E8 39420600 CALL .004B17B4
|
||
* 0044D57B 83C4 04 ADD ESP,0x4
|
||
* 0044D57E 85C0 TEST EAX,EAX
|
||
* 0044D580 74 12 JE SHORT .0044D594
|
||
* 0044D582 8BCF MOV ECX,EDI
|
||
* 0044D584 3859 01 CMP BYTE PTR DS:[ECX+0x1],BL
|
||
* 0044D587 8D41 01 LEA EAX,DWORD PTR DS:[ECX+0x1]
|
||
* 0044D58A 74 08 JE SHORT .0044D594
|
||
* 0044D58C 0FB619 MOVZX EBX,BYTE PTR DS:[ECX]
|
||
* 0044D58F C1E3 08 SHL EBX,0x8
|
||
* 0044D592 8BF8 MOV EDI,EAX
|
||
* 0044D594 0FB63F MOVZX EDI,BYTE PTR DS:[EDI]
|
||
* 0044D597 03FB ADD EDI,EBX
|
||
* 0044D599 0F84 8E020000 JE .0044D82D
|
||
* 0044D59F D94424 28 FLD DWORD PTR SS:[ESP+0x28]
|
||
* 0044D5A3 D946 0C FLD DWORD PTR DS:[ESI+0xC]
|
||
* 0044D5A6 DED9 FCOMPP
|
||
* 0044D5A8 DFE0 FSTSW AX
|
||
* 0044D5AA F6C4 05 TEST AH,0x5
|
||
* 0044D5AD 0F8B 7A020000 JPO .0044D82D
|
||
* 0044D5B3 8B4424 30 MOV EAX,DWORD PTR SS:[ESP+0x30]
|
||
* 0044D5B7 50 PUSH EAX
|
||
* 0044D5B8 E8 0F420600 CALL .004B17CC
|
||
* 0044D5BD 83C4 04 ADD ESP,0x4
|
||
* 0044D5C0 894424 30 MOV DWORD PTR SS:[ESP+0x30],EAX
|
||
* 0044D5C4 83FF 20 CMP EDI,0x20
|
||
* 0044D5C7 75 27 JNZ SHORT .0044D5F0
|
||
* 0044D5C9 FF86 88000000 INC DWORD PTR DS:[ESI+0x88]
|
||
* 0044D5CF 8B4C24 1C MOV ECX,DWORD PTR SS:[ESP+0x1C]
|
||
* 0044D5D3 8B51 38 MOV EDX,DWORD PTR DS:[ECX+0x38]
|
||
* 0044D5D6 DB41 38 FILD DWORD PTR DS:[ECX+0x38]
|
||
* 0044D5D9 85D2 TEST EDX,EDX
|
||
* 0044D5DB 7D 06 JGE SHORT .0044D5E3
|
||
* 0044D5DD D805 D05C9100 FADD DWORD PTR DS:[0x915CD0]
|
||
* 0044D5E3 D84424 14 FADD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D5E7 D95C24 14 FSTP DWORD PTR SS:[ESP+0x14]
|
||
* 0044D5EB ^E9 7CFFFFFF JMP .0044D56C
|
||
* 0044D5F0 81FF 40810000 CMP EDI,0x8140
|
||
* 0044D5F6 75 14 JNZ SHORT .0044D60C
|
||
* 0044D5F8 FF86 88000000 INC DWORD PTR DS:[ESI+0x88]
|
||
* 0044D5FE 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+0x1C]
|
||
* 0044D602 8B48 3C MOV ECX,DWORD PTR DS:[EAX+0x3C]
|
||
* 0044D605 DB40 3C FILD DWORD PTR DS:[EAX+0x3C]
|
||
* 0044D608 85C9 TEST ECX,ECX
|
||
* 0044D60A ^EB CF JMP SHORT .0044D5DB
|
||
* 0044D60C 83FF 0A CMP EDI,0xA
|
||
* 0044D60F 75 6F JNZ SHORT .0044D680
|
||
* 0044D611 8B46 18 MOV EAX,DWORD PTR DS:[ESI+0x18]
|
||
* 0044D614 83F8 03 CMP EAX,0x3
|
||
* 0044D617 77 3D JA SHORT .0044D656
|
||
* 0044D619 FF2485 98DA4400 JMP DWORD PTR DS:[EAX*4+0x44DA98]
|
||
* 0044D620 56 PUSH ESI
|
||
* 0044D621 E8 3A080000 CALL .0044DE60
|
||
* 0044D626 EB 2E JMP SHORT .0044D656
|
||
* 0044D628 D94424 14 FLD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D62C 51 PUSH ECX
|
||
* 0044D62D D91C24 FSTP DWORD PTR SS:[ESP]
|
||
* 0044D630 56 PUSH ESI
|
||
* 0044D631 E8 FA080000 CALL .0044DF30
|
||
* 0044D636 EB 1E JMP SHORT .0044D656
|
||
* 0044D638 D94424 14 FLD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D63C 51 PUSH ECX
|
||
* 0044D63D D91C24 FSTP DWORD PTR SS:[ESP]
|
||
* 0044D640 56 PUSH ESI
|
||
* 0044D641 E8 CA090000 CALL .0044E010
|
||
* 0044D646 EB 0E JMP SHORT .0044D656
|
||
* 0044D648 D94424 14 FLD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D64C 51 PUSH ECX
|
||
* 0044D64D D91C24 FSTP DWORD PTR SS:[ESP]
|
||
* 0044D650 56 PUSH ESI
|
||
* 0044D651 E8 9A0A0000 CALL .0044E0F0
|
||
* 0044D656 8B5424 4C MOV EDX,DWORD PTR SS:[ESP+0x4C]
|
||
* 0044D65A D9EE FLDZ
|
||
* 0044D65C 8B02 MOV EAX,DWORD PTR DS:[EDX]
|
||
* 0044D65E D95C24 14 FSTP DWORD PTR SS:[ESP+0x14]
|
||
* 0044D662 D946 14 FLD DWORD PTR DS:[ESI+0x14]
|
||
* 0044D665 DB02 FILD DWORD PTR DS:[EDX]
|
||
* 0044D667 85C0 TEST EAX,EAX
|
||
* 0044D669 7D 06 JGE SHORT .0044D671
|
||
* 0044D66B D805 D05C9100 FADD DWORD PTR DS:[0x915CD0]
|
||
* 0044D671 DEC1 FADDP ST(1),ST
|
||
* 0044D673 D84424 28 FADD DWORD PTR SS:[ESP+0x28]
|
||
* 0044D677 D95C24 28 FSTP DWORD PTR SS:[ESP+0x28]
|
||
* 0044D67B ^E9 ECFEFFFF JMP .0044D56C
|
||
* 0044D680 83FF 0D CMP EDI,0xD
|
||
* 0044D683 ^0F84 E3FEFFFF JE .0044D56C
|
||
* 0044D689 83FF 09 CMP EDI,0x9
|
||
* 0044D68C ^0F84 DAFEFFFF JE .0044D56C
|
||
* 0044D692 8B5C24 1C MOV EBX,DWORD PTR SS:[ESP+0x1C]
|
||
* 0044D696 57 PUSH EDI
|
||
* 0044D697 8BC3 MOV EAX,EBX
|
||
* 0044D699 E8 6249FDFF CALL .00422000
|
||
* 0044D69E 894424 18 MOV DWORD PTR SS:[ESP+0x18],EAX ; jichi: This is the ITH hook point
|
||
* 0044D6A2 85C0 TEST EAX,EAX
|
||
* 0044D6A4 ^0F84 C2FEFFFF JE .0044D56C
|
||
* 0044D6AA 57 PUSH EDI
|
||
* 0044D6AB 8BC3 MOV EAX,EBX
|
||
* 0044D6AD E8 4E49FDFF CALL .00422000
|
||
* 0044D6B2 85C0 TEST EAX,EAX
|
||
* 0044D6B4 ^0F84 B2FEFFFF JE .0044D56C
|
||
* 0044D6BA 83C0 10 ADD EAX,0x10
|
||
* 0044D6BD 894424 40 MOV DWORD PTR SS:[ESP+0x40],EAX
|
||
* 0044D6C1 ^0F84 A5FEFFFF JE .0044D56C
|
||
* 0044D6C7 57 PUSH EDI
|
||
* 0044D6C8 8BC3 MOV EAX,EBX
|
||
* 0044D6CA E8 3149FDFF CALL .00422000
|
||
* 0044D6CF 85C0 TEST EAX,EAX
|
||
* 0044D6D1 75 04 JNZ SHORT .0044D6D7
|
||
* 0044D6D3 D9EE FLDZ
|
||
* 0044D6D5 EB 03 JMP SHORT .0044D6DA
|
||
* 0044D6D7 D940 20 FLD DWORD PTR DS:[EAX+0x20]
|
||
* 0044D6DA D95C24 24 FSTP DWORD PTR SS:[ESP+0x24]
|
||
* 0044D6DE 8D4C24 20 LEA ECX,DWORD PTR SS:[ESP+0x20]
|
||
* 0044D6E2 D94424 24 FLD DWORD PTR SS:[ESP+0x24]
|
||
* 0044D6E6 51 PUSH ECX
|
||
* 0044D6E7 8D8E 04010000 LEA ECX,DWORD PTR DS:[ESI+0x104]
|
||
* 0044D6ED D95C24 24 FSTP DWORD PTR SS:[ESP+0x24]
|
||
* 0044D6F1 E8 6A55FFFF CALL .00442C60
|
||
* 0044D6F6 D94424 24 FLD DWORD PTR SS:[ESP+0x24]
|
||
* 0044D6FA D94424 14 FLD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D6FE D9C0 FLD ST
|
||
* 0044D700 DEC2 FADDP ST(2),ST
|
||
* 0044D702 D946 10 FLD DWORD PTR DS:[ESI+0x10]
|
||
* 0044D705 DEC2 FADDP ST(2),ST
|
||
* 0044D707 D9C9 FXCH ST(1)
|
||
* 0044D709 D95C24 48 FSTP DWORD PTR SS:[ESP+0x48]
|
||
* 0044D70D D94424 28 FLD DWORD PTR SS:[ESP+0x28]
|
||
* 0044D711 D95C24 20 FSTP DWORD PTR SS:[ESP+0x20]
|
||
* 0044D715 D94424 48 FLD DWORD PTR SS:[ESP+0x48]
|
||
* 0044D719 D946 08 FLD DWORD PTR DS:[ESI+0x8]
|
||
* 0044D71C DED9 FCOMPP
|
||
* 0044D71E DFE0 FSTSW AX
|
||
* 0044D720 F6C4 05 TEST AH,0x5
|
||
* 0044D723 7A 47 JPE SHORT .0044D76C
|
||
* 0044D725 51 PUSH ECX
|
||
* 0044D726 8BC6 MOV EAX,ESI
|
||
* 0044D728 D91C24 FSTP DWORD PTR SS:[ESP]
|
||
* 0044D72B E8 D0060000 CALL .0044DE00
|
||
* 0044D730 D94424 24 FLD DWORD PTR SS:[ESP+0x24]
|
||
* 0044D734 D846 10 FADD DWORD PTR DS:[ESI+0x10]
|
||
* 0044D737 8B5424 4C MOV EDX,DWORD PTR SS:[ESP+0x4C]
|
||
* 0044D73B 8B02 MOV EAX,DWORD PTR DS:[EDX]
|
||
* 0044D73D D95C24 48 FSTP DWORD PTR SS:[ESP+0x48]
|
||
* 0044D741 D946 14 FLD DWORD PTR DS:[ESI+0x14]
|
||
* 0044D744 DB02 FILD DWORD PTR DS:[EDX]
|
||
* 0044D746 85C0 TEST EAX,EAX
|
||
* 0044D748 7D 06 JGE SHORT .0044D750
|
||
* 0044D74A D805 D05C9100 FADD DWORD PTR DS:[0x915CD0]
|
||
* 0044D750 DEC1 FADDP ST(1),ST
|
||
* 0044D752 D84424 28 FADD DWORD PTR SS:[ESP+0x28]
|
||
* 0044D756 D95C24 20 FSTP DWORD PTR SS:[ESP+0x20]
|
||
* 0044D75A D9EE FLDZ
|
||
* 0044D75C D95C24 14 FSTP DWORD PTR SS:[ESP+0x14]
|
||
* 0044D760 D94424 20 FLD DWORD PTR SS:[ESP+0x20]
|
||
* 0044D764 D95C24 28 FSTP DWORD PTR SS:[ESP+0x28]
|
||
* 0044D768 D94424 14 FLD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D76C FF86 88000000 INC DWORD PTR DS:[ESI+0x88]
|
||
* 0044D772 D95C24 64 FSTP DWORD PTR SS:[ESP+0x64]
|
||
* 0044D776 D94424 28 FLD DWORD PTR SS:[ESP+0x28]
|
||
* 0044D77A 8D7E 6C LEA EDI,DWORD PTR DS:[ESI+0x6C]
|
||
* 0044D77D 8D5C24 64 LEA EBX,DWORD PTR SS:[ESP+0x64]
|
||
* 0044D781 D95C24 68 FSTP DWORD PTR SS:[ESP+0x68]
|
||
* 0044D785 E8 B658FFFF CALL .00443040
|
||
* 0044D78A D9E8 FLD1
|
||
* 0044D78C 8B5C24 18 MOV EBX,DWORD PTR SS:[ESP+0x18]
|
||
* 0044D790 83EC 0C SUB ESP,0xC
|
||
* 0044D793 D95C24 08 FSTP DWORD PTR SS:[ESP+0x8]
|
||
* 0044D797 8D46 54 LEA EAX,DWORD PTR DS:[ESI+0x54]
|
||
* 0044D79A D94424 34 FLD DWORD PTR SS:[ESP+0x34]
|
||
* 0044D79E 8B7424 4C MOV ESI,DWORD PTR SS:[ESP+0x4C]
|
||
* 0044D7A2 D95C24 04 FSTP DWORD PTR SS:[ESP+0x4]
|
||
* 0044D7A6 D94424 20 FLD DWORD PTR SS:[ESP+0x20]
|
||
* 0044D7AA D91C24 FSTP DWORD PTR SS:[ESP]
|
||
* 0044D7AD E8 1E040000 CALL .0044DBD0
|
||
* 0044D7B2 8D5C24 2C LEA EBX,DWORD PTR SS:[ESP+0x2C]
|
||
* 0044D7B6 8D7C24 3C LEA EDI,DWORD PTR SS:[ESP+0x3C]
|
||
* 0044D7BA E8 E1050000 CALL .0044DDA0
|
||
* 0044D7BF 0FB74C24 3C MOVZX ECX,WORD PTR SS:[ESP+0x3C]
|
||
* 0044D7C4 8B7424 34 MOV ESI,DWORD PTR SS:[ESP+0x34]
|
||
* 0044D7C8 8DBE A4000000 LEA EDI,DWORD PTR DS:[ESI+0xA4]
|
||
* 0044D7CE 8D5C24 18 LEA EBX,DWORD PTR SS:[ESP+0x18]
|
||
* 0044D7D2 894C24 18 MOV DWORD PTR SS:[ESP+0x18],ECX
|
||
* 0044D7D6 E8 15C8FCFF CALL .00419FF0
|
||
* 0044D7DB 0FB74C24 2C MOVZX ECX,WORD PTR SS:[ESP+0x2C]
|
||
* 0044D7E0 B8 56555555 MOV EAX,0x55555556
|
||
* 0044D7E5 F7E9 IMUL ECX
|
||
* 0044D7E7 8BC2 MOV EAX,EDX
|
||
* 0044D7E9 C1E8 1F SHR EAX,0x1F
|
||
* 0044D7EC 03C2 ADD EAX,EDX
|
||
* 0044D7EE 8DBE 8C000000 LEA EDI,DWORD PTR DS:[ESI+0x8C]
|
||
* 0044D7F4 8D5C24 18 LEA EBX,DWORD PTR SS:[ESP+0x18]
|
||
* 0044D7F8 894424 18 MOV DWORD PTR SS:[ESP+0x18],EAX
|
||
* 0044D7FC E8 EFC7FCFF CALL .00419FF0
|
||
* 0044D801 8DBE D4000000 LEA EDI,DWORD PTR DS:[ESI+0xD4]
|
||
* 0044D807 D94424 48 FLD DWORD PTR SS:[ESP+0x48]
|
||
* 0044D80B 8D5C24 38 LEA EBX,DWORD PTR SS:[ESP+0x38]
|
||
* 0044D80F D95C24 14 FSTP DWORD PTR SS:[ESP+0x14]
|
||
* 0044D813 D94424 20 FLD DWORD PTR SS:[ESP+0x20]
|
||
* 0044D817 D95C24 28 FSTP DWORD PTR SS:[ESP+0x28]
|
||
* 0044D81B E8 D0C7FCFF CALL .00419FF0
|
||
* 0044D820 C74424 38 000000>MOV DWORD PTR SS:[ESP+0x38],0x0
|
||
* 0044D828 ^E9 3FFDFFFF JMP .0044D56C
|
||
* 0044D82D C68424 C8000000 >MOV BYTE PTR SS:[ESP+0xC8],0x0
|
||
* 0044D835 83BC24 B4000000 >CMP DWORD PTR SS:[ESP+0xB4],0x10
|
||
* 0044D83D 72 10 JB SHORT .0044D84F
|
||
* 0044D83F 8B8C24 A0000000 MOV ECX,DWORD PTR SS:[ESP+0xA0]
|
||
* 0044D846 51 PUSH ECX
|
||
* 0044D847 E8 29130600 CALL .004AEB75
|
||
* 0044D84C 83C4 04 ADD ESP,0x4
|
||
* 0044D84F 8B7C24 50 MOV EDI,DWORD PTR SS:[ESP+0x50]
|
||
* 0044D853 8B5C24 54 MOV EBX,DWORD PTR SS:[ESP+0x54]
|
||
* 0044D857 C78424 B4000000 >MOV DWORD PTR SS:[ESP+0xB4],0xF
|
||
* 0044D862 C78424 B0000000 >MOV DWORD PTR SS:[ESP+0xB0],0x0
|
||
* 0044D86D C68424 A0000000 >MOV BYTE PTR SS:[ESP+0xA0],0x0
|
||
* 0044D875 85FF TEST EDI,EDI
|
||
* 0044D877 75 19 JNZ SHORT .0044D892
|
||
* 0044D879 E8 16190600 CALL .004AF194
|
||
* 0044D87E 33C0 XOR EAX,EAX
|
||
* 0044D880 3B58 10 CMP EBX,DWORD PTR DS:[EAX+0x10]
|
||
* 0044D883 72 05 JB SHORT .0044D88A
|
||
* 0044D885 E8 0A190600 CALL .004AF194
|
||
* 0044D88A 83C3 04 ADD EBX,0x4
|
||
* 0044D88D ^E9 03FCFFFF JMP .0044D495
|
||
* 0044D892 8B07 MOV EAX,DWORD PTR DS:[EDI]
|
||
* 0044D894 ^EB EA JMP SHORT .0044D880
|
||
* 0044D896 66:8B5424 2C MOV DX,WORD PTR SS:[ESP+0x2C]
|
||
* 0044D89B 66:8996 84000000 MOV WORD PTR DS:[ESI+0x84],DX
|
||
* 0044D8A2 8B4E 64 MOV ECX,DWORD PTR DS:[ESI+0x64]
|
||
* 0044D8A5 2B4E 60 SUB ECX,DWORD PTR DS:[ESI+0x60]
|
||
* 0044D8A8 B8 67666666 MOV EAX,0x66666667
|
||
* 0044D8AD F7E9 IMUL ECX
|
||
* 0044D8AF C1FA 03 SAR EDX,0x3
|
||
* 0044D8B2 8BC2 MOV EAX,EDX
|
||
* 0044D8B4 C1E8 1F SHR EAX,0x1F
|
||
* 0044D8B7 03C2 ADD EAX,EDX
|
||
* 0044D8B9 74 0F JE SHORT .0044D8CA
|
||
* 0044D8BB D94424 14 FLD DWORD PTR SS:[ESP+0x14]
|
||
* 0044D8BF 51 PUSH ECX
|
||
* 0044D8C0 8BC6 MOV EAX,ESI
|
||
* 0044D8C2 D91C24 FSTP DWORD PTR SS:[ESP]
|
||
* 0044D8C5 E8 36050000 CALL .0044DE00
|
||
* 0044D8CA 8B86 9C000000 MOV EAX,DWORD PTR DS:[ESI+0x9C]
|
||
* 0044D8D0 33DB XOR EBX,EBX
|
||
* 0044D8D2 895C24 3C MOV DWORD PTR SS:[ESP+0x3C],EBX
|
||
* 0044D8D6 895C24 2C MOV DWORD PTR SS:[ESP+0x2C],EBX
|
||
* 0044D8DA 895C24 1C MOV DWORD PTR SS:[ESP+0x1C],EBX
|
||
* 0044D8DE 895C24 20 MOV DWORD PTR SS:[ESP+0x20],EBX
|
||
* 0044D8E2 894424 18 MOV DWORD PTR SS:[ESP+0x18],EAX
|
||
* 0044D8E6 3986 98000000 CMP DWORD PTR DS:[ESI+0x98],EAX
|
||
* 0044D8EC 76 05 JBE SHORT .0044D8F3
|
||
* 0044D8EE E8 A1180600 CALL .004AF194
|
||
* 0044D8F3 8BBE 98000000 MOV EDI,DWORD PTR DS:[ESI+0x98]
|
||
* 0044D8F9 8B8E 8C000000 MOV ECX,DWORD PTR DS:[ESI+0x8C]
|
||
* 0044D8FF 894C24 58 MOV DWORD PTR SS:[ESP+0x58],ECX
|
||
* 0044D903 3BBE 9C000000 CMP EDI,DWORD PTR DS:[ESI+0x9C]
|
||
* 0044D909 76 05 JBE SHORT .0044D910
|
||
* 0044D90B E8 84180600 CALL .004AF194
|
||
* 0044D910 8B86 8C000000 MOV EAX,DWORD PTR DS:[ESI+0x8C]
|
||
* 0044D916 894424 40 MOV DWORD PTR SS:[ESP+0x40],EAX
|
||
* 0044D91A 897C24 44 MOV DWORD PTR SS:[ESP+0x44],EDI
|
||
* 0044D91E 895C24 34 MOV DWORD PTR SS:[ESP+0x34],EBX
|
||
* 0044D922 3BC3 CMP EAX,EBX
|
||
* 0044D924 74 06 JE SHORT .0044D92C
|
||
* 0044D926 3B4424 58 CMP EAX,DWORD PTR SS:[ESP+0x58]
|
||
* 0044D92A 74 05 JE SHORT .0044D931
|
||
* 0044D92C E8 63180600 CALL .004AF194
|
||
* 0044D931 8B5424 44 MOV EDX,DWORD PTR SS:[ESP+0x44]
|
||
* 0044D935 3B5424 18 CMP EDX,DWORD PTR SS:[ESP+0x18]
|
||
* 0044D939 0F84 0D010000 JE .0044DA4C
|
||
* 0044D93F 8B4424 34 MOV EAX,DWORD PTR SS:[ESP+0x34]
|
||
* 0044D943 33DB XOR EBX,EBX
|
||
* 0044D945 8DBE EC000000 LEA EDI,DWORD PTR DS:[ESI+0xEC]
|
||
* 0044D94B 894424 24 MOV DWORD PTR SS:[ESP+0x24],EAX
|
||
* 0044D94F 8B4E 4C MOV ECX,DWORD PTR DS:[ESI+0x4C]
|
||
* 0044D952 2B4E 48 SUB ECX,DWORD PTR DS:[ESI+0x48]
|
||
* 0044D955 B8 67666666 MOV EAX,0x66666667
|
||
* 0044D95A F7E9 IMUL ECX
|
||
* 0044D95C C1FA 03 SAR EDX,0x3
|
||
* 0044D95F 8BCA MOV ECX,EDX
|
||
* 0044D961 C1E9 1F SHR ECX,0x1F
|
||
* 0044D964 03CA ADD ECX,EDX
|
||
* 0044D966 8B5424 20 MOV EDX,DWORD PTR SS:[ESP+0x20]
|
||
* 0044D96A 8D0413 LEA EAX,DWORD PTR DS:[EBX+EDX]
|
||
* 0044D96D 3BC1 CMP EAX,ECX
|
||
* 0044D96F 72 05 JB SHORT .0044D976
|
||
* 0044D971 E8 1E180600 CALL .004AF194
|
||
* 0044D976 8B46 48 MOV EAX,DWORD PTR DS:[ESI+0x48]
|
||
* 0044D979 034424 24 ADD EAX,DWORD PTR SS:[ESP+0x24]
|
||
* 0044D97D 8D8C24 88000000 LEA ECX,DWORD PTR SS:[ESP+0x88]
|
||
* 0044D984 D900 FLD DWORD PTR DS:[EAX]
|
||
* 0044D986 51 PUSH ECX
|
||
* 0044D987 D99C24 8C000000 FSTP DWORD PTR SS:[ESP+0x8C]
|
||
* 0044D98E D940 04 FLD DWORD PTR DS:[EAX+0x4]
|
||
* 0044D991 D99C24 90000000 FSTP DWORD PTR SS:[ESP+0x90]
|
||
* 0044D998 D940 08 FLD DWORD PTR DS:[EAX+0x8]
|
||
* 0044D99B D99C24 94000000 FSTP DWORD PTR SS:[ESP+0x94]
|
||
* 0044D9A2 D940 0C FLD DWORD PTR DS:[EAX+0xC]
|
||
* 0044D9A5 D99C24 98000000 FSTP DWORD PTR SS:[ESP+0x98]
|
||
* 0044D9AC D940 10 FLD DWORD PTR DS:[EAX+0x10]
|
||
* 0044D9AF D99C24 9C000000 FSTP DWORD PTR SS:[ESP+0x9C]
|
||
* 0044D9B6 E8 A50B0000 CALL .0044E560
|
||
* 0044D9BB 834424 24 14 ADD DWORD PTR SS:[ESP+0x24],0x14
|
||
* 0044D9C0 43 INC EBX
|
||
* 0044D9C1 83FB 04 CMP EBX,0x4
|
||
* 0044D9C4 ^7C 89 JL SHORT .0044D94F
|
||
* 0044D9C6 8D5C24 2C LEA EBX,DWORD PTR SS:[ESP+0x2C]
|
||
* 0044D9CA 8D7C24 3C LEA EDI,DWORD PTR SS:[ESP+0x3C]
|
||
* 0044D9CE E8 CD030000 CALL .0044DDA0
|
||
* 0044D9D3 8B86 9C000000 MOV EAX,DWORD PTR DS:[ESI+0x9C]
|
||
* 0044D9D9 2B86 98000000 SUB EAX,DWORD PTR DS:[ESI+0x98]
|
||
* 0044D9DF 8B5424 24 MOV EDX,DWORD PTR SS:[ESP+0x24]
|
||
* 0044D9E3 BF 04000000 MOV EDI,0x4
|
||
* 0044D9E8 017C24 20 ADD DWORD PTR SS:[ESP+0x20],EDI
|
||
* 0044D9EC C1F8 02 SAR EAX,0x2
|
||
* 0044D9EF 895424 34 MOV DWORD PTR SS:[ESP+0x34],EDX
|
||
* 0044D9F3 394424 1C CMP DWORD PTR SS:[ESP+0x1C],EAX
|
||
* 0044D9F7 72 05 JB SHORT .0044D9FE
|
||
* 0044D9F9 E8 96170600 CALL .004AF194
|
||
* 0044D9FE 8B8E B4000000 MOV ECX,DWORD PTR DS:[ESI+0xB4]
|
||
* 0044DA04 2B8E B0000000 SUB ECX,DWORD PTR DS:[ESI+0xB0]
|
||
* 0044DA0A C1F9 02 SAR ECX,0x2
|
||
* 0044DA0D 394C24 1C CMP DWORD PTR SS:[ESP+0x1C],ECX
|
||
* 0044DA11 72 05 JB SHORT .0044DA18
|
||
* 0044DA13 E8 7C170600 CALL .004AF194
|
||
* 0044DA18 8B4424 40 MOV EAX,DWORD PTR SS:[ESP+0x40]
|
||
* 0044DA1C FF4424 1C INC DWORD PTR SS:[ESP+0x1C]
|
||
* 0044DA20 85C0 TEST EAX,EAX
|
||
* 0044DA22 75 24 JNZ SHORT .0044DA48
|
||
* 0044DA24 E8 6B170600 CALL .004AF194
|
||
* 0044DA29 33C0 XOR EAX,EAX
|
||
* 0044DA2B 8B5424 44 MOV EDX,DWORD PTR SS:[ESP+0x44]
|
||
* 0044DA2F 3B50 10 CMP EDX,DWORD PTR DS:[EAX+0x10]
|
||
* 0044DA32 72 05 JB SHORT .0044DA39
|
||
* 0044DA34 E8 5B170600 CALL .004AF194
|
||
* 0044DA39 017C24 44 ADD DWORD PTR SS:[ESP+0x44],EDI
|
||
* 0044DA3D 8B4424 40 MOV EAX,DWORD PTR SS:[ESP+0x40]
|
||
* 0044DA41 33DB XOR EBX,EBX
|
||
* 0044DA43 ^E9 DAFEFFFF JMP .0044D922
|
||
* 0044DA48 8B00 MOV EAX,DWORD PTR DS:[EAX]
|
||
* 0044DA4A ^EB DF JMP SHORT .0044DA2B
|
||
* 0044DA4C 8B86 9C000000 MOV EAX,DWORD PTR DS:[ESI+0x9C]
|
||
* 0044DA52 2B86 98000000 SUB EAX,DWORD PTR DS:[ESI+0x98]
|
||
* 0044DA58 8D4C24 6C LEA ECX,DWORD PTR SS:[ESP+0x6C]
|
||
* 0044DA5C C1F8 02 SAR EAX,0x2
|
||
* 0044DA5F 8946 38 MOV DWORD PTR DS:[ESI+0x38],EAX
|
||
* 0044DA62 C78424 C8000000 >MOV DWORD PTR SS:[ESP+0xC8],-0x1
|
||
* 0044DA6D E8 CE0E0000 CALL .0044E940
|
||
* 0044DA72 8B8C24 C0000000 MOV ECX,DWORD PTR SS:[ESP+0xC0]
|
||
* 0044DA79 64:890D 00000000 MOV DWORD PTR FS:[0],ECX
|
||
* 0044DA80 59 POP ECX
|
||
* 0044DA81 5F POP EDI
|
||
* 0044DA82 5E POP ESI
|
||
* 0044DA83 5B POP EBX
|
||
* 0044DA84 8B8C24 A8000000 MOV ECX,DWORD PTR SS:[ESP+0xA8]
|
||
* 0044DA8B 33CC XOR ECX,ESP
|
||
* 0044DA8D E8 EE100600 CALL .004AEB80
|
||
* 0044DA92 8BE5 MOV ESP,EBP
|
||
* 0044DA94 5D POP EBP
|
||
* 0044DA95 C2 0400 RETN 0x4
|
||
* 0044DA98 20D6 AND DH,DL
|
||
* 0044DA9A 44 INC ESP
|
||
* 0044DA9B 0028 ADD BYTE PTR DS:[EAX],CH
|
||
* 0044DA9D D6 SALC
|
||
* 0044DA9E 44 INC ESP
|
||
* 0044DA9F 0038 ADD BYTE PTR DS:[EAX],BH
|
||
* 0044DAA1 D6 SALC
|
||
* 0044DAA2 44 INC ESP
|
||
* 0044DAA3 0048 D6 ADD BYTE PTR DS:[EAX-0x2A],CL
|
||
* 0044DAA6 44 INC ESP
|
||
* 0044DAA7 00CC ADD AH,CL
|
||
* 0044DAA9 CC INT3
|
||
* 0044DAAA CC INT3
|
||
* 0044DAAB CC INT3
|
||
* 0044DAAC CC INT3
|
||
* 0044DAAD CC INT3
|
||
* 0044DAAE CC INT3
|
||
* 0044DAAF CC INT3
|
||
*/
|
||
bool attach(ULONG startAddress, ULONG stopAddress) // attach scenario
|
||
{
|
||
const uint8_t bytes[] = {
|
||
0x57, // 0044d696 57 push edi
|
||
0x8b,0xc3, // 0044d697 8bc3 mov eax,ebx
|
||
0xe8, XX4, // 0044d699 e8 6249fdff call .00422000
|
||
0x89,0x44,0x24, 0x18, // 0044d69e 894424 18 mov dword ptr ss:[esp+0x18],eax ; jichi: this is the ith hook point
|
||
0x85,0xc0, // 0044d6a2 85c0 test eax,eax
|
||
0x0f,0x84 //c2feffff // 0044d6a4 ^0f84 c2feffff je .0044d56c
|
||
};
|
||
ULONG addr = MemDbg::findBytes(bytes, sizeof(bytes), startAddress, stopAddress);
|
||
if (!addr)
|
||
return false;
|
||
addr = MemDbg::findEnclosingAlignedFunction(addr); // range is around 50, use 80
|
||
if (!addr)
|
||
return false;
|
||
HookParam hp;
|
||
hp.address=addr;
|
||
hp.type=USING_STRING|EMBED_ABLE|EMBED_AFTER_NEW| EMBED_DYNA_SJIS;
|
||
hp.offset=get_stack(1);
|
||
hp.hook_before=Private::hookBefore;
|
||
hp.hook_font=F_GetGlyphOutlineA;
|
||
return NewHook(hp,"EmbedNexton");
|
||
}
|
||
|
||
} // namespace ScenarioHook
|
||
} // unnamed namespace
|
||
|
||
bool Nexton::attach_function() {
|
||
bool embed=ScenarioHook::attach(processStartAddress,processStopAddress);
|
||
return InsertNextonHook()||embed;
|
||
}
|
||
|
||
|
||
/** jichi 8/17/2014 Nexton1
|
||
* Sample games:
|
||
* - [Nomad][071026] 淫烙<E6B7AB>巫女 Trial
|
||
*
|
||
* Debug method: text are prefetched into memory. Add break point to it.
|
||
*
|
||
* GetGlyphOutlineA is called, but no correct text.
|
||
*
|
||
* There are so many good hooks. The shortest function was picked,as follows:
|
||
* 0041974e cc int3
|
||
* 0041974f cc int3
|
||
* 00419750 56 push esi ; jichi: hook here, text in arg1
|
||
* 00419751 8b7424 08 mov esi,dword ptr ss:[esp+0x8]
|
||
* 00419755 8bc6 mov eax,esi
|
||
* 00419757 57 push edi
|
||
* 00419758 8d78 01 lea edi,dword ptr ds:[eax+0x1]
|
||
* 0041975b eb 03 jmp short inrakutr.00419760
|
||
* 0041975d 8d49 00 lea ecx,dword ptr ds:[ecx]
|
||
* 00419760 8a10 mov dl,byte ptr ds:[eax] ; jichi: eax is the text
|
||
* 00419762 83c0 01 add eax,0x1
|
||
* 00419765 84d2 test dl,dl
|
||
* 00419767 ^75 f7 jnz short inrakutr.00419760
|
||
* 00419769 2bc7 sub eax,edi
|
||
* 0041976b 50 push eax
|
||
* 0041976c 56 push esi
|
||
* 0041976d 83c1 04 add ecx,0x4
|
||
* 00419770 e8 eb85feff call inrakutr.00401d60
|
||
* 00419775 5f pop edi
|
||
* 00419776 5e pop esi
|
||
* 00419777 c2 0400 retn 0x4
|
||
* 0041977a cc int3
|
||
* 0041977b cc int3
|
||
* 0041977c cc int3
|
||
*
|
||
* Runtime stack: this function takes two arguments. Text address is in arg1.
|
||
*
|
||
* Other possible hooks are as follows:
|
||
* 00460caf 53 push ebx
|
||
* 00460cb0 c700 16000000 mov dword ptr ds:[eax],0x16
|
||
* 00460cb6 e8 39feffff call inrakutr.00460af4
|
||
* 00460cbb 83c4 14 add esp,0x14
|
||
* 00460cbe 385d fc cmp byte ptr ss:[ebp-0x4],bl
|
||
* 00460cc1 74 07 je short inrakutr.00460cca
|
||
* 00460cc3 8b45 f8 mov eax,dword ptr ss:[ebp-0x8]
|
||
* 00460cc6 8360 70 fd and dword ptr ds:[eax+0x70],0xfffffffd
|
||
* 00460cca 33c0 xor eax,eax
|
||
* 00460ccc eb 2c jmp short inrakutr.00460cfa
|
||
* 00460cce 0fb601 movzx eax,byte ptr ds:[ecx] ; jichi: here, ecx
|
||
* 00460cd1 8b55 f4 mov edx,dword ptr ss:[ebp-0xc]
|
||
* 00460cd4 f64410 1d 04 test byte ptr ds:[eax+edx+0x1d],0x4
|
||
* 00460cd9 74 0e je short inrakutr.00460ce9
|
||
* 00460cdb 8d51 01 lea edx,dword ptr ds:[ecx+0x1]
|
||
* 00460cde 381a cmp byte ptr ds:[edx],bl
|
||
* 00460ce0 74 07 je short inrakutr.00460ce9
|
||
* 00460ce2 c1e0 08 shl eax,0x8
|
||
* 00460ce5 8bf0 mov esi,eax
|
||
* 00460ce7 8bca mov ecx,edx
|
||
* 00460ce9 0fb601 movzx eax,byte ptr ds:[ecx]
|
||
* 00460cec 03c6 add eax,esi
|
||
* 00460cee 385d fc cmp byte ptr ss:[ebp-0x4],bl
|
||
* 00460cf1 74 07 je short inrakutr.00460cfa
|
||
* 00460cf3 8b4d f8 mov ecx,dword ptr ss:[ebp-0x8]
|
||
* 00460cf6 8361 70 fd and dword ptr ds:[ecx+0x70],0xfffffffd
|
||
* 00460cfa 5e pop esi
|
||
* 00460cfb 5b pop ebx
|
||
* 00460cfc c9 leave
|
||
* 00460cfd c3 retn
|
||
*
|
||
* 00460d41 74 05 je short inrakutr.00460d48
|
||
* 00460d43 381e cmp byte ptr ds:[esi],bl
|
||
* 00460d45 74 01 je short inrakutr.00460d48
|
||
* 00460d47 46 inc esi
|
||
* 00460d48 8bc6 mov eax,esi
|
||
* 00460d4a 5e pop esi
|
||
* 00460d4b 5b pop ebx
|
||
* 00460d4c c3 retn
|
||
* 00460d4d 56 push esi
|
||
* 00460d4e 8b7424 08 mov esi,dword ptr ss:[esp+0x8]
|
||
* 00460d52 0fb606 movzx eax,byte ptr ds:[esi] ; jichi: esi & ebp
|
||
* 00460d55 50 push eax
|
||
* 00460d56 e8 80fcffff call inrakutr.004609db
|
||
* 00460d5b 85c0 test eax,eax
|
||
* 00460d5d 59 pop ecx
|
||
* 00460d5e 74 0b je short inrakutr.00460d6b
|
||
* 00460d60 807e 01 00 cmp byte ptr ds:[esi+0x1],0x0
|
||
* 00460d64 74 05 je short inrakutr.00460d6b
|
||
* 00460d66 6a 02 push 0x2
|
||
* 00460d68 58 pop eax
|
||
* 00460d69 5e pop esi
|
||
* 00460d6a c3 retn
|
||
*
|
||
* 00460d1d 53 push ebx
|
||
* 00460d1e 53 push ebx
|
||
* 00460d1f 53 push ebx
|
||
* 00460d20 53 push ebx
|
||
* 00460d21 53 push ebx
|
||
* 00460d22 c700 16000000 mov dword ptr ds:[eax],0x16
|
||
* 00460d28 e8 c7fdffff call inrakutr.00460af4
|
||
* 00460d2d 83c4 14 add esp,0x14
|
||
* 00460d30 33c0 xor eax,eax
|
||
* 00460d32 eb 16 jmp short inrakutr.00460d4a
|
||
* 00460d34 0fb606 movzx eax,byte ptr ds:[esi] ; jichi: esi, ebp
|
||
* 00460d37 50 push eax
|
||
* 00460d38 e8 9efcffff call inrakutr.004609db
|
||
* 00460d3d 46 inc esi
|
||
* 00460d3e 85c0 test eax,eax
|
||
* 00460d40 59 pop ecx
|
||
* 00460d41 74 05 je short inrakutr.00460d48
|
||
* 00460d43 381e cmp byte ptr ds:[esi],bl
|
||
* 00460d45 74 01 je short inrakutr.00460d48
|
||
* 00460d47 46 inc esi
|
||
*
|
||
* 0042c59f cc int3
|
||
* 0042c5a0 56 push esi
|
||
* 0042c5a1 8bf1 mov esi,ecx
|
||
* 0042c5a3 8b86 cc650000 mov eax,dword ptr ds:[esi+0x65cc]
|
||
* 0042c5a9 8b50 1c mov edx,dword ptr ds:[eax+0x1c]
|
||
* 0042c5ac 57 push edi
|
||
* 0042c5ad 8b7c24 0c mov edi,dword ptr ss:[esp+0xc]
|
||
* 0042c5b1 8d8e cc650000 lea ecx,dword ptr ds:[esi+0x65cc]
|
||
* 0042c5b7 57 push edi
|
||
* 0042c5b8 ffd2 call edx
|
||
* 0042c5ba 8bc7 mov eax,edi
|
||
* 0042c5bc 8d50 01 lea edx,dword ptr ds:[eax+0x1]
|
||
* 0042c5bf 90 nop
|
||
* 0042c5c0 8a08 mov cl,byte ptr ds:[eax] ; jichi: here eax
|
||
* 0042c5c2 83c0 01 add eax,0x1
|
||
* 0042c5c5 84c9 test cl,cl
|
||
* 0042c5c7 ^75 f7 jnz short inrakutr.0042c5c0
|
||
* 0042c5c9 2bc2 sub eax,edx
|
||
* 0042c5cb 50 push eax
|
||
* 0042c5cc 57 push edi
|
||
* 0042c5cd 8d8e 24660000 lea ecx,dword ptr ds:[esi+0x6624]
|
||
* 0042c5d3 e8 8857fdff call inrakutr.00401d60
|
||
* 0042c5d8 8b86 b4660000 mov eax,dword ptr ds:[esi+0x66b4]
|
||
* 0042c5de 85c0 test eax,eax
|
||
* 0042c5e0 74 0d je short inrakutr.0042c5ef
|
||
* 0042c5e2 8b8e b8660000 mov ecx,dword ptr ds:[esi+0x66b8]
|
||
* 0042c5e8 2bc8 sub ecx,eax
|
||
* 0042c5ea c1f9 02 sar ecx,0x2
|
||
* 0042c5ed 75 05 jnz short inrakutr.0042c5f4
|
||
* 0042c5ef e8 24450300 call inrakutr.00460b18
|
||
* 0042c5f4 8b96 b4660000 mov edx,dword ptr ds:[esi+0x66b4]
|
||
* 0042c5fa 8b0a mov ecx,dword ptr ds:[edx]
|
||
* 0042c5fc 8b01 mov eax,dword ptr ds:[ecx]
|
||
* 0042c5fe 8b50 30 mov edx,dword ptr ds:[eax+0x30]
|
||
* 0042c601 ffd2 call edx
|
||
* 0042c603 8b06 mov eax,dword ptr ds:[esi]
|
||
* 0042c605 8b90 f8000000 mov edx,dword ptr ds:[eax+0xf8]
|
||
* 0042c60b 6a 00 push 0x0
|
||
* 0042c60d 68 c3164a00 push inrakutr.004a16c3
|
||
* 0042c612 57 push edi
|
||
* 0042c613 8bce mov ecx,esi
|
||
* 0042c615 ffd2 call edx
|
||
* 0042c617 5f pop edi
|
||
* 0042c618 5e pop esi
|
||
* 0042c619 c2 0400 retn 0x4
|
||
* 0042c61c cc int3
|
||
*
|
||
* 0041974e cc int3
|
||
* 0041974f cc int3
|
||
* 00419750 56 push esi
|
||
* 00419751 8b7424 08 mov esi,dword ptr ss:[esp+0x8]
|
||
* 00419755 8bc6 mov eax,esi
|
||
* 00419757 57 push edi
|
||
* 00419758 8d78 01 lea edi,dword ptr ds:[eax+0x1]
|
||
* 0041975b eb 03 jmp short inrakutr.00419760
|
||
* 0041975d 8d49 00 lea ecx,dword ptr ds:[ecx]
|
||
* 00419760 8a10 mov dl,byte ptr ds:[eax] ; jichi: eax
|
||
* 00419762 83c0 01 add eax,0x1
|
||
* 00419765 84d2 test dl,dl
|
||
* 00419767 ^75 f7 jnz short inrakutr.00419760
|
||
* 00419769 2bc7 sub eax,edi
|
||
* 0041976b 50 push eax
|
||
* 0041976c 56 push esi
|
||
* 0041976d 83c1 04 add ecx,0x4
|
||
* 00419770 e8 eb85feff call inrakutr.00401d60
|
||
* 00419775 5f pop edi
|
||
* 00419776 5e pop esi
|
||
* 00419777 c2 0400 retn 0x4
|
||
* 0041977a cc int3
|
||
* 0041977b cc int3
|
||
* 0041977c cc int3
|
||
*
|
||
* 0042c731 57 push edi
|
||
* 0042c732 ffd0 call eax
|
||
* 0042c734 8bc7 mov eax,edi
|
||
* 0042c736 8d50 01 lea edx,dword ptr ds:[eax+0x1]
|
||
* 0042c739 8da424 00000000 lea esp,dword ptr ss:[esp]
|
||
* 0042c740 8a08 mov cl,byte ptr ds:[eax] ; jichi: eax
|
||
* 0042c742 83c0 01 add eax,0x1
|
||
* 0042c745 84c9 test cl,cl
|
||
* 0042c747 ^75 f7 jnz short inrakutr.0042c740
|
||
* 0042c749 2bc2 sub eax,edx
|
||
* 0042c74b 8bf8 mov edi,eax
|
||
* 0042c74d e8 fe1d0100 call inrakutr.0043e550
|
||
* 0042c752 8b0d 187f4c00 mov ecx,dword ptr ds:[0x4c7f18]
|
||
* 0042c758 8b11 mov edx,dword ptr ds:[ecx]
|
||
* 0042c75a 8b42 70 mov eax,dword ptr ds:[edx+0x70]
|
||
* 0042c75d ffd0 call eax
|
||
* 0042c75f 83c0 0a add eax,0xa
|
||
* 0042c762 0fafc7 imul eax,edi
|
||
* 0042c765 5f pop edi
|
||
* 0042c766 8986 60660000 mov dword ptr ds:[esi+0x6660],eax
|
||
*/
|
||
bool InsertNexton1Hook()
|
||
{
|
||
const BYTE bytes[] = {
|
||
0x56, // 00419750 56 push esi ; jichi: hook here, text in arg1
|
||
0x8b,0x74,0x24, 0x08, // 00419751 8b7424 08 mov esi,dword ptr ss:[esp+0x8]
|
||
0x8b,0xc6, // 00419755 8bc6 mov eax,esi
|
||
0x57, // 00419757 57 push edi
|
||
0x8d,0x78, 0x01, // 00419758 8d78 01 lea edi,dword ptr ds:[eax+0x1]
|
||
0xeb, 0x03, // 0041975b eb 03 jmp short inrakutr.00419760
|
||
0x8d,0x49, 0x00, // 0041975d 8d49 00 lea ecx,dword ptr ds:[ecx]
|
||
0x8a,0x10, // 00419760 8a10 mov dl,byte ptr ds:[eax] ; jichi: eax is the text
|
||
0x83,0xc0, 0x01, // 00419762 83c0 01 add eax,0x1
|
||
0x84,0xd2, // 00419765 84d2 test dl,dl
|
||
0x75, 0xf7, // 00419767 ^75 f7 jnz short inrakutr.00419760
|
||
0x2b,0xc7, // 00419769 2bc7 sub eax,edi
|
||
0x50, // 0041976b 50 push eax
|
||
0x56, // 0041976c 56 push esi
|
||
0x83,0xc1, 0x04 // 0041976d 83c1 04 add ecx,0x4
|
||
//0xe8, XX4, // 00419770 e8 eb85feff call inrakutr.00401d60
|
||
//0x5f, // 00419775 5f pop edi
|
||
//0x5e, // 00419776 5e pop esi
|
||
//0xc2, 0x04,0x00 // 00419777 c2 0400 retn 0x4
|
||
};
|
||
enum { addr_offset = 0 }; // distance to the beginning of the function
|
||
ULONG addr = MemDbg::findBytes(bytes, sizeof(bytes), processStartAddress, processStopAddress);
|
||
//GROWL_DWORD(addr); // supposed to be 0x4010e0
|
||
if (!addr) {
|
||
ConsoleOutput("NEXTON1: pattern not found");
|
||
return false;
|
||
}
|
||
//GROWL_DWORD(addr);
|
||
|
||
HookParam hp;
|
||
hp.address = addr + addr_offset;
|
||
//hp.length_offset = 1;
|
||
hp.offset=get_stack(1); // [esp+4] == arg0
|
||
hp.type = USING_STRING;
|
||
ConsoleOutput("INSERT NEXTON1");
|
||
return NewHook(hp, "NEXTON1");
|
||
}
|
||
|
||
bool Nexton1::attach_function() {
|
||
|
||
return InsertNexton1Hook();
|
||
}
|