技术研究:安卓内存很少人关注,下面 类人猿就讲解一些见到的安卓内存辅助方法和思路
特征码定位是最蠢的办法,但是也是最简单最容易实现。其他方法可以关注我的帖子。
类人猿内存实现功能:大家都知道安卓实现找坐标要识别数据,要制作字库找图找色,可能要很多尝试调试,还要加各种算法等一些麻烦的东西,如果用内存反而简单的,可能你在几分钟之内就能够把坐标、地图名字、人物相关属性、怪物类型等完美识别。而且非常的精准,几乎不会出现错误,准确率是99.99%。这就是内存的好处。
内存识别优点:1.识别速度快(识别坐标字体只要0.01秒) 2.精准稳定 3.节省判断测试脚本的时间
1.下面的例子是某网游,模拟器测试用海马,其他模拟器也可以的。
<<<<<<<<<目标:找到坐标值,并且内存定位,防止数据更新<<<<<<<<<<<<<<<<<<<<<<<<<
2.实操读取坐标:整理我就用下面的游戏来给大家做一个简单的演示。我再次声明我没有修改游戏任何数据。
大家可以通过烧饼等工具搜索查找相关的数据。有检测就换其他搜索工具。这里假如坐标浮点数搜索40.通过变化来获取的,具体情况具体分析。另外注意这个游戏的坐标是浮点数f32,显示的时候不会四舍五入的。如:X坐标18.9333725,显示18整数。 搜索注意数据类型是dword整数还是float和double等。
3.下面这张图是查看地址相对应的内存区域。我们分析相关数据那些是不变的。
4.红色的就作为内存特征码进行搜索。
下面的语法应该是个类似链表的地址结构。应该可以理解为双向搜索。
Dim tb1 = {“lv”:3143286320} //这两个是特征码,链表
Dim tb2 ={“lv”:3142551167,“offset”:4} //4是地址排序偏移
5.直接上源码给大家学习!
Dim 当前应用包名
当前应用包名 =sys.GetFront()
TracePrint 当前应用包名
Dim addr = "0xb0000000"
Dim tb1 = {"lv":3143286320}
Dim tb2={"lv":3142551167,"offset":4}
Dim tb = {tb1,tb2}
Dim t = TickCount()
Dim Addr_Search = Sys.MemorySearch(当前应用包名,True,addr,tb, "i32",0,5)
Dim 坐标地址X = 地址相加(Addr_Search(0),16) // 坐标x
TracePrint 坐标地址X
Dim 坐标地址Y = 地址相加(Addr_Search(0),24)//坐标Y
TracePrint 坐标地址Y
TracePrint "当前坐标X为:"&Sys.MemoryRead(当前应用包名,坐标地址X,"F32")
TracePrint "当前坐标Y为:"&Sys.MemoryRead(当前应用包名,坐标地址Y,"F32")
For i = 0 To UBOUND(Addr_Search)
TracePrint"地图地址X为:"&Addr_Search(i)+44
Next
For i = 0 To UBOUND(Addr_Search)
TracePrint"地图地址Y为:"&Addr_Search(i)+44
Next
Do //循环打印出,循环判断坐标
Dim坐标X = int(Sys.MemoryRead(当前应用包名,坐标地址X,"F32"))
Dim坐标Y =int(Sys.MemoryRead(当前应用包名,坐标地址Y,"F32"))
TracePrint"坐标X:" &坐标X,"坐标Y:"&坐标Y
ShowMessage"坐标X:" &坐标X&"坐标Y:"&坐标Y, 4000,500,500
Delay200
Loop
Function 地址相加(地址, 偏移)
Dim A = Right(地址,Len(地址)-2)
Dim B =Clng("0x"&A)
Dim C = B+偏移
Dim D = Hex(C)
Dim E = "0x"&D
地址相加 = E
End Function
总结:其实安卓的简单的内存读写是很容易的,没有想象中的那么复杂。这里PC和安卓本来就有很多相似的地方的。可能我基础相对好一点,学的也相对块一点。但是我这几天学到的东西远远不止上面的内容。最近我比较忙,有空大家留意我其他帖子,有时间我尽量上传上去,你们看了应该会有很大的惊喜的。手头上杀手锏思路还挺多的。
后面有空我再给大家更新思维和方法。 !QQ:578052137 3群:670956672