iOS小技能: ips 文件的分析

简介: 主要分析3块:1. Triggered by Thread线程的调用栈回溯信息2. 与架构相关崩溃的线程状态(crashed with ARM Thread State)3. Binary Images信息

引言

主要分析3块:

  1. Triggered by Thread线程的调用栈回溯信息
  2. 与架构相关崩溃的线程状态(crashed with ARM Thread State)
  3. Binary Images信息

I 预备知识

1.1 基础术语

Incident Identifier: 6156848E-344E-4D9E-84E0-87AFD0D0AE7B
CrashReporter Key:   76f2fb60060d6a7f814973377cbdc866fffd521f
Hardware Model:      iPhone8,1
Process:             TouchCanvas [1052]
Path:                /private/var/containers/Bundle/Application/51346174-37EF-4F60-B72D-8DE5F01035F5/TouchCanvas.app/TouchCanvas
Identifier:          com.example.apple-samplecode.TouchCanvas
Version:             1 (3.0)
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.example.apple-samplecode.TouchCanvas [1806]

Date/Time:           2020-03-27 18:06:51.4969 -0700
Launch Time:         2020-03-27 18:06:31.7593 -0700
OS Version:          iPhone OS 13.3.1 (17D50)


22  libdyld.dylib                     0x00000001b6728360 start + 4

  • OS Version:系统版本号,13.3.1
  • OS Build Version:系统编译版本号,17D50
  • 二进制文件:二进制文件名,libdyld.dylib
  • PROJECT_NAME:项目名,比如 dyld。
  • PRODUCT_NAME,构建产物名称,通常与 PROJECT_NAME一致
比如 libdyld.dylib就是由 lib + dyld + .dylib 组合而成,dyld 就是 PRODUCT_NAME
  • CURRENT_PROJECT_VERSION:项目版本号

1.2 dSYM 是什么?

  • Xcode 每次编译app代码后生成的 dSYM 文件
dSYM 文件里存储了函数地址映射,这样调用栈里的地址可以通过 dSYM 这个映射表能够获得具体函数的位置。一般都会用来处理 crash 时获取到的调用栈 .crash 文件将其符号化
  • 获取dSYM符号表方法
等appstoreconnect 后台处理完毕之后,才可以下载
1)Window——>Organizer"选择对应版本的 Archive 包,
2)点击右侧的下载dSYM
3)"右键——>Show in Finder" "右键——>显示包内容" aaa3ffdf-16ce-3065-bcba-293f7aee7c9b.dSYM.zip
  • 获取真机上crash log的方法:

    1、其中一个目录/var/mobile/Library/Logs/CrashReporte
    2、/private/var/mobile/Library/Logs/CrashReporter

II ips 文件的分析

2.1 主要分析模块

  1. Triggered by Thread线程的调用栈回溯信息,该部分保存了崩溃进程的所有线程的方法栈信息(方法调用栈中的序号、二进制文件的映像名称、致崩溃的指令地址、执行代码的符号名称);
  2. 与架构相关崩溃的线程状态(crashed with ARM Thread State )
  3. Binary Images信息;通过命令行工具 symbolicatecrash 来手动符号化 crash log(symbolicatecrash --dsym=/Users/devzkn/dylib.dSYM ~/Library/Logs/CrashReporter/SpringBoard-2018-03-23-153316.ips | open -f)

2.2 iOS15崩溃排查技巧

symbolicatecrash符号化分析问题、导出和隐藏符号
https://blog.csdn.net/z929118967/article/details/104983425

iOS15符号化换新工具了, iOS 15 的crash 文件改了格式, 用 Xcode 13 的 symbolicatecrash 也无法解析了,可使用脚本将新格式转换为之前的格式,再丢进去 symbolicate。

Mac OS 11.3+的系统用Console 打开也会自动转换,或者用 Xcode 的 View Devide Logs 来先给开发这边先查看

关注#公众号:iOS逆向,回复translation 下载转换脚本

python3 translation.py -i {input_sybolicated_json_file} -o {output_path}

see also

公号:iOS逆向

目录
相关文章
|
2月前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
31 1
|
2月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
45 0
|
3月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
43 4
|
3月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
|
3月前
|
Web App开发 Go iOS开发
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)|社区征文
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)|社区征文
|
4月前
|
Web App开发 Go iOS开发
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)
|
2月前
|
移动开发 监控 小程序
mPaaS常见问题之uniapp ios端云打包的配置config文件如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
32 0
|
2月前
|
iOS开发 开发者
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
|
3月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
3月前
|
iOS开发
ipa文件安装到ios系统
ipa文件安装到ios系统
32 0