爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!
爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!
当前所在位置:主页 > 脚本 > seraphzone >
  • 魔艺客提供SEO\SEM推广整合营销服务
  • 提供整套互联网营销整合方案-魔艺客
  • 魔艺客高端网站建设开发服务十一大优惠服务
  • 资深的网站建设开发经验,一对一服务-魔艺客高
  • 一站式服务,从服务器到网站,三站何以尽在魔
爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!

Seraph 内存搜索

发布时间:2017-09-08 17:35    作者:爱开发联盟    浏览:次    来源:aikaifa.com.cn 分享:

一般情况下,为了应付游戏的动态内存地址,我们用基址的方式来读取内存,不过前提是可以知道基址。有的游戏,基址是很难分析到的,而且很多游戏加了隐藏和变换,搞的分析起来特别复杂。这个时候,借助Seraph,我们可以用另一种方式——搜索内存。

虽然找不出基址,但是我们可以很轻松的找到一些我们想要的数据的直接地址。比如我们在一次游戏的运行里,可以用CE找到血的地址是&H900010, 血最大值的地址是&H900014,MP地址&H900020,最大MP&H900024。

虽然下一次游戏运行时,这些地址都会变,但是我们知道,这些地址互相间的相对地址偏移是不变的。也就是说最大血地址=血地址+4,MP地址=血地址+&H10
这样我们就可以搜索了。举个例子,我们知道我们的血/最大血/MP/最大MP分别是8000/8000/12000/12000。那么在脚本里,告诉Seraph的内存搜索引擎,我们要搜索一个地址,它的值是8000,这个地址+4的值也是8000,这个地址+&H10和+&H14的值是12000。这样的地址,一般在游戏里只有一个。
怎么搜索呢?
代码如下:

ClearSearchMemoryTable()
AddSearchMemoryItem(&H900010, 2, 8000)
AddSearchMemoryItem(&H900014, 2, 8000)
AddSearchMemoryItem(&H900020, 2, 12000)
AddSearchMemoryItem(&H900024, 2, 12000)
if SearchMemory(&H000000, Address) then
Print("找到地址:"&Address)
end if


注意,以上代码里,我们调用AddSearchMemoryItem函数来设置一些我们要搜索的条件。
第一个参数是每个值的地址。不用担心这个地址在下一次游戏运行时不正确,Seraph搜索只关心所有添加的搜索项之间的“相对地址”。
第二个参数是指定类型,2代表四字节整型。我们同样可以添加双字节,浮点数,以及字符串等不同类型。详见帮助手册。
第三个参数就是这个搜索项的值。你必须填入这个数据的当前值,如果填错了,就搜不到了。(关于怎么在脚本里指定当前的用于搜索的值,我们之后讲)
注意,第一行的ClearSearchMemoryTable()是用于清除上一次添加的搜索项。重新开始一次搜索前我们都要调一上这个函数。
添加完了这4个搜索项以后,我们用SearchMemory开始搜索。第一个参数表示搜索的开始值,我们一般都可以用&H000000。第二个参数值用于返回搜索到的结果。
搜到的结果就是第一个搜索项的地址,也就是当前血的地址。我们可以保存这个地址,用ReadMemory随时去读数据。

那么,整体的流程应该是:
1. 在参数设置里,我们添加一些参数,用于填入搜索的数据。告诉用户在脚本开始前,先设置这些数据。比如,填入自己的血,MP,并在红蓝满的时候开始脚本。
2. 在脚本一开始,用GetConfigNumber等函数取出设置的值,用以上代码搜索内存,把得到的数据保存下来
3. 在脚本运行中,用保存下的地址,加上各种我们已经知道的偏移量,随时读取各项数据的值。

小技巧:

怎样添加搜索项才可以最方便准确的搜索到我想要的那个唯一的内存地址?
当然是与角色越相关越好的。比如角色的各项属性值。使用更多的搜索项可以有效的防止搜索的不准确(即搜到不止一个地址),但是也会带来每次启动脚本时的麻烦,因为我们启动时都要设置一下搜索值。建议用一些不经常变的值,比如,等级,攻击值等,只有升了级才会变。而血值是经常变的。
同时,根据我们的经验,角色名字是很好的一个搜索项。如果我们可以分析到角色名字的地址,加在搜索项里(字串型),一般就可以很准确的搜索到结果。
一般的游戏角色名是UTF8形式的。我们可能要先将角色名用GBToUTF8函数转换成UTF8编码的字串,再用AddSearchMemoryItem添加。

如果有时候我们添加的数项不够,或者我们在调试自己脚本的时候,会搜索到不同的内存地址,我们想让脚本全部输出,怎么办?
复制内容到剪贴板
代码:
AddSearchMemoryItem(...)
AddSearchMemoryItem(...)
...
Address=0
while SearchMemory(Address+1, Address)
  Print("找到地址:"&Address)
wend
原理就是从0开始,每搜索到一个地址,先输出,然后从这个地址+1继续往下搜,一直到搜不到为止。

网友评论

分类排行榜联系我们

好文推荐联系我们

爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!
爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!

当前最新内容联系我们

爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!

在线手册

网站地图导航

前端 HTML/Xhtml HTML5 CSS XML/XSLT Dreamweaver教程 Frontpage教程 心得技巧 编程 JavaScript ASP.NET PHP编程 正则表达式 AJAX相关 ASP编程 JSP编程 Flex 脚本加解密 web2.0 XML/RSS 网页编辑器 相关技巧 安全相关 网页播放器 Dart 其它综合 脚本 VBS DOS/BAT HTA HTC Python perl 游戏相关 vba 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 脚本下载 广告代码 js框架 批处理 网页相关 源码下载 数据库 MsSql Mysql mariadb oracle DB2 mssql2008 mssql2005 SQLite PostgreSQL MongoDB Redis Access 数据库文摘 数据库其它 CMS dedecms ecshop z-blog UcHome UCenter 风讯CMS 科汛cms discuz 新云cms phpwind 动易cms phpcms 帝国cms WordPress drupal 其它cms 设计 photoshop教程 摄影教程 Fireworks教程 CorelDraw教程 Illustrator教程 Painter教程 Freehand教程 Indesign 设计素材 平面其它 微信相关 微信公众号 小程序 操作系统 bios 系统安装 系统进程 Windows系列 LINUX RedHat/Centos Ubuntu/Debian Fedora Solaris 麒麟系统 红旗Linux Unix/BSD 苹果MAC 注册表 其它系统 网站运营 建站经验 微信营销 网站优化 网站策划 网络赚钱 网络创业 站长故事 alexa域名 其它相关 网络安全 黑客教程 安全设置 杀毒防毒 病毒查杀 脚本攻防 黑客入侵 工具使用 业界动态 Exploit 漏洞分析 加密解密 手机黑客 安全其它 在线手册 网页制作 脚本编程 数据库相关 软件编程 系统相关 其它相关 源码下载

友情链接申请加入

51CTO 上海魔艺客 猫鼬设计开发 Erlo网站开发 猫鼬设计工作室 新发现全球资讯 信息安全与IT资讯
爱开发联盟是国内专业的网站建设资源、脚本编程学习类网站,提供asp、php、asp.net、javascript、jquery、vbscript、dos批处理、网页制作、网络编程、网站建设等编程资料。让开发变得简单起来!

283882409