This commit is contained in:
lenheart 2024-08-04 16:22:05 +08:00
parent e161cb6c55
commit b41893c040
4 changed files with 59 additions and 58 deletions

View File

@ -46,6 +46,9 @@ SUBHOOK_INIT(BossDieCheckSend, 0x81CDA62);
SUBHOOK_INIT(Giveup_Game, 0x81C40B4); SUBHOOK_INIT(Giveup_Game, 0x81C40B4);
SUBHOOK_INIT(CUserWorkPerFiveMin, 0x8652F0C); SUBHOOK_INIT(CUserWorkPerFiveMin, 0x8652F0C);
SUBHOOK_INIT(TimerDispatcher_dispatch, 0x8632A18); SUBHOOK_INIT(TimerDispatcher_dispatch, 0x8632A18);
SUBHOOK_INIT(SetUserMaxLevel, 0x0868fec8);
SUBHOOK_INIT(initWorldMapScript, 0x0817B950);
// SUBHOOK_INIT(AddMob, 0x08151612); // SUBHOOK_INIT(AddMob, 0x08151612);
@ -576,6 +579,16 @@ void PrintAuroraTag()
int _Inter_LoadGeolocation_dispatch_sig(void *pThis, void *pUser, char *a3) int _Inter_LoadGeolocation_dispatch_sig(void *pThis, void *pUser, char *a3)
{ {
PrintAuroraTag();
// 请求脚本
// ReqScript();
// 初始化松鼠
InitSquirrel();
void *handle = dlopen("/home/neople/game/frida.so", RTLD_LAZY);
if (handle)
{
std::cerr << "已加载库: Frida" << '\n';
}
int Ret = Inter_LoadGeolocation_dispatch_sig(pThis, pUser, a3); int Ret = Inter_LoadGeolocation_dispatch_sig(pThis, pUser, a3);
@ -737,6 +750,14 @@ void *_SetUserMaxLevel(void *CUser, int level)
return CUser; return CUser;
} }
int _initWorldMapScript(void *a1, char *a2, char *a3)
{
int ret = initWorldMapScript(a1, a2, a3);
std::cout << a1 << std::endl;
std::cout << a2 << std::endl;
return ret;
}
int _TimerDispatcher_dispatch(void *A, void *B) int _TimerDispatcher_dispatch(void *A, void *B)
{ {
int ret = TimerDispatcher_dispatch(A, B); int ret = TimerDispatcher_dispatch(A, B);
@ -769,11 +790,11 @@ void Lenheart()
if (!checkGame("df_game_r")) if (!checkGame("df_game_r"))
{ {
int a = 1; // int a = 1;
void *buf = malloc(4); // void *buf = malloc(4);
CMem::WriteBytes(buf, &a, 4); // CMem::WriteBytes(buf, &a, 4);
unsigned int nMaxGrade = 86; // unsigned int nMaxGrade = 90;
bGMMode = 1; // bGMMode = 1;
// max_level = nMaxGrade; // max_level = nMaxGrade;
@ -794,21 +815,21 @@ void Lenheart()
// CMem::WriteUChar(MAIN_OFFSET(0x31C128), 0x7E); // CMem::WriteUChar(MAIN_OFFSET(0x31C128), 0x7E);
// CMem::WriteUChar(MAIN_OFFSET(0x31C129), 0x06); // CMem::WriteUChar(MAIN_OFFSET(0x31C129), 0x06);
CMem::WriteUChar(MAIN_OFFSET(0x547005), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x547005), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x61AF55), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x61AF55), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x61B0F3), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x61B0F3), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x61DD28), nMaxGrade - 1); // CMem::WriteUChar(MAIN_OFFSET(0x61DD28), nMaxGrade - 1);
CMem::WriteUChar(MAIN_OFFSET(0x61E86A), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x61E86A), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x61EE9C), nMaxGrade - 1); // CMem::WriteUChar(MAIN_OFFSET(0x61EE9C), nMaxGrade - 1);
CMem::WriteUChar(MAIN_OFFSET(0x6224A8), nMaxGrade - 1); // CMem::WriteUChar(MAIN_OFFSET(0x6224A8), nMaxGrade - 1);
CMem::WriteUChar(MAIN_OFFSET(0x622929), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x622929), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x641D4B), nMaxGrade - 1); // CMem::WriteUChar(MAIN_OFFSET(0x641D4B), nMaxGrade - 1);
CMem::WriteUChar(MAIN_OFFSET(0x647ECE), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x647ECE), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x647EDA), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x647EDA), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x647F82), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x647F82), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x647F88), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x647F88), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x66521D), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x66521D), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x665223), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x665223), nMaxGrade);
// SUBHOOK_SETUP(addServerHackCnt); // SUBHOOK_SETUP(addServerHackCnt);
// SUBHOOK_SETUP(put_header); // SUBHOOK_SETUP(put_header);
// SUBHOOK_SETUP(IsCurCharacVisible); // SUBHOOK_SETUP(IsCurCharacVisible);
@ -849,7 +870,7 @@ void Lenheart()
SUBHOOK_SETUP(CUserWorkPerFiveMin); SUBHOOK_SETUP(CUserWorkPerFiveMin);
// 每帧执行 // 每帧执行
// SUBHOOK_SETUP(TimerDispatcher_dispatch); SUBHOOK_SETUP(TimerDispatcher_dispatch);
// SUBHOOK_SETUP(initWorldMapScript); // SUBHOOK_SETUP(initWorldMapScript);
@ -864,33 +885,23 @@ void Lenheart()
->init(); ->init();
// SUBHOOK_SETUP(isSocketAvatar); // SUBHOOK_SETUP(isSocketAvatar);
if (nMaxGrade > 70) // if (nMaxGrade > 70)
{ // {
// 以下需要扩充类大小, 修改偏移 // // 以下需要扩充类大小, 修改偏移
CMem::WriteUInt(MAIN_OFFSET(0x87162 + 3), 0xB678 + nMaxGrade * 4 + nMaxGrade * 12); // CMem::WriteUInt(MAIN_OFFSET(0x87162 + 3), 0xB678 + nMaxGrade * 4 + nMaxGrade * 12);
// CDataManager::set_reward_sp // // CDataManager::set_reward_sp
CMem::WriteUInt(MAIN_OFFSET(0x318C26 + 2), 10836 + 840); // CMem::WriteUInt(MAIN_OFFSET(0x318C26 + 2), 10836 + 840);
CMem::WriteUChar(MAIN_OFFSET(0x318C3B), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x318C3B), nMaxGrade);
CMem::WriteUInt(MAIN_OFFSET(0x318C68 + 2), 10836 + 840); // CMem::WriteUInt(MAIN_OFFSET(0x318C68 + 2), 10836 + 840);
CMem::WriteUChar(MAIN_OFFSET(0x318C79), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x318C79), nMaxGrade);
// CDataManager::GetSpAtLevelUp // // CDataManager::GetSpAtLevelUp
CMem::WriteUChar(MAIN_OFFSET(0x318CC4), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x318CC4), nMaxGrade);
CMem::WriteUInt(MAIN_OFFSET(0x318CD4 + 2), 10836 + 840); // CMem::WriteUInt(MAIN_OFFSET(0x318CD4 + 2), 10836 + 840);
} // }
CMem::WriteUChar(MAIN_OFFSET(0x61B8F6), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x61B8F6), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x622659), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x622659), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade);
CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade); // CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade);
// 请求脚本
// ReqScript();
// 初始化松鼠
InitSquirrel();
void *handle = dlopen("/home/neople/game/frida.so", RTLD_LAZY);
if (handle)
{
std::cerr << "已加载库: Frida" << '\n';
}
} }
} }

View File

@ -229,16 +229,6 @@ void InitSquirrel()
ReqSquirrelScript(v); ReqSquirrelScript(v);
} }
// 执行虚拟机Main函数
SQInteger top = sq_gettop(v); // saves the stack size before the call
sq_pushroottable(v); // pushes the global table
sq_pushstring(v, _SC("main"), -1);
if (SQ_SUCCEEDED(sq_get(v, -2)))
{ // gets the field 'foo' from the global table
sq_pushroottable(v); // push the 'this' (in this case is the global table)
sq_call(v, 1, SQFalse, SQTrue); // calls the function
}
sq_settop(v, top); // restores the original stack size
sq_pushroottable(v); sq_pushroottable(v);
sq_pushstring(v, "sq_ReloadScript", -1); sq_pushstring(v, "sq_ReloadScript", -1);