开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 10763|回复: 11
收起左侧

[技术专题] 安卓内存教程心得1:安卓内存特征码定位

[复制链接]
发表于 2019-12-15 23:37:25 | 显示全部楼层 |阅读模式   广东省肇庆市
声明:这个是用于安卓游戏内存读取,方便模拟按键判断。调用安卓的sys和山海师lua插件,没有用到写入xx破坏游戏,不针对游戏,希望管理能通过帖子!

<<<<<<<<<<<<<只作为按键精灵技术研究,不针对任何游戏<<<<<<<<<<<<<<<<<<<<<后面后源码<<<<<
获取xx方法有很多,但是特征码定位是最简单的方法,也是最直接通用。




技术研究:本人一直做PC端,安卓我也是新手,这几天也开始看了一下安卓方面的内容。因为本人现在写这个帖子只学了安卓几天时间,有错可以跟我反馈。我将我这几天的学习经验跟大家分享下,反正就是大家探讨、提高。
内存实现功能:大家都知道安卓实现找坐标要识别xx,要制作字库找图找色,可能要很多尝试调试,还要加各种算法等一些麻烦的东西,如果用内存反而简单的,可能你在几分钟之内就能够把坐标、地图名字、人物相关属性、怪物类型等完美识别。而且非常的精准,几乎不会出现错误,准确率是99.99%。这就是内存的好处。
内存识别优点:1.识别速度快(识别坐标字体只要0.01秒)  2.精准稳定   3.节省判断测试脚本的时间


1.下面的例子是某网游,模拟器测试用海马,其他模拟器也可以的。
<<<<<<<<<目标:找到坐标值,并且内存定位,防止xx更新<<<<<<<<<<<<<<<<<<<<<<<<<

2.实操读取坐标:整理我就用下面的游戏来给大家做一个简单的演示。我再次声明我没有修改游戏任何xx。
  大家可以通过烧饼等工具搜索查找相关的xx。有检测就换其他搜索工具。这里假如坐标浮点数搜索40.通过变化来获取的,具体情况具体分析。另外注意这个游戏的坐标是浮点数f32,显示的时候不会四舍五入的。如:X坐标18.9333725,显示18整数。


3.下面这张图是查看地址相对应的内存区域。我们分析相关xx那些是不变的。


4.红色的就作为内存特征码进行搜索
下面的语法应该是个类似链表的地址结构。应该可以理解为双向搜索。
Dim tb1 = {"lv":3143286320}  //这两个是特征码,链表
Dim tb2 ={"lv":3142551167,"offset":4} //4是地址排序偏移


5.直接上源码给大家学习!




  1. Dim 当前应用包名

  2. 当前应用包名 =sys.GetFront()

  3. TracePrint 当前应用包名

  4. Dim addr = "0xb0000000"

  5. Dim tb1 = {"lv":3143286320}

  6. Dim tb2={"lv":3142551167,"offset":4}



  7. Dim tb = {tb1,tb2}

  8. Dim t = TickCount()

  9. Dim Addr_Search = Sys.MemorySearch(当前应用包名,True,addr,tb, "i32",0,5)

  10. Dim 坐标地址X = 地址相加(Addr_Search(0),16) // 坐标x

  11. TracePrint 坐标地址X

  12. Dim 坐标地址Y = 地址相加(Addr_Search(0),24)//坐标Y

  13. TracePrint 坐标地址Y

  14. TracePrint "当前坐标X为:"&Sys.MemoryRead(当前应用包名,坐标地址X,"F32")

  15. TracePrint "当前坐标Y为:"&Sys.MemoryRead(当前应用包名,坐标地址Y,"F32")

  16. For i = 0 To UBOUND(Addr_Search)



  17.         TracePrint"地图地址X为:"&Addr_Search(i)+44



  18. Next

  19. For i = 0 To UBOUND(Addr_Search)



  20.         TracePrint"地图地址Y为:"&Addr_Search(i)+44

  21. Next



  22. Do  //循环打印出,循环判断坐标

  23.          Dim坐标X = int(Sys.MemoryRead(当前应用包名,坐标地址X,"F32"))

  24.          Dim坐标Y =int(Sys.MemoryRead(当前应用包名,坐标地址Y,"F32"))

  25.         TracePrint"坐标X:" &坐标X,"坐标Y:"&坐标Y

  26.         ShowMessage"坐标X:" &坐标X&"坐标Y:"&坐标Y, 4000,500,500

  27.         Delay200         

  28. Loop



  29. Function 地址相加(地址, 偏移)

  30.    Dim A = Right(地址,Len(地址)-2)

  31.    Dim B =Clng("0x"&A)

  32.    Dim C = B+偏移

  33.    Dim D = Hex(C)

  34.    Dim E = "0x"&D


  35. 地址相加 = E

  36. End Function
复制代码



总结:其实安卓的简单的内存读写是很容易的,没有想象中的那么复杂。这里PC和安卓本来就有很多相似的地方的。可能我基础相对好一点,学的也相对块一点。但是我这几天学到的东西远远不止上面的内容。最近我比较忙,有空大家留意我其他帖子,有时间我尽量上传上去,你们看了应该会有很大的惊喜的。手头上杀手锏思路还挺多的。  
最后麻烦大家回复点赞,要不真没动力写下去分享給大家了!




评分

参与人数 2好评 +1 精币 +1 收起 理由
gily008 + 1 新技能已get√
snkj + 1 支持开源~!感谢分享

查看全部评分


发表于 2024-3-18 10:32:44 | 显示全部楼层   湖南省长沙市
谢谢分享!!!!!
回复 支持 反对

使用道具 举报

发表于 2021-12-4 00:47:15 | 显示全部楼层   广东省深圳市
图2挂了,求指教
回复 支持 反对

使用道具 举报

结帖率:45% (5/11)
发表于 2021-8-18 12:56:40 | 显示全部楼层   山东省威海市
你好,现在读不了内存 返回 false
回复 支持 反对

使用道具 举报

发表于 2021-4-25 19:10:18 | 显示全部楼层   安徽省黄山市
很好。点赞
回复 支持 反对

使用道具 举报

发表于 2020-9-25 01:27:35 | 显示全部楼层   内蒙古自治区乌兰察布市
大家都会的东西,发出来有什么意思,写点有用的,开发个内存搜索极速模块试试
回复 支持 反对

使用道具 举报

结帖率:98% (154/157)

签到天数: 4 天

发表于 2020-3-22 21:58:01 | 显示全部楼层   四川省广元市
求指教!!!
回复 支持 反对

使用道具 举报

签到天数: 11 天

发表于 2020-1-10 11:47:51 | 显示全部楼层   陕西省延安市
强大啊!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2019-12-31 21:52:07 | 显示全部楼层   广东省梅州市
强大啊!!!!!!!!!!

回复 支持 反对

使用道具 举报

结帖率:89% (110/123)

签到天数: 4 天

发表于 2019-12-29 22:40:00 | 显示全部楼层   重庆市重庆市

看名字 就像是
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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