12121
This commit is contained in:
parent
be9ef942e9
commit
a8a7025f55
Binary file not shown.
|
|
@ -23,91 +23,91 @@ Controller::~Controller()
|
||||||
|
|
||||||
void Controller::init()
|
void Controller::init()
|
||||||
{
|
{
|
||||||
CMem::WriteUChar((void *)(base::GlobalData::Init_fix_1 - 0x1), 0);
|
// CMem::WriteUChar((void *)(base::GlobalData::Init_fix_1 - 0x1), 0);
|
||||||
//.text:085BDE9D 83 F8 0A cmp eax, 10
|
// //.text:085BDE9D 83 F8 0A cmp eax, 10
|
||||||
CMem::WriteUChar((void *)(base::CParty::addDungeonClear_fix_1 + 2), 0x7E); // 普通被击
|
// CMem::WriteUChar((void *)(base::CParty::addDungeonClear_fix_1 + 2), 0x7E); // 普通被击
|
||||||
//.text:085BDF30 83 F8 1E cmp eax, 30
|
// //.text:085BDF30 83 F8 1E cmp eax, 30
|
||||||
CMem::WriteUChar((void *)(base::CParty::addDungeonClear_fix_2 + 2), 0x7E); // 远古被击
|
// CMem::WriteUChar((void *)(base::CParty::addDungeonClear_fix_2 + 2), 0x7E); // 远古被击
|
||||||
//.text:085BDFC3 83 F8 32 cmp eax, 50
|
// //.text:085BDFC3 83 F8 32 cmp eax, 50
|
||||||
CMem::WriteUChar((void *)(base::CParty::addDungeonClear_fix_3 + 2), 0x7E); // 异界被击
|
// CMem::WriteUChar((void *)(base::CParty::addDungeonClear_fix_3 + 2), 0x7E); // 异界被击
|
||||||
CMem::WriteUChar((void *)(0x081C025F + 1), 0x0B);
|
// CMem::WriteUChar((void *)(0x081C025F + 1), 0x0B);
|
||||||
CMem::WriteUChar((void *)(0x081C029E + 1), 0x0B);
|
// CMem::WriteUChar((void *)(0x081C029E + 1), 0x0B);
|
||||||
|
|
||||||
/* 修正使用代币增加积分
|
// /* 修正使用代币增加积分
|
||||||
地址 长度 原始字节 已修补字节
|
// 地址 长度 原始字节 已修补字节
|
||||||
08179043 0x1 97 B8
|
// 08179043 0x1 97 B8
|
||||||
0817904E 0x1 8C AD
|
// 0817904E 0x1 8C AD
|
||||||
*/
|
// */
|
||||||
CMem::WriteUChar((void *)(0x08179043), 0xB8);
|
// CMem::WriteUChar((void *)(0x08179043), 0xB8);
|
||||||
CMem::WriteUChar((void *)(0x0817904E), 0xAD);
|
// CMem::WriteUChar((void *)(0x0817904E), 0xAD);
|
||||||
|
|
||||||
// mov dword ptr [esp+4], 8E0F448h
|
// // mov dword ptr [esp+4], 8E0F448h
|
||||||
Asm->lea(eax, dword_ptr(ebp, -0x84));
|
// Asm->lea(eax, dword_ptr(ebp, -0x84));
|
||||||
Asm->mov(dword_ptr(esp), eax);
|
// Asm->mov(dword_ptr(esp), eax);
|
||||||
Asm->mov(eax, int(&hook_importCashShopItemList));
|
// Asm->mov(eax, int(&hook_importCashShopItemList));
|
||||||
Asm->call(eax);
|
// Asm->call(eax);
|
||||||
Asm->mov(dword_ptr(esp, 4), 0x8E0F448);
|
// Asm->mov(dword_ptr(esp, 4), 0x8E0F448);
|
||||||
Asm->mov(eax, base::importCashShopItemList_hook_end);
|
// Asm->mov(eax, base::importCashShopItemList_hook_end);
|
||||||
Asm->jmp(eax);
|
// Asm->jmp(eax);
|
||||||
auto code_importCashShopItemList = assembler.GetBytes(true);
|
// auto code_importCashShopItemList = assembler.GetBytes(true);
|
||||||
void *new_importCashShopItemList_addr = Utils::alloc(code_importCashShopItemList.size());
|
// void *new_importCashShopItemList_addr = Utils::alloc(code_importCashShopItemList.size());
|
||||||
CMem::WriteBytes(new_importCashShopItemList_addr, code_importCashShopItemList.data(), code_importCashShopItemList.size());
|
// CMem::WriteBytes(new_importCashShopItemList_addr, code_importCashShopItemList.data(), code_importCashShopItemList.size());
|
||||||
YLOG("code :%s", Utils::ToHexString((const unsigned char *)code_importCashShopItemList.data(), code_importCashShopItemList.size()).c_str());
|
// YLOG("code :%s", Utils::ToHexString((const unsigned char *)code_importCashShopItemList.data(), code_importCashShopItemList.size()).c_str());
|
||||||
YLOG("code_addr :%p", new_importCashShopItemList_addr);
|
// YLOG("code_addr :%p", new_importCashShopItemList_addr);
|
||||||
|
|
||||||
CMem::HookJmp(base::importCashShopItemList_hook_begin, (int)new_importCashShopItemList_addr);
|
// CMem::HookJmp(base::importCashShopItemList_hook_begin, (int)new_importCashShopItemList_addr);
|
||||||
|
|
||||||
/************************************************************************/
|
// /************************************************************************/
|
||||||
/* HOOK 商城购买物品成功处理 */
|
// /* HOOK 商城购买物品成功处理 */
|
||||||
/************************************************************************/
|
// /************************************************************************/
|
||||||
// mov dword ptr [ebp-0FCh], 0FFFFFFFFh
|
// // mov dword ptr [ebp-0FCh], 0FFFFFFFFh
|
||||||
|
|
||||||
Asm->lea(eax, dword_ptr(ebp, -0xEC));
|
// Asm->lea(eax, dword_ptr(ebp, -0xEC));
|
||||||
Asm->mov(dword_ptr(esp, 0x10), eax);
|
// Asm->mov(dword_ptr(esp, 0x10), eax);
|
||||||
|
|
||||||
Asm->mov(eax, dword_ptr(ebp, -0x3A));
|
// Asm->mov(eax, dword_ptr(ebp, -0x3A));
|
||||||
Asm->mov(dword_ptr(esp, 0xc), eax);
|
// Asm->mov(dword_ptr(esp, 0xc), eax);
|
||||||
|
|
||||||
Asm->mov(eax, dword_ptr(ebp, -0x5C));
|
// Asm->mov(eax, dword_ptr(ebp, -0x5C));
|
||||||
Asm->mov(dword_ptr(esp, 8), eax);
|
// Asm->mov(dword_ptr(esp, 8), eax);
|
||||||
|
|
||||||
Asm->mov(eax, dword_ptr(ebp, -0x60));
|
// Asm->mov(eax, dword_ptr(ebp, -0x60));
|
||||||
Asm->mov(dword_ptr(esp, 4), eax);
|
// Asm->mov(dword_ptr(esp, 4), eax);
|
||||||
|
|
||||||
Asm->mov(eax, dword_ptr(ebp, 0xC));
|
// Asm->mov(eax, dword_ptr(ebp, 0xC));
|
||||||
Asm->mov(dword_ptr(esp), eax);
|
// Asm->mov(dword_ptr(esp), eax);
|
||||||
|
|
||||||
Asm->mov(eax, int(&hook_ProcessIPG_ResultOutput));
|
// Asm->mov(eax, int(&hook_ProcessIPG_ResultOutput));
|
||||||
Asm->call(eax);
|
// Asm->call(eax);
|
||||||
|
|
||||||
Asm->mov(dword_ptr(ebp, -0xfc), 0x0FFFFFFFF);
|
// Asm->mov(dword_ptr(ebp, -0xfc), 0x0FFFFFFFF);
|
||||||
Asm->mov(eax, base::ItemVendingMachine::ProcessIPG_ResultOutput_hook_end);
|
// Asm->mov(eax, base::ItemVendingMachine::ProcessIPG_ResultOutput_hook_end);
|
||||||
Asm->jmp(eax);
|
// Asm->jmp(eax);
|
||||||
auto code_ProcessIPG_ResultOutput = assembler.GetBytes(true);
|
// auto code_ProcessIPG_ResultOutput = assembler.GetBytes(true);
|
||||||
void *new_ProcessIPG_ResultOutput_addr = Utils::alloc(code_ProcessIPG_ResultOutput.size());
|
// void *new_ProcessIPG_ResultOutput_addr = Utils::alloc(code_ProcessIPG_ResultOutput.size());
|
||||||
CMem::WriteBytes(new_ProcessIPG_ResultOutput_addr, code_ProcessIPG_ResultOutput.data(), code_ProcessIPG_ResultOutput.size());
|
// CMem::WriteBytes(new_ProcessIPG_ResultOutput_addr, code_ProcessIPG_ResultOutput.data(), code_ProcessIPG_ResultOutput.size());
|
||||||
YLOG("code_2 :%s", Utils::ToHexString((const unsigned char *)code_ProcessIPG_ResultOutput.data(), code_ProcessIPG_ResultOutput.size()).c_str());
|
// YLOG("code_2 :%s", Utils::ToHexString((const unsigned char *)code_ProcessIPG_ResultOutput.data(), code_ProcessIPG_ResultOutput.size()).c_str());
|
||||||
YLOG("code_addr_2 :%p", new_ProcessIPG_ResultOutput_addr);
|
// YLOG("code_addr_2 :%p", new_ProcessIPG_ResultOutput_addr);
|
||||||
|
|
||||||
CMem::HookJmp(base::ItemVendingMachine::ProcessIPG_ResultOutput_hook_begin, (int)new_ProcessIPG_ResultOutput_addr);
|
// CMem::HookJmp(base::ItemVendingMachine::ProcessIPG_ResultOutput_hook_begin, (int)new_ProcessIPG_ResultOutput_addr);
|
||||||
|
|
||||||
// HOOK_SETUP(IPacketDispatcher_ParamBase_dispatch_template);
|
// HOOK_SETUP(IPacketDispatcher_ParamBase_dispatch_template);
|
||||||
|
|
||||||
HOOK_SETUP(UseJewel_dispatch_sig);
|
// HOOK_SETUP(UseJewel_dispatch_sig);
|
||||||
|
|
||||||
HOOK_SETUP(Dispatcher_ModItemAttr_dispatch_sig);
|
// HOOK_SETUP(Dispatcher_ModItemAttr_dispatch_sig);
|
||||||
|
|
||||||
HOOK_SETUP(PacketDispatcher_doDispatch);
|
HOOK_SETUP(PacketDispatcher_doDispatch);
|
||||||
|
|
||||||
HOOK_SETUP(DisPatcher_MoveMap_dispatch_sig);
|
// HOOK_SETUP(DisPatcher_MoveMap_dispatch_sig);
|
||||||
|
|
||||||
HOOK_SETUP(Inter_LoadEtc_dispatch_sig);
|
// HOOK_SETUP(Inter_LoadEtc_dispatch_sig);
|
||||||
|
|
||||||
HOOK_SETUP(DisPatcher_ReturnToSelectCharacter_dispatch_sig);
|
// HOOK_SETUP(DisPatcher_ReturnToSelectCharacter_dispatch_sig);
|
||||||
|
|
||||||
HOOK_SETUP(Init);
|
// HOOK_SETUP(Init);
|
||||||
|
|
||||||
YLOG("Controller::init()");
|
// YLOG("Controller::init()");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::Jinit()
|
void Controller::Jinit()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue