智能判定魔兽是否在聊天状态
第一步就是用CE查内存啦,配合魔兽窗口化工具大概需要二十分钟
1.20E :0x0045CB8C
1.24E :Game.dll+0x0AE8450
1.21 :War3.exe+5CB8C
1.26 :Game.dll+AD15F0
其他版本:Game.dll+ABDFE0
//由进程名获取进程ID,【出自百度空间,具体出处无法考证】
DWORD GetProcessIdFromName(LPCTSTR name)
{
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if( !Process32First(hSnapshot,&pe) )
return 0;
do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if( Process32Next(hSnapshot,&pe)==FALSE )
break;
if(strcmp(pe.szExeFile,name) == 0)
{
id = pe.th32ProcessID;
break;
}
} while(1);
CloseHandle(hSnapshot);
return id;
}
//枚举进程模块,查找Game.dll基址,【出自MSDN】
DWORD ListProcessModules( DWORD dwPID )
{
HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32;
// Take a snapshot of all modules in the specified process.
hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
if( hModuleSnap == INVALID_HANDLE_VALUE )
{
//printError( "CreateToolhelp32Snapshot (of modules)" );
return( FALSE );
}
// Set the size of the structure before using it.
me32.dwSize = sizeof( MODULEENTRY32 );
// Retrieve information about the first module,
// and exit if unsuccessful
if( !Module32First( hModuleSnap, &me32 ) )
{
//printError( "Module32First" ); // Show cause of failure
CloseHandle( hModuleSnap ); // Must clean up the snapshot object!
return( FALSE );
}
// Now walk the module list of the process,
// and display information about each module
CString name;
do
{
name=me32.szModule;
if (name=="Game.dll")
{
CloseHandle( hModuleSnap );
return (DWORD) me32.modBaseAddr;
}
} while( Module32Next( hModuleSnap, &me32 ) );
// Do not forget to clean up the snapshot object.
CloseHandle( hModuleSnap );
return( 0 );
}
//读取对应内存
int isInput()
{
int IsInput;
DWORD dwProcID;
//提高权限
HANDLE hToken;
HWND _hWnd=::FindWindow(NULL,"Warcraft III");
::OpenProcessToken(::GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
LUID uID;
::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&uID);
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=uID;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
::AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
::CloseHandle(hToken);
//打开进程
::GetWindowThreadProcessId(_hWnd, &dwProcID);
HANDLE hProc = ::OpenProcess(PROCESS_VM_READ|PROCESS_VM_WRITE, FALSE, dwProcID);
HWND hd=FindWindow(NULL,"WarIIIKey 1.3");
//1.20E
if (IsDlgButtonChecked(hd,IDC_120E))
{
int b=::ReadProcessMemory(hProc, (LPVOID)0x0045CB8C, (LPVOID)&IsInput,4, NULL);
::CloseHandle(hProc);hProc=NULL;
return IsInput;
}
//1.24E
if (IsDlgButtonChecked(hd,IDC_124E))
{
int b=::ReadProcessMemory(hProc, (LPVOID)(hModule+0x0AE8450), (LPVOID)&IsInput,4, NULL);
::CloseHandle(hProc);hProc=NULL;
return IsInput;
}
//1.26
if (IsDlgButtonChecked(hd,IDC_126))
{
//DWORD hModule=ListProcessModules(GetProcessIdFromName("War3.exe"));
int b=::ReadProcessMemory(hProc, (LPVOID)(hModule+0xAD15F0), (LPVOID)&IsInput,4, NULL);
::CloseHandle(hProc);hProc=NULL;
return IsInput;
}else{
//DWORD hModule=ListProcessModules(GetProcessIdFromName("War3.exe"));
int b=::ReadProcessMemory(hProc, (LPVOID)(hModule+0xABDFE0), (LPVOID)&IsInput,4, NULL);
::CloseHandle(hProc);hProc=NULL;
return IsInput;
}
::CloseHandle(hProc);hProc=NULL;
return IsInput;
}
转载于:https://www.cnblogs.com/zhijzan/archive/2012/06/30/2571133.html
智能判定魔兽是否在聊天状态相关推荐
- 【autoHotkey】 使用ahk读取内存判断魔兽争霸是否处于聊天状态
[autoHotkey] 使用ahk读取内存判断魔兽争霸是否处于聊天状态 2009-12-18 16:43 转自: forum.ahkbbs.cn/thread-2442-1-1.html 现在网上流 ...
- soul服务器不稳定,soul聊天状态异常 消息发送失败
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. soul聊天状态异常,消息发送失败的原因及解决方法如下: 1.发不出消息(显示红色感叹号),一般是由于网络不稳定,建议更换网络或者 ...
- soul显示服务器异常,soul聊天状态异常 消息发送失败
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. soul聊天状态异常,消息发送失败的原因及解决方法如下: 1.发不出消息(显示红色感叹号),一般是由于网络不稳定,建议更换网络或者 ...
- XEP-0085:聊天状态通知
本文的英文原文来自XEP-0085 XEP-0085:聊天状态通知 本文定义了一个XMPP协议扩展,用于沟通用户的聊天状态,从而表明聊天的好友是否正积极参与聊天,撰写邮件,暂时中止,无效的,或消失.本 ...
- 微信小程序+OLAMI自然语言API接口制作智能查询工具--快递、聊天、日历等
微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...
- 工业智能网关实现工业设备数据采集和状态监控
在工业物联网的体系架构中,在工业设备和云平台两个不同的通信网络中需要一个中间设备,那就是"工业智能网关". 它通过串口或网口连接现场设备PLC.仪器仪表.CNC数控机床.工业机器人 ...
- 魔兽怎么查服务器状态,如何查看魔兽世界服务器状态(查看游戏服务器状态的技巧)...
魔兽世界怀旧服自从TBC即将到来的消息放出,不少玩家包括G哥在内都更加期待新区何时到来.与老区相比,新区的一切都是从头开始,看起来一切都很美好,但是看过了前夕的种种情况之后,期待新区这件事好像需要重新 ...
- 安卓手机卓android手机客户端,卓大师刷机专家|卓大师刷机pc Android 客户端 V2.3.5 安卓版...
自动识别手:机信息,让您对于爱机了如指掌: 根据手机机型提供定制化的一键刷机解决方案: 提供当前机型最详实的ROOT教程和刷机教程: 支持一键获取ROOT权限和去除ROOT权限: 支持一键备份还原,提 ...
- 读取其他进程的内存-让程序提升Debug权限
最近一直忙着写毕业论文,但对于我这种没语言天赋的人,写写实际做的工作还可以,但要写课题背景.意义什么的,头都要大了,憋了两天才憋出两页的绪论,我容易吗我... 所以这半个月也没时间更新博客,现在论文初 ...
最新文章
- Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
- linux ssh服务端下载文件,Linux SSH服务端配置文件设置
- System.Net.Mail和System.Web.Mail
- 开发人员不可不知的六大JavaScript框架 传统网站网页转移动端方式
- hdu 杭电题目分类
- NGUI_2.6.3_教程四(自定义Atlas,Font)
- 将对象序列化为字符串
- 二层交换机的安全方案与实施
- 记一次非典型MySQL排错
- java 保留小数点后N位数(若干位),几种实现的方式总结
- quartus联合仿真步骤
- 测试环境的搭建和配置
- RTSP RTMP HLS HTTP全功能流媒体播放器SkeyeExPlayer开发计划
- 闲谈IPv6-组播和广播
- 芝加哥打字机_芝加哥打字机不是打字机
- Quartz 2.4.0 源码解析
- UE4_直播RT输出到OBS教程
- git报错error: index uses extension, fatal: index file corrupt
- 动态规划_背包问题(01背包 完全背包)
- 【PyTorch】深度学习实践之CNN高级篇——实现复杂网络