游戏辅助 -- 获取人物属性代码编写
2023-03-14 23:00:30 时间
一、在上节课DLL注入窗口我们已经实现了注入dll,这节课我们利用线程注入
DWORD WINAPI 窗口函数地址(LPVOID arg) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); DLLTEST dt; dt.DoModal(); FreeLibraryAndExitThread(theApp.m_hInstance, 123);//自动卸载dll return 1; } BOOL CMFCDLLApp::InitInstance() { CWinApp::InitInstance(); DWORD 线程ID = 0; ::CreateThread(0, 0, 窗口函数地址, 0, 0, &线程ID); return TRUE; }
二、在窗口添加三个按钮,分别实现调试信息输出、解绑调试信息,获取护甲值
DWORD 读地址(UINT_PTR 地址) { __try { return *(DWORD*)地址; } __except (1) { return 0; } } VOID CALLBACK 护甲(HWND h, UINT arg2, UINT_PTR arg3_id, DWORD time) { KillTimer(h, 11111); const char* 参数1 = "player"; UINT_PTR 返回值 = 0; UINT_PTR 函数地址 = 0x60C1F0; __asm { push 参数1 call 函数地址 add esp, 4 mov 返回值, eax } DWORD 护甲 = 读地址(读地址(返回值 + 0xD0) + 0x174); char buf[256]; sprintf_s(buf, "护甲=%d ",护甲); printf(buf); }; void DLLTEST::OnBnClickedButton1() { HWND 游戏窗口句柄 = FindWindowA("GxWindowClassD3d", "魔兽世界"); ::SetTimer(游戏窗口句柄, 11111, 1, 护甲); } void DLLTEST::OnBnClickedButton2() { AllocConsole(); FILE* file = 0; freopen_s(&file, "CONOUT$", "w+t", stdout); } void DLLTEST::OnBnClickedGbtsck() { FreeConsole(); }
三、查看效果
相关文章
- 苹果未能在iOS 15.0.1中修补已被公开披露的零日漏洞
- 外媒:如果还在使用较旧机型则值得升级iPhone 13
- 部分iPhone13用户反应新MagSafe Wallet无法连接到Find My
- Google推出新地图工具以应对气候变化
- 华为手机升级到鸿蒙,耗电快咋办?试试这个方法,很多人都说有效
- 苹果 iOS 15 Messages App 出现 Bug,导致已保存的照片被删除
- 为什么大多数人用惯了iPhone之后,不愿意用回安卓手机?
- 库克又在逼你换iPhone13?八个Bug最严重的能使手机变砖
- 小技巧:如何在iPhone 13上体验诸多Google实用功能
- iOS 15为你的听力健康做了五件非常有意义的事
- iPhone 13系列槽点汇总:品控差,信号还差?
- 苹果“仍在调查”iOS 15中未修补的三个安全漏洞
- iOS 15 iCloud Private Relay漏洞泄露用户真实IP地址
- 安全研究人员怒斥苹果:长期无视iOS 15中三个重大漏洞
- Android 12.1曝光:锁屏界面一分为二 加入任务栏
- 苹果就忽略 iOS 漏洞向研究人员道歉,称其“仍在调查中”
- iFixit拆解iPhone 13 Pro:内部结构变化 维修变得更困难
- iPhone 13第三方换屏更难:Face ID会失效 即便官方配件也不行
- 用一篇文章,帮你了解交互设计方法论「渐进式披露」
- 让设计稿还原度更高!两款高手都在用的B端设计走查神器