游戏外挂四之利用CE和OD查找被选中怪物和怪物列表
Q Q:408365330 E-Mail:egojit@qq.com
这一节我们利用CE和OD去找到被选中的怪物对象,和怪物列表。从而为后面自动遍历怪物实现自动打怪的外挂做铺垫。当然在这之前我们得了解汇编中数组和列表是怎么定位的。一般是[eax*4+0x0063fedd],这样通过自增通用寄存器eax去实现数组下标。0x0063fedd在这里就是一个基址。因为32位系统的地址是4字节我想这个大家都非常清楚,所以乘以4.废话不多说了,现在开始打开游戏盒CE。并且将游戏进程附加到CE中去。
选中两者之间的值。输入值1和值0xFFFFFFFF。这是为了过滤掉0值。否则多查询出很多值。同时为了更快速的查询,我将内存扫描选项设置成00010000和7FFEFFFF之间的内存中进程查找。那么大家肯定会问,那如下的内存呢?如果我们要找的值在余下的内存中怎么办??这个绝不用当心,如果对windows操作系统内存比较了解很容易知道,我设置的这个区间真好是windows的用户模式区间。我们的程序都是在这个区间中的。0x00000000至0x0000FFFF是空指针赋值区。主要是用来辅助程序员捕捉空指针赋值。0x80000000至0xFFFFFFFF是内核模式分区,这个空间是2G。在内核模式分区和用户模式分区之间的是64k禁入分区。所以大家毫无当心的在这个内存区间中去查找,肯定能查到我们想要的值。
第一次查询出的是一个庞大的数字。然后我们将扫描类型改成“未改变的”,然后查询,这样重复几次。然后我们在游戏中去选中一个怪。
然后将将扫描类型改成“改变的”,在次查询。再选中其它的怪去查询改变的值,这样不停的改变选中的怪去查询,直到查询出几个值,我这里查询出一个值。
可以看出它的值是65535。当时我没选中任何怪,说明未选中怪的时候这个内存中的值是0000FFFFh(16进制)
我们已经找出这个被选中怪id存放的地址。
然后将这个值选中到被选取,右击被选取数据"找出什么访问了这个地址"。弹出一个对话框,可以看到这样一行汇编指令:“004adb43 mov eax,[edi+00001478]”
我们将这行代码记录下来。这个时候关闭CE,我们需要打开另一个外挂人员和破解人员必备动态调试工具OD。首先来了解下OD工作区:
1区反汇编代码区,这个区是程序被反汇编器放汇编出的汇编指令。
2区是寄存器区。这里显示了CPU中的寄存器,我们可以在动态调试的时候查看下寄存器的变化。
3区是内存注释区
4区是内存区,这里显示了内存状态。
5区是栈区,这里会显示程序在调用过程中堆栈的变化。
打开OD并且附加游戏进程。
然后
右击转的表达式,然后输入我们记录的那个地址004adb43。跳到访问被选中怪物id存放的地址的汇编指令那个地方。MOV EAX,DWORD PTR DS:[EDI+1478]这样一行代码。就是将被选中怪物的ID放到EAX寄存器。CMP EAX,0FFFF紧接着这行代码。0000FFFF是没有怪物被选中时DS:[EDI+1478]中的值。
MOV ECX,DWORD PTR DS:[EAX*4+312DF20] 后面的DS:[EAX*4+312DF20]就是汇编中集合的访问方式。312DF20是基址,那么312DF20+0就是这个数组的第一个元素。我们猜测这个数组存放的就是怪物数组。
我们在OD的命令行中输入dd 0312DF20以堆栈形式转储。我们可以看到一个一个对象地址在这个数组中,这个就是怪物包括玩家的数组。当然有一个熟悉区别它是怪物还是其它对象。
我们进入这个数组中的第二个对象。右击第二个数组-》数据窗口跟随进入的第二个对象,可以看到+c这个位置就是对象数组下标是1.恭喜我们已经找到对象数组了。同时我们知道只要是放入[eax+00001478]中的id就是被选中怪物。这个就到这里,下一节分析对象属性。
游戏外挂四之利用CE和OD查找被选中怪物和怪物列表的更多相关文章
- 一步步用python制作游戏外挂【转】
转自:http://www.cnblogs.com/xsmhero/archive/2013/01/03/2842973.html 玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过 ...
- 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程
详解游戏辅助编程 [目录] 1-什么是Windows API 2-Windows进程 3-Windows 的内存的运行原理 4-windows 中句柄的概念 5-Windows的变量类型 6-辅助实现 ...
- Python论做游戏外挂,Python输过谁?
玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢? 我打开了4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜 ...
- 用Python制作游戏外挂(上)
源地址:http://eyehere.net/2012/python-game-bot-autopy-1/ 悲剧成我这样的人,我知道肯定不止我一个,所以我一点都不悲伤:-( 所以我打开了4399小游戏 ...
- C#简单游戏外挂制作(以Warcraft Ⅲ为例)
网上有很多外挂制作的教程,大多是讲针对大型网络游戏的,主要包含一些抓包.反汇编.C++的知识综合.事实也如此,常见的外挂都是使用VC++写的,从来没有过C#或者其他.NET语言编写的外挂. 作为微软. ...
- JAVA 8.20 游戏:四子连(Java&C++)
(游戏:四子连 )四子连是一个两个人玩的棋盘游戏,在游戏中,玩家轮流将有颜色的棋子放在一个六行七列的垂直悬挂的网格中: 这个游戏的目的是在对手实现一行.一列或者一条对角线上有四个相同颜 ...
- Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控
目录 1.环境介绍 2.服务监控 2.1 加入依赖 2.2 修改配置文件 2.3 修改启动文件 2.4 监控服务 2.5 小结 3. 利用hystrix实现消费服务熔断 3.1 加入服务熔断 3.2 ...
- 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题
在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)
正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...
随机推荐
- Redis的Replication(复制)
文件并发(日志处理)--队列--Redis+Log4Net 分布式中使用Redis实现Session共享(二) http://www.cnblogs.com/stephen-liu74/archive ...
- apache2.4配置Django1.7运行环境
系统环境Centos 6.5 这篇文章不适用6以下的系统,因为会碰到这个错误 [Mon Sep 22 18:13:02 2014] [error] [client 10.209.75.90] Trun ...
- C#:注册组件
注册flash 为例: 代码比较差 仅供学习参考 /// <summary> /// 注册组件 /// </summary> private static void Regis ...
- linux文件基本属性
在Linux中第一个字符代表这个文件是目录.文件或链接文件等等. 当为[ d ]则是目录 当为[ - ]则是文件: 若是[ l ]则表示为链接文档(link file): 若是[ b ]则表示为装置文 ...
- 磁盘IO
基本概念: 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,个人认为对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不 ...
- [原]ComFriendlyWaitForSingleObject
structThreadParam { unsignedint p1;// +00h ebp-24h unsignedint p2;// +04h ebp-20h unsignedint cookie ...
- 基于Apache+php+mysql的许愿墙网站的搭建create database xyq; //创建xyq数据库
1.准备CentOS7与CentOS5的基础配置 2.在两台虚拟机中配置yum. 3.在CentOS7中安装httpd与php与php-mysql PS:截图时已安装 CentOS7 关闭防火墙与se ...
- alert效果
<!DOCTYPE html> <head> <meta charset="utf-8" /> <title>拉伸效果</ti ...
- (收集)linux环境下乱码的解决方法
**************************** 就是从数据库中取出来时,在存入linux的文件里时,在字符流时制定编码格式.代码如下: FileOutputStream fos=new Fi ...
- contos7 安装netcore 和vscode
安装netcore 参考 http://www.cnblogs.com/hohoa/p/5691071.html 1 在root下新建一个文件夹"dotnet"用来放SDK,然后用 ...