吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5874|回复: 3
收起左侧

[iOS 原创] 实现纪录oc消息

[复制链接]
lichao890427 发表于 2017-1-7 21:07
本帖最后由 lichao890427 于 2017-1-7 21:12 编辑

# msglogger
https://github.com/lichao890427/IOSDebug
                github上有若干用于纪录objc_msgSend消息的仓库,然而均存在一定问题
                1.使用dyld_insertlibrary方式启动,不适用于ios app
                2.使用substrate框架是常理,然而在new_objc_msgSend回调中做了太多事情以致效率很低(这包括Snoop-it)
                3.将new_objc_msgSend回调实现在.m/.mm文件中,导致递归(因为编译器会生成局部变量构造析构代码,里面也调用的objc_msgSend)(这包括InspectiveC),而实现在c/cpp中则不会有递归问题
                4.未能解析objc_msgSend参数
                对于此问题,提供的解决方案:
                1.使用cydia substrate框架实现msgsend hook以及Cydia提供的MobileLoader自动加载dylib模块(注意ios设备上存在的substrate头文件是最全的)
                2.new_objc_msgSend回调做成异步任务式,检查selector的地址空间是否位于该模块,这样比匹配id和selector快得多
                3.在.c/.cpp中实现new_objc_msgSend回调
                4.从signature解析出参数类型(由于匹配要class+selector,开启该功能则不可避免的耗时)
               
                msglogger使用方式:
                ./utilityserver --app_inject "com.?"
                /tmp/msglog.txt查看结果
               
                存在的问题:
                对于大的可执行文件由于msgSend相当频繁,因此不推荐hook msgSend方式,可以考虑使用frIDA或cycript hook某些selector
               

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

邪影复仇 发表于 2017-2-11 13:47
有点蒙B。。。不太懂
looha 发表于 2019-1-1 16:51
雨夜—伟少 发表于 2019-1-1 18:42 来自手机
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表