1、libimobiledevice原理是破解iTunes和iPhone通讯后,实现了该协议。iTools也是用这玩意;
1.1、通过使用make命令运行makefile文件,从而libimobiledevice整个工程编译成多个可执行文件,
拿到设备(uuid,设备名称,设备字符模型,cpu架构,网卡信息,系统版本等一切硬件信息)、对整个设备进行备份,获取时间,截屏,
获取当前设备的bundleid,app列表,安装与卸载ipa包;
1.2、libimobiledevice提供丰富的api,需要大量的时间研究,才可以运用;
1.3、ios-deploy也能拿到设备列表,上传,下载,app运行中的log信息,lldb诊断,安装与卸载ipa包,
通过usb连接可以拉取根据bundleid指定的app;
1.4、可以从ios助手开发类似于pp助手入手,里面提供很多gamebench用到的服务,和相应的接口;
2、通过class-dump逆向instrument生成相应的头文件,得到相关类和函数,从而得到github开源的TraceUtility代码
通过解析instrument工具保存.trace文件,通过TraceUtility工程执行.trace文件能够读取到cpu使用率,流量,fps,rss等性能数据,
其中发现了"com.apple.GPUTools.MobileService"服务,与gamebench中使用相同,目前自己尝试通过instrument 模板保存.trace文件,
由于instrument api经常变动,尚未成功,今天发现的,明天还需要再次尝试;
3、运行dtxmsg 通过ida事件调度器拦截instrument server 与 macosx的通信消息,最终由于作者更新IDA SDK 7.2版本,没有而失败;
4、目前发现的一下服务可能会拿到cpu使用率,流量,fps,rss,gpu,这些服务可以在以javascript写的appium自动化测试中
目前appium可以运行,但还未去研究appium开源的代码:
4.1、"com.apple.instruments.server.services.graphics.opengl"; gpu
4.2、"com.apple.instruments.server.services.activity"; cpu使用率
4.3、"com.apple.instruments.server.services.sysmontap"; CPU_INST_NAME_11
4.4、"com.apple.instruments.server.services.power"; 电量
4.5、"com.apple.instruments.server.services.wireless"; WIRLESS_SERV_NAME
4.6、"com.apple.instruments.server.services.deviceinfo"; DEVICEINFOSERV
4.7、"com.apple.instruments.UIAutomation"; UIAUTOMATIONSERV
5、相当重要的动态库:window上使用iTunesMobileDevice.dll,Mac上使用mobileDevice.framework框架
通过WiFi或者USB连接,进行iOS设备与MAC OSX APP进行通信;
5.1、libimobiledevice (在GNU / Linux上提供相同的功能)
5.2、mobiledevice (命令行实用程序,用于与MobileDevice Framework交互)
5.3、SDMMobileDevice (用C编写的OS X框架可以与Apple的私有框架MobileDevice.framework互换使用)
5.4、MobileDeviceAccess (与上面类似,但用Objective-C编写)
5.5、MobileDevice.h (旧的逆向工程头,用于与MobileDevice库连接,ios-deploy使用此头文件)
6、在libimobiledevice和gamebench中发现的服务(苹果私有服务:com.apple.{somethingelse})
com.apple.afc 访问文件系统.
com.apple.mobile.diagnostics_relay 从设备中请求iOS诊断信息
com.apple.springboardservices 管理SpringBoard图标并检索图标图像。
com.apple.file_relay 检索压缩的CPIO存档。
om.apple.mobile.installation_proxy 管理设备上的应用程序。
com.apple.mobile.mobile_image_mounter 在设备上安装开发者/调试磁盘映像。
com.apple.mobile.screenshotr 从设备中检索屏幕截图。
com.apple.syslog_relay 从设备捕获syslog输出。
com.apple.debugserver 与设备上的debugserver通信。
com.apple.house_arrest 访问应用程序文件夹及其内容。
com.apple.webinspector WebKit远程调试
com.apple.mobile.notification_proxy 观察并发布通知.
com.apple.mobilesync 将数据类与设备和计算机同步。
com.apple.mobilebackup2 备份和恢复所有设备数据(仅限mobilebackup2,iOS4 +)
com.apple.mobileactivationd 处理设备激活和停用。
com.apple.misagent 管理配置文件。
com.apple.mobile.heartbeat 将“心跳”发送到设备以允许通过网络进行服务连接。
com.apple.mobile.lockdownd 锁定每次访问,这个服务相当重要。
7、需要很多逆向的知识,这方面资料非常少,做这块时,无论国内外,翻遍了google,baidu都没太多合适的资料;