U3D游戏中的指定事件上报

游戏运营需要统计游戏在用户手机中的使用情况,需要我们使用逆向的手段
添加某些指定位置触发事件上报


简述为两个部分

使用游戏自己的事件上报函数

gp上的游戏很多有自己的事件上报api,拿来直接hook
使用 dps.py 和 bpoint.js 去筛选带有 “event” / "report" 之类的关键字的函数
批量断点即可

例如 -----> 这个游戏 <-----

使用 dumper dump出来就可以看到在其中就能找到一个

1628045158(1).png

这里使用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 会非常的香

通过methodinfo去断点函数进行参数解析

你可能感兴趣的:(U3D游戏中的指定事件上报)