DNF_DLL/test/dllmain.cpp

167 lines
4.6 KiB
C++
Raw Normal View History

2022-02-03 19:20:05 +08:00
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
2022-02-03 22:25:03 +08:00
2022-02-06 11:33:52 +08:00
2022-02-14 23:35:11 +08:00
2022-04-21 12:56:05 +08:00
#if defined LOCALHOSTS_SWITCH
2022-02-10 14:14:08 +08:00
void LenheartThread(void)
2022-02-03 22:25:03 +08:00
{
2022-02-07 03:31:00 +08:00
// 下方写全局变量
static int Nut头地址;
static int ;
static int ;
2022-02-03 19:20:05 +08:00
while (true)
{
2022-02-10 14:14:08 +08:00
Sleep(10);
2022-03-08 12:57:35 +08:00
if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6) = 1;
2022-03-16 10:03:39 +08:00
if ( == 1)//选频道界面 游戏初始化完毕
2022-02-03 22:25:03 +08:00
{
2022-04-11 19:44:03 +08:00
//hook::InitGameScript();
2022-02-03 22:25:03 +08:00
while (true)
{
Sleep(10);
2022-03-08 12:57:35 +08:00
if (DNFTOOL::GetExeNutWrtNum(61) != 0 && Nut头地址 == 0)Nut头地址 = DNFTOOL::GetExeNutWrtNum(61);
2022-02-03 22:25:03 +08:00
//if (GetExeNutWrtNum(61 != 0))属性头地址 = GetExeNutWrtNum(61);
2022-03-08 12:57:35 +08:00
if (DNFTOOL::GetExeNutWrtNum(0) == 666)
2022-02-03 22:25:03 +08:00
{
2022-05-07 14:31:17 +08:00
std::cout << "写成功" << std::endl;;
2022-03-08 12:57:35 +08:00
DNFTOOL::SetExeNutWrtNum(0, 0);
DNFTOOL::SetNutArrNum(Nut头地址 , 20, 0);
2022-02-03 22:25:03 +08:00
}
}
}
2022-02-03 19:20:05 +08:00
}
}
2022-04-21 12:56:05 +08:00
#else
void LenheartThread()
{
while (true)
{
2022-05-23 21:37:38 +08:00
static int ;
2022-04-21 12:56:05 +08:00
if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6) = 1;
if ( == 1)
{
2022-05-23 21:37:38 +08:00
Sleep(3000);
//获取验证服务器ip
std::string Rqip = DNFTOOL::GetIP();
//std::cout << "验证服务器IP:" << Rqip << std::endl;
//获取本机IP
std::string MyIp;
httplib::Client* IPCliObj = NULL;// http连接主体
IPCliObj = new httplib::Client("ip.json-json.com");//初始化 http 对象
auto MyIpres = IPCliObj->Get("/");
if (MyIpres->status == 200)//如果返回包正常
{
MyIp = MyIpres->body;//取得date
}
//std::cout << "本机IP:" << MyIp << std::endl;
//已经得到了本机IP
//获取验证IP
2022-04-21 12:56:05 +08:00
std::string ippack;
2022-05-23 21:37:38 +08:00
//获取ExeIP
2022-04-21 12:56:05 +08:00
int gameip = *(int*)0x1AE9CEC;
2022-05-23 21:37:38 +08:00
//如果ExeIP 等于 192.168.200.131
2022-04-21 12:56:05 +08:00
if (gameip == 3735601)
{
ippack = MyIp;
}
else
{
wchar_t* wgameip = (wchar_t*)0x1AE9CEC;
2022-04-21 13:02:35 +08:00
DNFTOOL::Wchar_tToString(ippack, wgameip);
2022-04-21 12:56:05 +08:00
}
2022-05-23 21:37:38 +08:00
//std::cout << "验证IP:" << ippack << std::endl;
//已经获取了要发送的验证IP
2022-04-21 12:56:05 +08:00
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 对象
2022-05-07 14:31:17 +08:00
ParamsObj.emplace("ip", enstring.c_str());//加入账号数据进数据包
auto res = CliObj->Post("/yz", ParamsObj);
2022-04-21 12:56:05 +08:00
if (res->status == 200)//如果返回包正常
{
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)
{
hook::InitGameScript();
2022-05-23 21:37:38 +08:00
return;
2022-04-21 12:56:05 +08:00
}
else
{
2022-05-23 21:37:38 +08:00
//ExitProcess(0);
2022-04-21 12:56:05 +08:00
}
}
else
{
2022-05-23 21:37:38 +08:00
//ExitProcess(0);
2022-04-21 12:56:05 +08:00
}
2022-05-23 21:37:38 +08:00
return;
2022-04-21 12:56:05 +08:00
}
}
}
#endif
2022-03-06 20:11:13 +08:00
2022-02-03 19:20:05 +08:00
__declspec(dllexport) void Lenheart()
{
DWORD threadID;
2022-02-10 14:14:08 +08:00
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)LenheartThread, NULL, 0, &threadID);
2022-03-06 20:11:13 +08:00
2022-02-03 19:20:05 +08:00
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
2022-05-07 14:31:17 +08:00
2022-05-08 07:29:20 +08:00
#if defined COUTWINDOWS_SWITCH
2022-05-07 14:31:17 +08:00
AllocConsole();
freopen(("CONOUT$"), ("w"), stdout);
freopen(("CONOUT$"), ("w"), stderr);
freopen(("CONIN$"), ("r"), stdin);
#endif
2022-03-08 12:57:35 +08:00
hook::RegisterHook();
2022-02-03 19:20:05 +08:00
Lenheart();
2022-02-10 14:14:08 +08:00
break;
2022-02-03 19:20:05 +08:00
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}