首页
社区
课程
招聘
[旧帖] [求助]安卓apk进行hook时,回调函数的地址保存 0.00雪花
发表于: 2016-5-21 16:12 4285

[旧帖] [求助]安卓apk进行hook时,回调函数的地址保存 0.00雪花

2016-5-21 16:12
4285
最近碰到一个问题,请大神给点方法或建议:
1.一个安卓的apk,其是用unity3d写的,C#语言
2.其中有一个函数,其原型如下:

   public void tcp_data (char msg[], CMsgHandler callback)
   msg:表示一个字符串,用其中前四个字符表示当前msg的消息类型(如聊天、交易等)
   callback:表示此消息的回调函数,其中 CMsgHandler的原型如下:
public delegate void CMsgHandler(CMsgResult result, CMsg msgRes, CMessenger messenger);不同的消息,有不同的回调函数

3.现在的问题是,当我去hook到这个tcp_data时,想把当前消息的回调函数地址保存下来,以便自己主动发包时使用。
   但我用一个void *p=callback去保存时,发现这个 p并不能把这个回调函数的地址保存下来,两次聊天消息,相同的内容,其保留下来的p的值都不一样(连续发两条同样内容的聊天消息)
  故请大神指导下,应该怎么搞?mono中有没有类似下面寻找类的函数,可以真正把这个回调函数callback的地址真正保存下来?
  备注:mono中寻找类的相关函数   mono_object_get_class(根据hook时的this指针找到相关类) ,get_class_method(得到相关类的中方法)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1. 首先你的问题可以调试跟踪一下这个callback的调用处,看它是怎样从delegate中取出目标函数地址的。由于我没有跟踪过这个过程所以无法给你结论。
2. mono中有接口让你可以根据命名空间、类名、方法名三者结合来找到方法的地址,不过这个应该对解决你的问题没有帮助。
2016-6-24 03:09
0
游客
登录 | 注册 方可回帖
返回
//