找回密码
 加入
搜索
查看: 2208|回复: 10

为啥我读出的游戏里的血量值总是零

[复制链接]
发表于 2009-8-15 07:51:18 | 显示全部楼层 |阅读模式
本帖最后由 zuiyi 于 2009-8-15 08:06 编辑

实在搞不懂了,基址和偏移都是最新的,但为什么读出的血总是零啊?我用For遍历时,也无法读出一个和游戏里实际血量相同的偏移.还有,用_MemoryRead读出的血量值是什么数据类型的长度又是多少?望高手看看下面的代码~~

#include<Memory.au3>
$Base=0x0097B55C
$HPofset=0x25c
$CurProcID=WinGetProcess("Element Client")
$Handle=_MemoryOpen($CurProcID)
$HP=_MemoryRead("0x"&Hex($Base+$HPofset),$Handle)
MsgBox(0,"",$HP)

补充下,其它的偏移是
$Address = 0x0097B55C
$ofset = 0x24
发表于 2009-8-15 09:52:47 | 显示全部楼层
完美世界?
发表于 2009-8-15 14:22:47 | 显示全部楼层
没写外挂的经验
估计写外挂的都忙着挣钱去了
楼主还是得多多自行研究啊
 楼主| 发表于 2009-8-15 16:34:45 | 显示全部楼层
2# KLU3K

是武林外传的基址,完美的游戏差不多吧~~
 楼主| 发表于 2009-8-15 17:05:35 | 显示全部楼层
$Handle=_MemoryOpen($CurProcID)
是不是我这里出错了?我用MsgBox(0,"",$Handle)时得到空的窗口,没任何数据,但$Handle<>0,因为判断时不提示出错
 楼主| 发表于 2009-8-16 05:58:51 | 显示全部楼层
#include<Memory.au3>
$Address=0x0097B55C
$offset=0x24
$HPofset=0x25c

$CurProcID=WinGetProcess("Element")
$Handle=_MemoryOpen($CurProcID)
If $Handle=0 then
     MsgBox(4096,"错误提示","打开游戏内存错误。")
     Exit
EndIf

$one_Address=_MemoryRead($Address,$Handle)
$two_Address=_MemoryRead("0x"&Hex($one_Address+$offset),$Handle)
$HP=_MemoryRead("0x"&Hex($two_Address+$HPofset),$Handle)

MsgBox(0,"",$HP)

这个也不对,高手在哪啊....
发表于 2009-8-16 06:56:15 | 显示全部楼层
呵呵!高手都去挣钱去了。
 楼主| 发表于 2009-8-18 04:14:03 | 显示全部楼层
再小顶下,知道的高手HELP~
发表于 2009-8-18 08:52:18 | 显示全部楼层
可能的原因:
1, 没有权限访问进程。
2, 内存地址错误。
3, 函数内部存在错误或者函数调用时存在错误。
4, ... ...
从你能想到的各个方面出发,一一排查吧... - - |||

评分

参与人数 1金钱 +3 贡献 +1 收起 理由
afan + 3 + 1

查看全部评分

发表于 2009-8-26 17:55:37 | 显示全部楼层
没有权限访问进程
假使有防外挂机制
发表于 2009-9-1 03:03:06 | 显示全部楼层
先声明 我不是高手

第一段是不对的 不是read(基址+偏移)
第二段用法是对(如果有2级偏移的话)  地址也对的话 那我就不知道了 自己排查下  或者可以看看别人代码
去 断点 广海 请人发一小段你学习下  是不是格式错了 还是地址错了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-25 14:21 , Processed in 0.075070 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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