逆向学习笔记

重签名:
iOS App 签名的原理--总结的非常细,一看就明白
逆向学习笔记9——代码重签名
ios-app-signer 执行重签名

fishhook的原理
iOS逆向工程 - fishhook原理--讲的明白,需要结合mach-o文件一起看。
逆向学习笔记6——MachO文件

LLDB
常用命令

  1. po
  2. breakpoint set
  3. 参数打印: po r0。 p (char*)r1。 p (SEL)$r1
  4. 栈信息:bt
  5. 返回地址: p/x $lr
  6. 列举模块:image -o -f
  7. 能实时的执行代码中的代码逻辑:expr

反反调试
1. 反调试。通过sysctl函数反调试。检测我们的进程有没有被附件调试。
2. 反注入
3. hook检查
4. 完整性检查(Load Command的修改,重签名校验-boundleID是否被修改,app目录下有没有embedded.mobileprovision文件及文件中包含的签名信息)
5. 代码混淆

动态调试-断点

方法名设置:
breakpoint set -n "-[SKTGraphicView alignLeftEdges:]"
地址设置:breakpoint set -a 0x16f6c3950
打印函数入参: po $x0
调用block: expr ((void ()(BOOL,NSString*))0x2c7140)(NO, @"Test")

看过"小黄书"的朋友们应该都对函数OC函数下断点步骤很清楚:
LLDB连接到程序
查看app二进制偏移:image -o -f
在hopper或者IDA查看需要下断点的函数的文件偏移
LLDB输入br s -a 'app二进制偏移+函数的文件偏移'
但是作为传统的方式以上方法存在两个问题

需要hopper或者IDA支持,这两个软件对电脑配置的要求较高,而且反汇编速度较慢。
不能对“已经通过运行时替换函数实现地址的函数”进行拦截
作为一个逆向开发新手,特分享一个以小技巧,可以免除对反汇编软件的依赖,而且拦截成功率更高。

LLDB连接到程序
找到需要下断点的类,如MMServiceCenter,然后在LLDB命令行输入po [MMServiceCenter _shortMethodDescription]。以微信的[MMServiceCenter getService:]断点为例,操作如下:


image.png

然后在命令行输入b 0x100bd04f0即可实现下断操作,实践效果如下:


image.png

LLDB查找到具体一个方法的内存地址:

po [MMServiceCenter _shortMethodDescription]
po [0x1c003f7a0 _methodDescription]
po [0x1c003f7a0 _ivarDescription]

跟踪查看view的布局结构:

po [0x15de47fa0 _autolayoutTrace]

IWindow:0x15bd31430
|   UILayoutContainerView:0x15be35140
|   |   UINavigationTransitionView:0x15bd2b020
|   |   |   UIViewControllerWrapperView:0x15bd475e0
|   |   |   |   UIView:0x15be48700
|   |   |   |   |   UIView:0x15be488f0
|   |   |   |   |   |   UIImageView:0x15be48ae0
|   |   |   |   |   |   UIButton:0x15be4b220
|   |   |   |   |   |   |   UIButtonLabel:0x15bd356d0
|   |   |   |   |   |   UILabel:0x15be4bae0
|   |   |   |   |   |   UIButton:0x15be4bdc0
|   |   |   |   |   |   |   UIButtonLabel:0x15bd36700
|   |   |   |   |   |   UIButton:0x15bd36a00
|   |   |   |   |   |   |   UIButtonLabel:0x15bd36d20

查看一个view对象的层次结构:

po [0x15de47fa0 recursiveDescription]


<YJProfileUserBaseInfoView: 0x15de47fa0; frame = (0 0; 414 64); layer = <CALayer: 0x1c4039ae0>>
   | <UILabel: 0x15de483c0; frame = (20 30; 330 28); text = '晴天'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1c42803c0>>
   |    | <_UILabelContentLayer: 0x1c44252e0> (layer)
   | <UIButton: 0x15bd9e560; frame = (308 30; 86 28); hidden = YES; opaque = NO; layer = <CALayer: 0x1c063cf60>>
   |    | <UIButtonLabel: 0x15bd9ef40; frame = (14.3333 5.33333; 57.3333 17); text = '点击登录'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1c0482670>>
   |    |    | <_UILabelContentLayer: 0x1c44262a0> (layer)
   | <UIImageView: 0x15bd9f240; frame = (360 27; 34 34); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1c065c650>; layer = <CALayer: 0x1c063ee80>>
   | <UIImageView: 0x15bd9f470; frame = (359 17.6667; 36 45); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1c063efe0>>
   | <UIImageView: 0x15bd9fea0; frame = (377 42; 22 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1c063f460>>

逆向分析工具

工具分类 工具名称
越狱工具 盘古、pp越狱助手
砸壳工具 dumpdecrypted、Clutch、Frida-ios-dump(推荐)
查看头文件工具 class-dump
反汇编工具 Hopper, IDA Pro
调试器 Cycript, gdb
UI分析工具 Reveal
集成开发工具 Theos ---> iOSOpenDev ---> MonkeyDev
网络分析工具 Charles、Wireshark

最好的论坛了

http://iosre.com/

Other:

学习资料资源入口整理(一起整理啦)
无须越狱、自动集成、只需要一个砸壳的应用---MonkeyDev
我的debug速查表(入门级)My debug cheatsheet
逆向学习笔记1 —— 工具安装
逆向学习笔记

实例
我是怎样一步一步实现微信自动抢红包的?
钉钉红包插件逆向开发实践
PP逆向分析之钉钉抢红包插件的实现-iOS篇
免越狱版 iOS 微信抢红包插件
去掉腾讯视频啰嗦广告
逆网易云音乐 vip下载
逆向微信消息界面实现(只是界面UIKit哦)

反反调试
实战:干掉高德地图7.2.0版iOS客户端的反动态调试保护

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容