游戏运营需要统计游戏在用户手机中的使用情况,需要我们使用逆向的手段
添加某些指定位置触发事件上报
简述为两个部分
使用游戏自己的事件上报函数
gp上的游戏很多有自己的事件上报api,拿来直接hook
使用 dps.py 和 bpoint.js 去筛选带有 “event” / "report" 之类的关键字的函数
批量断点即可
例如 -----> 这个游戏 <-----
使用 dumper dump出来就可以看到在其中就能找到一个
这里使用dobby hook ReportEvent(string .....)
frida:
args1 (c#string) ===> args1.add(pointersize*2+4).readUtf16String() 即可获得cstring
inlinehook
使用 MonoString 解析一下c#string 即可
万能解法:使用u3d的 一些函数作为hook点
- hook SetActive
UnityEngine.GameObject.SetActive(Boolean) : Void
args[0] ===> gameobj
args[1] ===> boolean
使用 AssetStudioGUI 查看层级 (也可以使用 Ufun.js 中的 PrintHierarchy())
涉及这些u3d函数的主动调用
UnityEngine.Transform.GetParent() : Transform
UnityEngine.Object.GetName(Object) : String
UnityEngine.Transform.GetChild(Int32) : Transform
UnityEngine.Transform.get_childCount() : Int32
- hook OnPointerClick
UnityEngine.UI.Button.OnPointerClick(PointerEventData) : Void
args[0] ===> button实例
args[1] ===> PointerEventData (UnityEngine.EventSystems.PointerEventData)
调用 get_pointerEnter() 函数返回值即为被点击物体的 gameobj 对象
拿到 gameobj 后 ,剩下的操作同理上了
PS: 配合使用 Ufun.js 会非常的香