逆向学习笔记

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

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

LLDB
常用命令

  1. po
  2. breakpoint set
  3. 参数打印: po 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]


>
   | >
   |    | <_UILabelContentLayer: 0x1c44252e0> (layer)
   | 

逆向分析工具

工具分类 工具名称
越狱工具 盘古、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客户端的反动态调试保护

你可能感兴趣的:(逆向学习笔记)