161 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
| // dllmain.cpp : 定义 DLL 应用程序的入口点。
 | |
| #include "pch.h"
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #if defined LOCALHOSTS_SWITCH
 | |
| void LenheartThread(void)
 | |
| {
 | |
|     //  下方写全局变量
 | |
|     static int Nut头地址;
 | |
|     static int 属性头地址;
 | |
|     static int 可开始执行判断;
 | |
|     while (true)
 | |
|     {
 | |
|         Sleep(10);
 | |
|         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6)可开始执行判断 = 1;
 | |
|         if (可开始执行判断 == 1)//选频道界面  游戏初始化完毕
 | |
|         {
 | |
|             //hook::InitGameScript();
 | |
|             while (true)
 | |
|             {
 | |
|                 Sleep(10);
 | |
|                 if (DNFTOOL::GetExeNutWrtNum(61) != 0 && Nut头地址 == 0)Nut头地址 = DNFTOOL::GetExeNutWrtNum(61);
 | |
|                 //if (GetExeNutWrtNum(61 != 0))属性头地址 = GetExeNutWrtNum(61);
 | |
|                 if (DNFTOOL::GetExeNutWrtNum(0) == 666)
 | |
|                 {
 | |
|                     std::cout << u8"写成功" << std::endl;;
 | |
|                     DNFTOOL::SetExeNutWrtNum(0, 0);
 | |
|                     DNFTOOL::SetNutArrNum(Nut头地址 , 20, 0);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| #else
 | |
| void LenheartThread()
 | |
| {
 | |
|     static int 可开始执行判断;
 | |
|     std::string Rqip = DNFTOOL::GetIP();
 | |
| 
 | |
| 
 | |
|     std::string MyIp;
 | |
|     httplib::Client* IPCliObj = NULL;// http连接主体
 | |
|     IPCliObj = new httplib::Client("ip.json-json.com");//初始化 http 对象
 | |
|     auto res = IPCliObj->Get("/");
 | |
|     if (res->status == 200)//如果返回包正常
 | |
|     {
 | |
|         MyIp = res->body;//取得date      
 | |
|     }
 | |
| 
 | |
|     while (true)
 | |
|     {
 | |
|         Sleep(10);
 | |
| 
 | |
|         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6)可开始执行判断 = 1;
 | |
|         if (可开始执行判断 == 1)
 | |
|         {
 | |
|             std::string ippack;
 | |
|             int gameip = *(int*)0x1AE9CEC;
 | |
| 
 | |
|             if (gameip == 3735601)
 | |
|             {
 | |
|                 ippack = MyIp;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 wchar_t* wgameip = (wchar_t*)0x1AE9CEC;
 | |
|                 DNFTOOL::Wchar_tToString(ippack, wgameip);
 | |
|             }
 | |
| 
 | |
| 
 | |
|             LenheartBase::CBASE64 bb;
 | |
|             ippack += "nima";
 | |
|             std::string rsastring = bb.RsaPriEncrypt(ippack, Pri_key);
 | |
|             std::string enstring = bb.encode(rsastring);
 | |
| 
 | |
| 
 | |
| 
 | |
|             httplib::Client* CliObj = NULL;// http连接主体
 | |
|             CliObj = new httplib::Client(Rqip + ":9007");//初始化 http 对象
 | |
| 
 | |
|             httplib::Params ParamsObj;//新建 Params 对象
 | |
|             ParamsObj.emplace("zz", enstring.c_str());//加入账号数据进数据包
 | |
|             auto res = CliObj->Post("/zz", ParamsObj);
 | |
| 
 | |
|             if (res->status == 200)//如果返回包正常
 | |
|             {
 | |
|                 //res->status;
 | |
|                 std::string date = res->body;//取得date
 | |
|                 std::string base64code = bb.decode(date);
 | |
|                 std::string decrypt_text = bb.RsaPriDecrypt(base64code, Pri_key);
 | |
|                 long long redate = atoll(decrypt_text.c_str()) / 1000;
 | |
|                 time_t myt = time(0);
 | |
|                 long long nowdate = (long long)myt;
 | |
| 
 | |
| 
 | |
|                 __int64 absnum = abs(nowdate - redate);
 | |
|                 if (absnum < 18000)
 | |
|                 {
 | |
|                     //RegisterNut();
 | |
|                     //RunNut();
 | |
|                     hook::InitGameScript();
 | |
|                     while (true)
 | |
|                     {
 | |
|                         Sleep(16000);
 | |
|                     }
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     ExitProcess(0);
 | |
|                     break;
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 ExitProcess(0);
 | |
|                 break;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| __declspec(dllexport) void Lenheart()
 | |
| {
 | |
|     DWORD threadID;
 | |
|     CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)LenheartThread, NULL, 0, &threadID);
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| BOOL APIENTRY DllMain( HMODULE hModule,
 | |
|                        DWORD  ul_reason_for_call,
 | |
|                        LPVOID lpReserved
 | |
|                      )
 | |
| {
 | |
| 
 | |
|     switch (ul_reason_for_call)
 | |
|     {
 | |
|     case DLL_PROCESS_ATTACH:
 | |
|         //Sleep(5000);
 | |
|         //std::cout << HOOK() << std::endl;
 | |
|         hook::RegisterHook();
 | |
|         Lenheart();
 | |
|         break;
 | |
|     case DLL_THREAD_ATTACH:
 | |
|     case DLL_THREAD_DETACH:
 | |
|     case DLL_PROCESS_DETACH:
 | |
|         break;
 | |
|     }
 | |
|     return TRUE;
 | |
| }
 | |
| 
 |