批量追踪objc的方法调用记录

ios objc 方法调用记录插件: itracer v1.2ios

若是你想逆向 某些app的调用流程 或者 系统app的一些功能的 私有 framework class api 调用流程, 能够试试此工具git

只须要 配置须要挂接的 类名和app名, 就能够实时追踪 相关功能的 调用流程。 支持批量 hook n多个类名github

特性:spring

  • 批量跟踪ios下指定class对象的全部调用流程
  • 支持ios for armv6,armv7,arm64 以及mac for x86, x64
  • 自动探测参数类型,而且打印全部参数的详细信息

更新内容:api

  • 增长对arm64的支持,刚调通稳定性有待测试。 arm64进程注入没时间作了,暂时用了substrate的hookprocess, 因此你们须要先装下libsubstrate.dylib armv7的版本是彻底不依赖substrate的。app

  • arm64的版本对参数的信息打印稍微作了些加强。工具

注:此项目已再也不维护,仅供参考。post

  1. 配置须要挂接的class测试

    修改itrace.xml配置文件,增长须要hook的类名:插件

    <?xml version="1.0" encoding="utf-8"?>

    <itrace> <class> <SSDevice/> <SSDownload/> <SSDownloadManager/> <SSDownloadQueue/> <CPDistributedMessagingCenter/> <CPDistributedNotificationCenter/> <NSString args="0"/> </class> </itrace>

    注: 尽可能不要去hook, 频繁调用的class, 好比 UIView NSString, 不然会很卡,操做就不方便了。 注: 若是挂接某个class, 中途打印参数信息挂了, 能够在对应的类名后面 加上 args="0" 属性, 来禁止打印参数信息, 这样会稳定点。 若是要让全部类都不打印参数信息, 能够直接设置: <class args="0">

  2. 安装文件

    将整个itracer目录下的全部文件用手机助手工具,上传到ios系统上的 /tmp 下面: /tmp/itracer /tmp/itrace.dylib /tmp/itrace.xml

  3. 进行trace

    进入itracer所在目录: cd /tmp

    修改执行权限: chmod 777 ./itracer

    运行程序:

    ./itracer springboard (spingboard 为须要挂接的进程名, 支持简单的模糊匹配)

  4. 查看 trace log, 注: log 的实际输出在: Xcode-Windows菜单-Organizer-Console 中:

    Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadQueue downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadManager downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadManager _copyDownloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadQueue _sendDownloadStatusChangedAtIndex:]: 0 Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadQueue _messageObserversWithFunction:context:]: 0x334c5d51: 0x2fe89de0 Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadQueue downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadManager downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownloadManager _copyDownloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownload cachedApplicationIdentifier] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownload status] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [SSDownload cachedApplicationIdentifier] Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [CPDistributedNotificationCenter postNotificationName:userInfo:]: SBApplicationNotificationStateChanged: { SBApplicationStateDisplayIDKey = "com.apple.AppStore"; SBApplicationStateKey = 2; SBApplicationStateProcessIDKey = 5868; SBMostElevatedStateForProcessID = 2; } Jan 21 11:12:58 unknown SpringBoard[5706] <Warning>: [itrace]: [3edc9d98]: [CPDistributedNotificationCenter postNotificationName:userInfo:toBundleIdentifier:]: SBApplicationNotificationStateChanged: { SBApplicationStateDisplayIDKey = "com.apple.AppStore"; SBApplicationStateKey = 2; SBApplicationStateProcessIDKey = 5868; SBMostElevatedStateForProcessID = 2; }: null Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownloadManager _handleMessage:fromServerConnection:]: 0xe6920b0: 0xe007040 Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownloadManager _handleDownloadStatesChanged:]: 0xe6920b0 Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownloadManager _copyDownloads] Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownload persistentIdentifier] Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownload _addCachedPropertyValues:]: { I = SSDownloadPhaseDownloading; } Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownload _applyPhase:toStatus:]: SSDownloadPhaseDownloading: <SSDownloadStatus: 0xe6b8e80> Jan 21 11:12:59 unknown SpringBoard[5706] <Warning>: [itrace]: [105d7000]: [SSDownloadQueue downloadManager:downloadStatesDidChange:]: <SSDownloadManager: 0x41ea60>: ( "<SSDownload: 0xe6bd970>: -4085275246093726486" )

源码:https://github.com/waruqi/itrace

相关文章
相关标签/搜索