找回密码
 加入
搜索
查看: 4750|回复: 6

[原创] [WOW一步一步写外挂]<二>OBJ的数据结构

  [复制链接]
发表于 2011-12-3 14:54:48 | 显示全部楼层 |阅读模式
本帖最后由 真会走路的废柴 于 2011-12-3 14:59 编辑

帖子兼顾答疑,有问题跟帖或者是PM我皆可

在外面电脑上写的 ,代码部分比较乱 凑合看吧
这里主要介绍OBJ的数据结构,包含了 物品 包裹 UNIT PLAYER 等
首先 这个OBJ的结构是什么样子的呢,他的地址构成是怎么样的呢,看下例

$OBJManager 这个是OBJ管理的入口地址
$FirstObj 这个是第一个OBJ的偏移地址
$NextObj 这个是下一个OBJ的偏移地址

那么
$OBj = _BMREADMEMORY($wow_Hwnd,$OBJManager,"PTR")
上句得到了OBJMANAGE结构的入口
$Current= _BMREADMEMORY($wow_Hwnd,$OBj + $FirstObj,"PTR")
上句得到了 OBJMANAGE结构中 的第一个OBJ元素
$NEXT = _BMREADMEMORY($wow_Hwnd,$Current+ $NextObj ,"PTR")
上句得到了 OBJMANAGE结构中的 下一个元素
结构中第一个元素的地址是由入口地址偏移一个第一个OBJ地址得到
然后下面的每个元素都是上一个元素 偏移一个 $NextObj  的地址得到

这里得到的$Current,$NEXT  都是各个元素的基址

下面我们如何得知这个元素是哪种类型(物品,玩家,NPC,包裹等)
这里我们需要用到一个 偏移地址 $OBJTYPE
$TYPE = _BMREADMEMORY($wow_Hwnd,$Current+$OBJTYPE,"int")
这里计算得到的$TYPE就是该元素的类型 ,1代表物品,2代表容器,3表示是NPC,怪物等UNIT,4表示是其他玩家,5表示是动态物品(邮箱这种类型的)
$TYPE类型共计 1,2,3,4,5,6,7 7种类型
那么完整代码如下
local $Obj = _bmreadmemory($wow_hwnd,$OBJManager,"PTR")
local $Current = _bmreadmemory($wow_hwnd,$Obj+$FirstObj ,"PTR")

while 1
local $Type = _bmreadmemory($wow_hwnd,$Current +$OBJTYPE,"INT")
switch $Type
    case 1
      return "物品"
    case 2
      return "容器"
    case 3
      ......
    case else
     exitloop
endswitch
local $Next = _bmreadmemory($wow_hwnd,$Current +$NextObj ,"PTR")
if $Next = $Current or $Next <= 0 then ;这里表示结构树已经结束了
  exitloop
else
   $Current = $next
endif
wend


以上是OBJ的结构树类型。


下面将用具体的代码示例来表示结构树中包含的数据信息
我们现在来尝试读取 某个NPC的一些信息
包含了 血量 $Unit_Hp,最大血量$Unit_Hp_Max,坐标,$Unit_X,$Unit_Y,$Unit_Z, 方向$Unit_R
那么结构是什么样子的呢
$Hp = _bmreadmemory($wow_hwnd, _bmreadmemory($wow_hwnd,$Current+$Info_Table,"ptr")+$Unit_Hp    ,"int")
血量等信息 他是存储在一个 INFO_TABLE的表中,这个表里面包含了这个UNIT的所有的 “描述” 这个描述信息包含了哪些内容稍后介绍
$X = _bmreadmemory($wow_hwnd,$Current+$Unit_X,"float")
坐标这个信息 他是直接由基址+ 偏移得到的 而没有存储在描述表中,因为坐标这个信息并不属于描述结构
这里要注意的是 值的类型,血量和最大血量等 他是一个 INT类型 而坐标一般都是 FLOAT 浮点类型。而GUID等一般都是一个 UINT64 的64位长整数类型。



果然在外面 手里没有系统的代码 写起来都比较麻烦
发表于 2011-12-3 16:29:48 | 显示全部楼层
终于更新~\(≧▽≦)/~啦啦啦
发表于 2011-12-7 09:10:42 | 显示全部楼层
支持
发表于 2011-12-7 11:55:18 | 显示全部楼层
强烈支持.....
发表于 2011-12-9 08:58:12 | 显示全部楼层
学习一下,论坛越发的好
发表于 2011-12-15 11:09:17 | 显示全部楼层
楼主牛人呀!这东西也会写!
发表于 2024-6-9 13:20:20 | 显示全部楼层
999999999999
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:23 , Processed in 0.082939 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表