您的当前位置:首页正文

Messier - 简单易用的Objective-C方法跟踪工具

来源:要发发知识网

Messier 可以用来跟踪iOS应用的Objective-C方法调用。在越狱设备上可以跟踪任意应用,在非越狱设备上也可用于跟踪调试中的应用。

背景

小编推荐一个群 691040931 里面有许多的iOS开发者在交流技术分享自己的心得,更有一些资料不定期的分享更新。

在使用AppleTrace的过程中,感受到AppleTrace还不够简单易用,尤其是:

  1. 不能在视觉感受上定义开始和结束点。例如点击某个按钮之前开始Trace,按钮点击完成后停止Trace。
  2. 获取trace文件太麻烦,需要手动从沙盒复制出来,然后执行merge.py,再执行trace2html(可选),最后打开trace文件。

当工作只需要Trace某一个应用时,AppleTrace几乎满足了要求,然而当好奇心增强,想看越来越多的应用时,啰嗦的“手动”操作就有点麻烦了。

Messier 诞生

Messier由三个部分组成。

  1. Tweak(越狱插件)
  2. Dylib(动态库 messier.framework)
  3. 桌面端(Messier.dmg)

下面是相关截图:

最新Build

使用方法

第一步,安装macOS客户端

第二步,越狱设备配置

(1)安装

  1. 打开 Cydia.
  2. 点击 Sources -> Edit -> Add.
  3. 输入 https://messier.app/cydia , 点击 Add Source. 重新加载后会看到 Messier Repo.
  4. 进入 Messier Repo, 安装Tweak Messier. (注意:Messier tweak 依赖 PreferenceLoaderAppList,所以需要先确保这两个Tweak已经安装)

(2)配置

打开系统的设置,向下滑动可以看见Messier(Developer下面),点击进入即可开始配置,如下图。

Enabled Applications 打开后如下图,可设置需要Trace的应用。

Trace On App Boot 配置是否在应用启动时就开始记录方法,默认启用。

Inline Hook (HookZz) 是否使用Inline Hook,默认启用。Inline Hook使用了HookZz来完成。

Main Thread Methods Only 是否只记录主现场的方法调用,默认关闭。

Disable App Applications 是否关闭所有应用的方法记录,默认关闭。若启用后,Enabled Applications的配置将失效。

第二步,非越狱设备配置

非越狱使用,就是在由自己源码或者MonkeyDev的环境下进行,需要对Xcode工程配置。

注意:首先要说明的是,目前Messier只支持arm64,因此只能使用arm64的真机

  1. 拖拽 messier.frameworkXcode Targets -> Build Phases -> Link Binary With Libraries.
  2. 点击 New Copy Files Phase 添加 Copy Files 步骤, 拖拽 messier.framework 进去 ,配置 DestinationFrameworks.

如下图配置:

这种情况下如果需要进行一些参数配置,可以在 Project Scheme -> Run -> Arguments, 设置 Environment Variables

MessierEnableOnAppBoot : true | false
MessierInlineHook : true | false
MessierMainThreadMethodsOnly : true | false

例如:

第三步,开始Trace

打开macOS客户端,此时会提示等待连接,如下图:

使用USB连接线连接iPhone和Mac电脑,打开配置好的要Trace的应用,运气好的话,应用不会Crash,并且macOS客户端会显示已经连接。(如果运气不好,应用Crash了,可以按照上文配置中的说明,关闭InlineHook)

当Trace结束,点击Stop,然后点击Fetch,如果运气好的话,一番文件传输后,会使用Finder定位到trace.json文件,如下图:

第四步,查看结果

打开Chrome浏览器(或者Chromium系列),进入chrome://tracing

把上一步产生的trace.json拖拽进去。

奇妙的结果诞生了。


此时,可以使用w a s d 来浏览这个文件了。详细使用方法可以点右上角的问好,如图:

支持

目前理论上支持 >= iOS10 的系统。

我只是测试了iOS10和iOS12的少部分应用的Trace,如果遇到问题,大家随时反馈。

开源和授权

开源

Messier是免费但闭源的。Messier的核心仍然是AppleTrace,因此核心仍然是开源的。除此之外,还要感谢以下三个仓库。


到最后小编推荐一个群 691040931 里面有许多的iOS开发者在交流技术分享自己的心得,更有一些资料不定期的分享更新。
资料截图

转载自:背景