美文网首页
逆向相关

逆向相关

作者: o无尘o | 来源:发表于2015-11-08 21:35 被阅读921次

    USB调试:

    1. 首先安装usbmuxd,在Mac下就不需要手动安装了,直接命令行
      brew install usbmuxd

    2. 使用iproxy命令映射端口,2222代表本机端口,22代表远程端口 此时提示等待连接 可以另外开个终端输入接下去的指令
      iproxy 2222 22 & 3333 1234

    3. ssh到设备上开启debugserver
      ssh -lroot 127.0.0.1 -p2222

    4. 查看需要debug的进程(这时已经在手机端)
      ps -A
      //附加进程
      debugserver *:1234 -a "SpringBoard"
      //启动进程
      debugserver -x backboard *:1234 path/IF.app/IF

    5. 本地lldb连接(电脑端)
      $: lldb
      (lldb): platform select remote-ios
      (lldb): process connect connect://127.0.0.1:3333




    脱壳:

    1: github 下载:dumpdecrypted

    2: 在下载的目录执行: make 命令.在当前目录会生成一个dumpdecrypted.dylib文件.此文件生成一次就可重用

    3: 用ps -e命令定位待脱壳app在手机中的目录(在手机端可以只开待脱壳一个应用) 用上面usb调试方法ssh登陆到手机端

     iphone:~ root# ps -e
     1767 ??         0:01.60 /usr/libexec/ptpd -t usb
     1806 ??         0:00.03 /usr/libexec/amfid
     1807 ??         0:00.00 (MSUnrestrictProc)
     1812 ??         0:23.66 /var/mobile/Containers/Bundle/Application/AA4626E2-39A3-4E82-AC7B-12549B0EF7B5/GuitarMaster.app/GuitarMaster
    

    4: 用Cycript找出待脱壳app在手机中的Documents目录(注意手机得解锁)

    iphone:~ root# cycript -p GuitarMaster
    cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
    #"file:///var/mobile/Containers/Data/Application/F116C3AF-156E-4C1B-BF54-055BBC5D2377/Documents/"
    iphone:~ root# ?exit
    

    5: 用scp命令pp助手iFunBoxdumpdecrypted.dylib复制到Documents目录下

    6: 开始脱壳(完成后在当前目录生成GuitarMaster.decrypted文件 复制到mac端 上IDA)

    iphone:~ root# cd /var/mobile/Containers/Data/Application/F116C3AF-156E-4C1B-BF54-055BBC5D2377/Documents/
    iphone:/var/mobile/Containers/Data/Application/F116C3AF-156E-4C1B-BF54-055BBC5D2377/Documents root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/AA4626E2-39A3-4E82-AC7B-12549B0EF7B5/GuitarMaster.app/GuitarMaster 
    mach-o decryption dumper
    
    DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.
    
    [+] detected 64bit ARM binary in memory.
    [+] offset to cryptid found: @0x100050c58(from 0x100050000) = c58
    [+] Found encrypted data at address 00004000 of length 11026432 bytes - type 1.
    [+] Opening /private/var/mobile/Containers/Bundle/Application/AA4626E2-39A3-4E82-AC7B-12549B0EF7B5/GuitarMaster.app/GuitarMaster for reading.
    [+] Reading header
    [+] Detecting header type
    [+] Executable is a FAT image - searching for right architecture
    [+] Correct arch is at offset 12353536 in the file
    [+] Opening GuitarMaster.decrypted for writing.
    [+] Copying the not encrypted start of the file
    [+] Dumping the decrypted data into the file
    [+] Copying the not encrypted remainder of the file
    [+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset bc8c58
    [+] Closing original file
    [+] Closing dump file
    iphone:/var/mobile/Containers/Data/Application/F116C3AF-156E-4C1B-BF54-055BBC5D2377/Documents root# 
    



    class-dump

    1. 下载最新版本class-dump-3.5.dmg
    2. 打开后把里边'class-dump'文件复制到'/usr/local/bin'目录下
    3. 命令行输入'sudo chmod 777 /usr/local/bin/class-dump'给可执行权限
    4. 上一步脱完壳已经把app的可执行文件复制到了mac中.这里命令行切换到app可执行文件所在目录.输入命令
    MAC:bin MAC$ cd /Users/WANG/Desktop/GuitarMaster 
    //当前GuitarMasterDecrypted可执行文件dump出头文件放到当前GuitarMasterDecryptedH目录下.按名字排序
    MAC:GuitarMaster MAC$ class-dump -S -s -H GuitarMasterDecrypted -o GuitarMasterDecryptedH
    



    LLDB:

    1: 查看ASLR偏移
    image list -o -f

    2:断点

    断点命令 说明
    b function name 直接用函数名字下断点 会输出断点号
    br s -a address 在地址处下断点
    br s -a 'ASLROffset+address' 同上
    br dis [断点号] 禁用断点 不带索引号表示全部禁用
    br end [断点号] 启用断点 索引同上
    br del [断点号] 删除断点 索引同上
    br com add [断点号] 断下来时 执行预先设置的指令 断点号在下断点时会输出
    // 引用自: http://iosre.com/t/lldb-oc/6711
    
    // 打印出MMServiceCenter类的所有函数 与 地址
    (lldb) po [MMServiceCenter _shortMethodDescription]
      //后面会跟这函数的当前所在地址
      - (id) getService:(Class)arg1; 0x100bd04f0
    
    // 该地址可以直接下断
    (lldb) b 0x100bd04f0
    
    // 打印数据模型内容的私有函数方法
    (lldb) po [模型对象 _ivarDescription]
    

    3:打印

    打印命令 说明
    disas 显示汇编
    bt 打印栈信息
    p $r0 打印寄存器的值
    po $r0 打印对象
    p/x $sp 以16进制打印sp寄存器
    x/10 $sp 打印sp指向的连续10个dword
    x/10xg $x0(addr) x/(显示命令) x(16进制显示) g(64位一组)
    x/10xw $x0(addr) w(32位一组)
    x/10s $x0(addr) s(字符串显示)
    x/10fg $x0(addr) f(以浮点数显示)
    cmd+k 清屏

    4:执行

    执行命令 说明
    c 运行
    ni 步过
    si 步入
    finish 步出
    参考资料:

    http://blog.tanyawei.com/2015/09/07/iOS-USB%E8%B0%83%E8%AF%95/
    <iOS应用逆向工程>

    相关文章

      网友评论

          本文标题:逆向相关

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