111
This commit is contained in:
@@ -448,6 +448,23 @@ int Controller::hook_PacketDispatcher_doDispatch(PacketDispatcher *a1, CUser *us
|
||||
}
|
||||
sq_settop(v, top); // restores the original stack size
|
||||
}
|
||||
// 查看信息
|
||||
else if (packet_id == 8)
|
||||
{
|
||||
// std::cout << "查看信息" << std::endl;
|
||||
// std::lock_guard<std::recursive_mutex> lock(SqMtx);
|
||||
// // 执行虚拟机Main函数
|
||||
// SQInteger top = sq_gettop(v); // saves the stack size before the call
|
||||
// sq_pushroottable(v); // pushes the global table
|
||||
// sq_pushstring(v, _SC("Cb_player_exit"), -1);
|
||||
// if (SQ_SUCCEEDED(sq_get(v, -2)))
|
||||
// { // gets the fie123oo' from the global table
|
||||
// sq_pushroottable(v); // push the 'this' (in this case is the global table)
|
||||
// sq_pushuserpointer(v, user);
|
||||
// sq_call(v, 2, SQFalse, SQTrue); // calls the function
|
||||
// }
|
||||
// sq_settop(v, top); // restores the original stack size
|
||||
}
|
||||
// 自定义包
|
||||
else if (packet_id == 130)
|
||||
{
|
||||
|
||||
103
src/df_main.cpp
103
src/df_main.cpp
@@ -49,6 +49,7 @@ SUBHOOK_INIT(TimerDispatcher_dispatch, 0x8632A18);
|
||||
SUBHOOK_INIT(SetUserMaxLevel, 0x0868fec8);
|
||||
|
||||
SUBHOOK_INIT(initWorldMapScript, 0x0817B950);
|
||||
SUBHOOK_INIT(cusermake_basic_info, 0x0865A44E);
|
||||
|
||||
// SUBHOOK_INIT(AddMob, 0x08151612);
|
||||
|
||||
@@ -552,6 +553,22 @@ int _LenGetTimerMess(void *TimerQueue, void *TimerEntry)
|
||||
{
|
||||
if (l_socket::getInstance().InitState)
|
||||
l_socket::getInstance().Logic();
|
||||
|
||||
if (v)
|
||||
{
|
||||
// 用户每五分钟执行
|
||||
std::lock_guard<std::recursive_mutex> lock(SqMtx);
|
||||
// 执行虚拟机Main函数
|
||||
SQInteger top = sq_gettop(v); // saves the stack size before the call
|
||||
sq_pushroottable(v); // pushes the global table
|
||||
sq_pushstring(v, _SC("Cb_timer_dispatch"), -1);
|
||||
if (SQ_SUCCEEDED(sq_get(v, -2)))
|
||||
{ // gets the fie123oo' 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
|
||||
}
|
||||
return LenGetTimerMess(TimerQueue, TimerEntry);
|
||||
}
|
||||
|
||||
@@ -749,6 +766,14 @@ int _initWorldMapScript(void *a1, char *a2, char *a3)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int _cusermake_basic_info(void *a1, char *a2, char a3)
|
||||
{
|
||||
int ret = cusermake_basic_info(a1, a2, a3);
|
||||
std::cout << a1 << std::endl;
|
||||
std::cout << a2 << std::endl;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int _TimerDispatcher_dispatch(void *A, void *B)
|
||||
{
|
||||
int ret = TimerDispatcher_dispatch(A, B);
|
||||
@@ -781,11 +806,11 @@ void Lenheart()
|
||||
if (!checkGame("df_game_r"))
|
||||
{
|
||||
|
||||
// int a = 1;
|
||||
// void *buf = malloc(4);
|
||||
// CMem::WriteBytes(buf, &a, 4);
|
||||
// unsigned int nMaxGrade = 95;
|
||||
// bGMMode = 1;
|
||||
int a = 1;
|
||||
void *buf = malloc(4);
|
||||
CMem::WriteBytes(buf, &a, 4);
|
||||
unsigned int nMaxGrade = 95;
|
||||
bGMMode = 1;
|
||||
|
||||
// max_level = nMaxGrade;
|
||||
|
||||
@@ -806,39 +831,39 @@ void Lenheart()
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x31C128), 0x7E);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x31C129), 0x06);
|
||||
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x547005), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x61AF55), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x61B0F3), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x61DD28), nMaxGrade - 1);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x61E86A), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x61EE9C), nMaxGrade - 1);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x6224A8), nMaxGrade - 1);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x622929), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x641D4B), nMaxGrade - 1);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x647ECE), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x647EDA), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x647F82), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x647F88), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x66521D), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x665223), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x547005), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x61AF55), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x61B0F3), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x61DD28), nMaxGrade - 1);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x61E86A), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x61EE9C), nMaxGrade - 1);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x6224A8), nMaxGrade - 1);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x622929), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x641D4B), nMaxGrade - 1);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x647ECE), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x647EDA), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x647F82), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x647F88), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x66521D), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x665223), nMaxGrade);
|
||||
|
||||
// if (nMaxGrade > 70)
|
||||
// {
|
||||
// // 以下需要扩充类大小, 修改偏移
|
||||
// CMem::WriteUInt(MAIN_OFFSET(0x87162 + 3), 0xB678 + nMaxGrade * 4 + nMaxGrade * 12);
|
||||
// // CDataManager::set_reward_sp
|
||||
// CMem::WriteUInt(MAIN_OFFSET(0x318C26 + 2), 10836 + 840);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x318C3B), nMaxGrade);
|
||||
// CMem::WriteUInt(MAIN_OFFSET(0x318C68 + 2), 10836 + 840);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x318C79), nMaxGrade);
|
||||
// // CDataManager::GetSpAtLevelUp
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x318CC4), nMaxGrade);
|
||||
// CMem::WriteUInt(MAIN_OFFSET(0x318CD4 + 2), 10836 + 840);
|
||||
// }
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x61B8F6), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x622659), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade);
|
||||
// CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade);
|
||||
if (nMaxGrade > 70)
|
||||
{
|
||||
// 以下需要扩充类大小, 修改偏移
|
||||
CMem::WriteUInt(MAIN_OFFSET(0x87162 + 3), 0xB678 + nMaxGrade * 4 + nMaxGrade * 12);
|
||||
// CDataManager::set_reward_sp
|
||||
CMem::WriteUInt(MAIN_OFFSET(0x318C26 + 2), 10836 + 840);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x318C3B), nMaxGrade);
|
||||
CMem::WriteUInt(MAIN_OFFSET(0x318C68 + 2), 10836 + 840);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x318C79), nMaxGrade);
|
||||
// CDataManager::GetSpAtLevelUp
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x318CC4), nMaxGrade);
|
||||
CMem::WriteUInt(MAIN_OFFSET(0x318CD4 + 2), 10836 + 840);
|
||||
}
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x61B8F6), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x622659), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade);
|
||||
CMem::WriteUChar(MAIN_OFFSET(0x622941), nMaxGrade);
|
||||
|
||||
// SUBHOOK_SETUP(addServerHackCnt);
|
||||
// SUBHOOK_SETUP(put_header);
|
||||
@@ -878,9 +903,11 @@ void Lenheart()
|
||||
SUBHOOK_SETUP(Giveup_Game);
|
||||
// 用户每五分钟执行
|
||||
SUBHOOK_SETUP(CUserWorkPerFiveMin);
|
||||
|
||||
// SUBHOOK_SETUP(cusermake_basic_info);
|
||||
|
||||
// 每帧执行
|
||||
SUBHOOK_SETUP(TimerDispatcher_dispatch);
|
||||
// SUBHOOK_SETUP(TimerDispatcher_dispatch);
|
||||
|
||||
// SUBHOOK_SETUP(initWorldMapScript);
|
||||
|
||||
|
||||
@@ -117,4 +117,6 @@ typedef int (*fnAddMob)(int a1, int a2);
|
||||
|
||||
typedef int (*fninitWorldMapScript)(void *a1, void *a2, void *a3);
|
||||
|
||||
typedef int (*fncusermake_basic_info)(void *a1, void *a2, char a3);
|
||||
|
||||
__END_DECLS
|
||||
@@ -94,7 +94,8 @@ static void ReloadingScript(HSQUIRRELVM v, std::string FilePath)
|
||||
{
|
||||
// 爬取出所有的脚本文件
|
||||
std::vector<std::string> vec = Tool::GetListFilesR(FilePath);
|
||||
std::map<std::string, std::string> SquirrelFilePath;
|
||||
std::vector<std::pair<std::string, std::string>> SquirrelFilePath;
|
||||
// std::map<std::string, std::string>SquirrelFilePath;
|
||||
|
||||
for (auto it = vec.cbegin(); it != vec.cend(); ++it)
|
||||
{
|
||||
@@ -109,7 +110,7 @@ static void ReloadingScript(HSQUIRRELVM v, std::string FilePath)
|
||||
std::string ContentString(ContentStringStream.str());
|
||||
F.close();
|
||||
std::string RealContentString = IsencryptDecrypt(ContentString, FileName);
|
||||
SquirrelFilePath[FileName] = RealContentString;
|
||||
SquirrelFilePath.push_back({FileName, RealContentString});
|
||||
}
|
||||
|
||||
std::map<std::string, std::string> SquirrelLastFilePath;
|
||||
|
||||
Reference in New Issue
Block a user