第一步就是用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

智能判定魔兽是否在聊天状态相关推荐

  1. 【autoHotkey】 使用ahk读取内存判断魔兽争霸是否处于聊天状态

    [autoHotkey] 使用ahk读取内存判断魔兽争霸是否处于聊天状态 2009-12-18 16:43 转自: forum.ahkbbs.cn/thread-2442-1-1.html 现在网上流 ...

  2. soul服务器不稳定,soul聊天状态异常 消息发送失败

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. soul聊天状态异常,消息发送失败的原因及解决方法如下: 1.发不出消息(显示红色感叹号),一般是由于网络不稳定,建议更换网络或者 ...

  3. soul显示服务器异常,soul聊天状态异常 消息发送失败

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. soul聊天状态异常,消息发送失败的原因及解决方法如下: 1.发不出消息(显示红色感叹号),一般是由于网络不稳定,建议更换网络或者 ...

  4. XEP-0085:聊天状态通知

    本文的英文原文来自XEP-0085 XEP-0085:聊天状态通知 本文定义了一个XMPP协议扩展,用于沟通用户的聊天状态,从而表明聊天的好友是否正积极参与聊天,撰写邮件,暂时中止,无效的,或消失.本 ...

  5. 微信小程序+OLAMI自然语言API接口制作智能查询工具--快递、聊天、日历等

    微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...

  6. 工业智能网关实现工业设备数据采集和状态监控

    在工业物联网的体系架构中,在工业设备和云平台两个不同的通信网络中需要一个中间设备,那就是"工业智能网关". 它通过串口或网口连接现场设备PLC.仪器仪表.CNC数控机床.工业机器人 ...

  7. 魔兽怎么查服务器状态,如何查看魔兽世界服务器状态(查看游戏服务器状态的技巧)...

    魔兽世界怀旧服自从TBC即将到来的消息放出,不少玩家包括G哥在内都更加期待新区何时到来.与老区相比,新区的一切都是从头开始,看起来一切都很美好,但是看过了前夕的种种情况之后,期待新区这件事好像需要重新 ...

  8. 安卓手机卓android手机客户端,卓大师刷机专家|卓大师刷机pc Android 客户端 V2.3.5 安卓版...

    自动识别手:机信息,让您对于爱机了如指掌: 根据手机机型提供定制化的一键刷机解决方案: 提供当前机型最详实的ROOT教程和刷机教程: 支持一键获取ROOT权限和去除ROOT权限: 支持一键备份还原,提 ...

  9. 读取其他进程的内存-让程序提升Debug权限

    最近一直忙着写毕业论文,但对于我这种没语言天赋的人,写写实际做的工作还可以,但要写课题背景.意义什么的,头都要大了,憋了两天才憋出两页的绪论,我容易吗我... 所以这半个月也没时间更新博客,现在论文初 ...

最新文章

  1. Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
  2. linux ssh服务端下载文件,Linux SSH服务端配置文件设置
  3. System.Net.Mail和System.Web.Mail
  4. 开发人员不可不知的六大JavaScript框架 传统网站网页转移动端方式
  5. hdu 杭电题目分类
  6. NGUI_2.6.3_教程四(自定义Atlas,Font)
  7. 将对象序列化为字符串
  8. 二层交换机的安全方案与实施
  9. 记一次非典型MySQL排错
  10. java 保留小数点后N位数(若干位),几种实现的方式总结
  11. quartus联合仿真步骤
  12. 测试环境的搭建和配置
  13. RTSP RTMP HLS HTTP全功能流媒体播放器SkeyeExPlayer开发计划
  14. 闲谈IPv6-组播和广播
  15. 芝加哥打字机_芝加哥打字机不是打字机
  16. Quartz 2.4.0 源码解析
  17. UE4_直播RT输出到OBS教程
  18. git报错error: index uses extension, fatal: index file corrupt
  19. 动态规划_背包问题(01背包 完全背包)
  20. 【PyTorch】深度学习实践之CNN高级篇——实现复杂网络

热门文章

  1. 面板门限回归模型及Stata
  2. 现在参加Web前端培训后好就业吗?
  3. 常见对象_BigDecimal的加减乘除法的使用
  4. 啰里啰嗦学IOS CoreDate入门
  5. 趣味第一领衔互动娱乐新体验《江山美人》
  6. C++学习笔记(九)
  7. python元组启蒙半透明窗口无标题窗口tkinter
  8. 【油猴脚本】Hypothesis自定义标注颜色和透明度
  9. 正则匹配字符串中汉字及中文标点符号
  10. iPhone在降级时遇到1600错误怎么办?