美文网首页
iOS逆向开发小贴士

iOS逆向开发小贴士

作者: 法小克丶 | 来源:发表于2018-11-14 15:18 被阅读0次

    帮debugserver减肥

    lipo -thin armv7s ~/debugserver -output ~/debugserver

    添加task_for_pid权限

    /opt/theos/bin/ldid -Sent.xml debugserver

    //移回iOS设备

    scp ~/debugserver root@iOSIP:/usr/bin/debugserver

    //ASLR

    随机偏移量

    LLDB  image list -o -f打印出来

    (已知 迁移后地址在尾部)            (在LLDB 前[x] 前的地址)

     迁移后基地址    =    偏移前基地址    +    ASLR偏移量

    //需计算

    (尾部)              -        (前部)

    偏移前基地址    =    迁移后基地址  -    ASLR偏移量

    ————————————————————————

    //符号基地址

    例如

    NSLog的基地址  =  “就是在IDA中查看SUB SP SP #0xC左边的那个”  0x2261AB94

    “Foundation的基地址  = 0x2260A000  (偏移前模块地址)

    “就是在IDA中查看SUB SP SP #0xC左边的那个数”0x2261AB94  代表NSLog在Foundation中位置  -    0x2260A000  (偏移前模块地址)  =  0x10B94就是“NSLog函数在Foundation中的相对位置  “

                        IDA中查看的) NSLog偏移前0x2261AB94                (在LLEB前的偏移量) FoundationASLR偏移  0x1645000

    偏移后符号基地址=        偏移前符号基地址                                          +                            符号所在模块的ASLR偏移

     偏移后符号基地址=  0x23C5FB94

    根据           

    偏移后模块基地址 = 偏移前模块基地址 + ASLR

    得出符号及地址

    偏移后符号基地址 = 偏移前符号基地址 + 符号所在模块的ASLR偏移

    举一反三,指令基地址的计算也可以套用上面的公式:

    偏移后指令基地址 = 偏移前指令基地址 + 指令所在模块的ASLR偏移

    自然,符号基地址=符号对应函数第一条指令的基地址

    “偏移前基地址从IDA里看,ASLR偏移从LLDB里看,两者相加就是偏移后基地址。”

    NSLog函数第一条指令“SUB SP,SP,#0xC”左边的那个数0x2261AB94  ——  IDA

    在以刚才“image list-o-f”输出中的第4个模块(即Foundation)为例,它的ASLR偏移是0x1645000  ——LLDB

    [NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0] 

    相关文章

      网友评论

          本文标题:iOS逆向开发小贴士

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