ios手动符号表解析
创始人
2024-11-05 02:40:08
0
// //  ViewController.m //  demo // //  Created by //  #import "ViewController.h"  @interface ViewController ()  @end  @implementation ViewController  - (void)viewDidLoad {     [super viewDidLoad];          // 创建按钮     UIButton *myButton = [UIButton buttonWithType:UIButtonTypeSystem];          // 设置按钮的标题     [myButton setTitle:@"点击我" forState:UIControlStateNormal];          // 设置按钮的位置和大小     myButton.frame = CGRectMake(100, 100, 100, 50); // (x, y, width, height)          // 设置按钮的目标动作(点击事件处理器)     [myButton addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];          // 将按钮添加到视图     [self.view addSubview:myButton]; }  // 定义点击事件处理器 - (void)buttonTapped:(UIButton *)sender {     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     NSString *documentsDirectory = [paths firstObject];     NSLog(@"Documents Directory: %@", documentsDirectory);     NSArray *array= @[@"a",@"b",@"c"];     [array objectAtIndex:5];     NSLog(@"按钮被点击了!"); }  @end  

模拟崩溃数组越界

获取崩溃信息

4   demo       0x0000000103164eb2 

获取Binary Images:

0x103163000 -  0x103166fff hello.demo (1.0)   

内存地址(Memory Address):内存中每个数据单元的唯一标识符,用于在运行时访问数据,即 0x0000000103164eb2

基地址(Base Address):内存块或内存区域的起始地址,用于表示数据段或代码段的起始位置。即 0x103163000

结束地址(End Address):内存块或内存区域的终止地址,用于表示该内存块的范围。即 0x103166fff

计算偏移量

0x0000000103164eb2 - 0x103163000 = 4346760882 - 4346753024 = 7858 

获取符号表 路径是 Xcode > Preferences > Locations 下的 Derived Data

demo.app.dSYM 

解析来根据偏移量 7858 获取符号表中的原始行

1e8b	1e9c	-[ViewController buttonTapped:]	ViewController.m:40 1e9c	1ea0	-[ViewController buttonTapped:]	ViewController.m:41 1ea0	1eba	-[ViewController buttonTapped:]	ViewController.m:41 1eba	1ec8	-[ViewController buttonTapped:]	ViewController.m:42 

16进制转换10进制展示

7819 7835 -[ViewController buttonTapped:]	ViewController.m:40 7836 7839 -[ViewController buttonTapped:]	ViewController.m:41 7840 7865 -[ViewController buttonTapped:]	ViewController.m:41 7866 7879 -[ViewController buttonTapped:]	ViewController.m:42 

7858 在 (7866,7879) 这个区间内 为

7840 7865 -[ViewController buttonTapped:]	ViewController.m:41 

再来看原始代码行号,验证找到的是正确的
在这里插入图片描述

解析符号表使用bugly提供的jar执行,即可

java_opts=" -Xms512m -Xmx1024m -Dfile.encoding=UTF8 " jar_path = "buglySymboliOS.jar" fils_path = "demo.app.dSYM" output_path = "~/Downloads/ios" java $java_opts -jar $jar_path -i $file_path -o $output_path -symbol "$@" > /dev/null 2>&1 

最后需要符号还原

pip install symbolic==8.3.2

from symbolic.demangle import demangle_name  decode = demangle_name(item) 

相关内容

热门资讯

连日来!钱塘十三水辅助器软件(... 连日来!钱塘十三水辅助器软件(辅助)一直是真的有辅助教程(存在有挂)所有人都在同一条线上,像星星一样...
目前!微乐广西麻辣辅助器(辅助... 目前!微乐广西麻辣辅助器(辅助)都是是有辅助工具(有挂教学)1)微乐广西麻辣辅助器有没有挂:进一步探...
此事引发网友热议!悟空大厅微信... 此事引发网友热议!悟空大厅微信辅助(辅助)好像是有辅助插件(有挂工具)所有人都在同一条线上,像星星一...
黑科技辅助!上饶辅助(辅助)真... 黑科技辅助!上饶辅助(辅助)真是是真的有辅助方法(有挂辅助)1、完成上饶辅助辅助器v3.3的残局,帮...
第三方技巧!潮友会鱼虾蟹破解(... 第三方技巧!潮友会鱼虾蟹破解(辅助)本来真的有辅助教程(有挂详细)1、潮友会鱼虾蟹破解脚本辅助下载、...
教程辅助挂!闲娱江西脚本(辅助... 教程辅助挂!闲娱江西脚本(辅助)原来是有辅助app(发现有挂)1、进入游戏-大厅左侧-新手福利-激活...
方法辅助挂!齐齐乐哟西辅助制作... 方法辅助挂!齐齐乐哟西辅助制作(辅助)一直确实有辅助神器(新版有挂)1、齐齐乐哟西辅助制作透视辅助软...
明白辅助挂!爱玩联盟辅助软件(... 明白辅助挂!爱玩联盟辅助软件(辅助)都是确实有辅助教程(有挂实锤)1、完成爱玩联盟辅助软件有辅助插件...
有玩家发现!微乐小程序黑科技(... 有玩家发现!微乐小程序黑科技(辅助)其实是有辅助脚本(果真有挂)1、金币登录送、破产送、升级送、活动...
最新消息!蜀渝牌血战到底辅助(... 最新消息!蜀渝牌血战到底辅助(辅助)竟然确实有辅助器(有挂方略)1、蜀渝牌血战到底辅助透视辅助软件激...