安卓内存教程技术交流(三) 安卓触发寻路call实现

按键(安卓版本)支持安卓内存,实现触发寻路call,这个只适合部分游戏,当然你如果懂C语言也可以直接注入安卓call 的。有朋友直接修改坐标x,y,z,这种当然没有效果了,现在的游戏都是有校验的。

原理:部分游戏修改目的地坐标,注意了是目的地坐标+touch随意触发事件call(或者自己逆向触发id修改),就可以寻路到任何地方。 下面是代码实现方案!**

技术Q  :  578052137  群:670956672
Dim 当前应用包名
当前应用包名 = sys.GetFront()
TracePrint 当前应用包名
'以下是以"比武招亲(武林萌主)游戏为例子,通过搜索内存返回的结果进行偏移读取人物信息面板里的等级、经验等xx"
Dim addr = "0x02fffffff"

Dim tb1 = {"lv":73}
Dim tb2 = {"lv":32,"offset":16}
Dim tb3 = {"lv":1,"offset":4}
Dim tb4 = {"lv":1,"offset":4}
Dim tb5 = {"lv":2139095039,"offset":4}
Dim tb = {tb1, tb2,tb3,tb4,tb5}
Dim t = TickCount()
Dim A = Sys.MemorySearch(当前应用包名, True,addr, tb, "i32",0,1)
TracePrint "搜索地址为:"&A(0)&",耗时"&(TickCount()-t)
Dim addr_X = 地址相加(A(0), -20)
TracePrint addr_X
Dim addr_Y = 地址相加(A(0), -12)

TracePrint "当前等级为:"&Sys.MemoryRead(当前应用包名,addr_X, "f32")
TracePrint "当前等级为:"&Sys.MemoryRead(当前应用包名,addr_Y, "f32")

Dim 目标X="64",目标Y="63"

sys.MemoryWrite(当前应用包名,addr_X,目标X, "f32")    //第一个目标坐标
Sys.MemoryWrite 当前应用包名, addr_Y, 目标Y, "f32"

Sys.MemoryWrite 当前应用包名, "0x87C72270", 目标X, "f32" //第二个目标坐标
Sys.MemoryWrite 当前应用包名, "0x87C72278", 目标Y, "f32"

Sys.MemoryWrite 当前应用包名, "0x87C7227C", 目标X, "f32"  //第三个目标坐标
Sys.MemoryWrite 当前应用包名, "0x87C72284", 目标Y, "f32"

Sys.MemoryWrite 当前应用包名, "0x02AE2CA4", 目标X, "f32"  //第四个目标坐标,还没有定位
Sys.MemoryWrite 当前应用包名, "0x02AE2CAC", 目标Y, "f32"
TracePrint "写入锁定位置"
Delay 20
call 触发走路call()
Do
sys.MemoryWrite(当前应用包名,addr_X,目标X, "f32")    //第一个目标坐标
Sys.MemoryWrite 当前应用包名, addr_Y, 目标Y, "f32"

Sys.MemoryWrite 当前应用包名, "0x87C72270", 目标X, "f32" //第二个目标坐标
Sys.MemoryWrite 当前应用包名, "0x87C72278", 目标Y, "f32"

Sys.MemoryWrite 当前应用包名, "0x87C7227C", 目标X, "f32"  //第三个目标坐标
Sys.MemoryWrite 当前应用包名, "0x87C72284", 目标Y, "f32"

Sys.MemoryWrite 当前应用包名, "0x02AE2CA4", 目标X, "f32"  //第四个目标坐标,还没有定位
Sys.MemoryWrite 当前应用包名, "0x02AE2CAC", 目标Y, "f32"
TracePrint "写入锁定位置"
Delay 20
call 触发走路call()
TracePrint int(Sys.MemoryRead(当前应用包名,addr_X, "f32"))
TracePrint int(当前X坐标())
loop until (当前X坐标()=int(目标X))


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


Function  当前X坐标()
Dim base =Sys.MemoryRead(当前应用包名,"0xebf10", "i32") //当做基地址
TracePrint Hex(base)
Dim 人物血地址= Hex(base+216)
Dim 人物X坐标地址= Hex(base+216+708)
Dim 人物X坐标 =Sys.MemoryRead(当前应用包名,人物X坐标地址, "f32") //加上偏移,再进行内存读取
当前X坐标=int(人物X坐标)
End Function

Function  当前Y坐标()
Dim base =Sys.MemoryRead(当前应用包名,"0xebf10", "i32") //当做基地址
Dim 人物Y坐标地址= Hex(base+216+708+8)
Dim 人物Y坐标 =Sys.MemoryRead(当前应用包名,人物Y坐标地址, "f32") //加上偏移,再进行内存读取

当前Y坐标=int(人物Y坐标)
End Function

Function 触发走路call()
Dim 触发事件ID= MemoryReadOffSet("[[054f400]+88]+180",4550) //逆向分析获取ID,一般建议直接用模拟touch
End Function

你可能感兴趣的:(安卓内存教程技术交流(三) 安卓触发寻路call实现)