美文网首页iOS逆向
逆向学习笔记

逆向学习笔记

作者: Fly晴天里Fly | 来源:发表于2019-05-09 16:28 被阅读0次

    重签名:
    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客户端的反动态调试保护

    相关文章

      网友评论

        本文标题:逆向学习笔记

        本文链接:https://www.haomeiwen.com/subject/siwwoqtx.html