真会走路的废柴 发表于 2011-12-3 14:54:48

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

本帖最后由 真会走路的废柴 于 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位长整数类型。



果然在外面 手里没有系统的代码 写起来都比较麻烦

JBOY1009 发表于 2011-12-3 16:29:48

终于更新~\(≧▽≦)/~啦啦啦

mylve 发表于 2011-12-7 09:10:42

支持{:face (411):}

wsfda 发表于 2011-12-7 11:55:18

强烈支持.....

那片叶子 发表于 2011-12-9 08:58:12

学习一下,论坛越发的好

blue_dvd 发表于 2011-12-15 11:09:17

楼主牛人呀!这东西也会写!

wei_tianxia 发表于 2024-6-9 13:20:20

999999999999
页: [1]
查看完整版本: [WOW一步一步写外挂]<二>OBJ的数据结构