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去断点函数进行参数解析
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容