天龙八部 找怪物ID

news/2025/3/19 8:24:24/

游戏:天龙八部
版本:0.35.0691
主要工具:OD+CE+GE
开发环境:VS2005
作者:勿在浮沙筑高 转载文章请标明出处http://bbs.bpsend.com

要点:从怪物的名字着手,找到怪物的各种信息,分析出游戏定义的描述怪物信息的关键结构,分析汇编代码还原成C++高级语言。

由于有了一的基础,对一中已经有所讲解的内容,这里不再重复,下面开始:

1. 运行Game.exe,登陆,进入游戏。
2. 来到野外有怪的地方,我这里




我们看到边上有好多的“沙坡狼”,怪物的名字当然就是字符型收索,这里我使用GE来收 “沙坡狼”,结果如下:



有678个结果。我们需要减少这个数值。
在地图上跑动,注意这里不要切换地图,来到一个新的地方(确保边上怪物的名字和刚才的不同),我来到的地方如下:



如你所见,边上的怪物变成了“恶猿”,我们在上面的收索结果里面再次收“恶猿”。得到结果如下:



结果已经只剩下6个,而且我们还注意到,地址之间基本是相差0x40(64)大小(所有怪物的结构是相同的,所以地址相差大小相同,从这里我们也可以判断出,基本这些地址我们找对了,而且还可以初步估计,怪物的结构大小是0x40)。

到这里GE的工作基本就结束了,下面OD出马。

3. 运行OD,附加到Game.exe进程,F9让游戏跑起来。然后使用如下db命令来查看我们前面找到的内存地址(这里我们就看第一个0x02897E18):



如上图,我们看到好几个“恶猿”字样,看来我们已经找到存储怪物数组的内存地址。由于该地址是动态变化的,切换地图就会变化,所以我们需要做的就是找出它的基地址。

4. 对里面比较靠前的怪物的内存地址下内存写如断点,我这里看到最前面的是“散落的宝物”:



5. 这样可能很快OD就会断到,因为游戏在不断刷新怪物数组。如果你没断到,那随便在地图上跑动一下,有新的怪出现,OD肯定断下,断到这里(不管你断在哪句,这附近代码都是可以的):



断下后,我们看到处于系统领空,Alt+K查看调用堆栈:



接着Ctrl+F9回到Game领空:



下面贴出该段的部分我们需要的代码:



我们看到ecx = edi + 0x10,edi = eax,这里怎么找eax呢?
还记得笔记一中讲过吗,这里eax也刚好是call的返回值,F7进call,看到代码比较简单,如下:

  

这段代码虽然短,不过包含的东西可不少,我们来分析分析其中比较重要的几句(我没有分析到的请自己理解):
首先cmp edx, 100。一个比较指令,显然是判断怪物数组不能大于0x100(也就是256)。
然后有句shl eax ,6移位指令,左移6位,相当于乘以2的6次方,也就是2^6=64,现在请你好好回忆回忆,这个64我们是不是好象在哪儿见过???
哈哈~~~就是上面我们用GE找到的6个地址,它们之间的大小不都是0x40吗?0x40刚好就是64啊,呵呵,要是你到现在还没理解,那我没办法,不多说…
再有一句inc edx,不就是怪物数组当前的总数加1吗?
接着mov dword ptr [ecx+407C],edx,没什么好说的了吧,将新的数组的总数大小写回。
这里我们就是要找ecx!!!退回函数调用的地方,继续向上去分析ecx是怎么来的。

6. 分析ecx




所以我们需要去查找ebx。

向上一直找,终于看到mov ebx, ecx,下图:



这里的ecx又是父函数传递进来的,没什么好说的,Ctrl+F9去到父函数查看。

TMD,看来还有点麻烦啊,来到父函数,代码如下:




哈哈哈哈哈,看到那句了没:mov ecx, dword ptr [627864]

基本就是我们要的了~为了确定,我们在该句下断,哈哈,值对。

7。。到这里怪物的基址也就找到了,剩下的就是分析怪物的结构,写出高级语言,和一说的一样,这些都只是时间的问题而已,我不讲。

本讲最终结果
怪物数组地址:[0x627864] + 0x407C + 0x7C + 0x10 – 0x20 + 0x40 * i ( 0<= i< 256)
大小:0x40
Me:以前老看不懂这里,现在根据基它教程,对这了有了一个自己的了解,解说一下:

我认为上面的是错的,根据数据,得到基址和偏移如下:

62883C+7c+10+0x40 * i ( 0<= i< 256)

今天工作基本完成,下一讲分析人物背包物品基地址和对应的数据结构。

作为本讲的结束,依然来张测试代码的截图:


http://www.ppmy.cn/news/846641.html

相关文章

天龙八部资源提取源代码

网上找的《天龙八部》资源读取&#xff0c;先拷贝下来存储在这里&#xff0c;希望有读取文件夹的功能&#xff01;最近一直在愁读取文件夹 #include <stdio.h>#include <string>#include <windows.h>#include <shlobj.h>using namespace std;int do16b…

也谈《天龙八部》

金庸老先生的经典巨作《天龙八部》又被翻拍了一次&#xff0c;随着电视剧的播映&#xff0c;网络上不少吐槽的声音。无论是对于演员的选择&#xff0c;场景布置&#xff0c;道具选择等等都成了网友们吐槽的目标。其实&#xff0c;这些都是很正常的。一直以来电视剧的拍摄都会面…

天龙八部技术分析报告

刘洋通过一段时间对天龙八部这款游戏进行分析研究&#xff0c;主要从客户端入手&#xff0c;从技术角度学习天龙八部游戏中各种实现机制。最终写成此文&#xff0c;献给搜狐游戏&#xff0c;以表敬意。本文主要分为三个部分&#xff0c;分别是1 天龙八部基本技术实现技术分析&a…

天龙八部服务器列表文件,天龙八部服务端目录说明

大师帮我看下怎么不能启动了。 Last login: Mon Jul 5 20:26:46 2010 from 192.168.1.2 [[email protected] ~]# cd /home/tlbb/Server [[email protected] Server]# ./Login_fix (###) main... (-1208624928)(T02010-7-5_20:27:43 T10.0870) Login Starting... (1007052027)(…

联想笔记本声音太小怎么办_联想笔记本电脑没声音了怎么办(大学生如何选择笔记本电脑)...

笔记本电脑在使用过程中会遇到没有声音了&#xff0c;导致没声音的原因分为软件和硬件两方面&#xff0c;软件方面主要包括&#xff1a;静音设置、声卡驱动、病毒入侵等;硬件方面主要就是耳机、接口等问题。 对于常规的笔记本电脑问题解决策略都是先软件后硬件。 静音设置 1.先…

matlab删除文件及文件夹的操作

1.删除文件 delete(filename) 2. 删除文件夹 删除空文件夹rmdir(dirname)删除文件夹(无论是否为空)rmdir(dirname&#xff0c;s)3. 其他方法 调用doc命令 system("del filename")

Redis_安装配置(2)

目录 一、安装redis 1、安装gcc依赖 2、下载并解压安装包 3、编译 4、安装 5、设置全局命令 二、启动redis 1、前台启动 2、后台启动 2.1 修改redis.conf文件 2.2 使用指定配置启动redis 2.3 kill redis的进程 3、开机启动 三、配置redis 远程访问设置 设置密码…

shell脚本应用

一、条件测试 1、test判断 1&#xff09;判断结果类型 真 假 2&#xff09;判断语法 [rootcentos01 ~]# test -d /boot && echo "YES" 测试boot是目录显示YES [rootcentos01 ~]# [ -d /boot ] && echo "yes" 测试boot是目录显示YES …