美文网首页
iOS 逆向工程一 App Store 下载的 app 砸壳

iOS 逆向工程一 App Store 下载的 app 砸壳

作者: 桀骜不驯的搬砖者 | 来源:发表于2018-08-05 16:45 被阅读0次
    PS: 后面写有一篇砸壳成 ipa 的,但是这篇也得看。要不然有些基础你不知道。
    特别声明此文只是对以下博客的总结笔记:(这位博主写的很详细大家可以去他的博客看看)

    参考博主: https://www.jianshu.com/p/4da57be23275

    原理:通过越狱手机将砸壳文件注入到要砸壳 app 的沙盒目录下面,然后执行砸壳程序。
    开始之前准备要的工具:
    1. 一台越狱的手机(在越狱机上Cydia上安装 openSSH 和 Cycript)[这里我用的是:iPhone 5c iOS 8.3]

    oppenSSH: 这个是通过 Mac 终端连接越狱手机的文件
    Cycript:这个能找到要砸壳 app 的沙盒文件路径(还有其他强大的用法可去Google)

    2. dumpdecrypted 代码 ----这个是要注入app 的砸壳文件
    3. class-dump 代码 ----这个是 Mac 终端对砸壳之后的 app 导出头文件使用的文件

    步骤:四步

    一、先把 dumpdecrypted 编译成动态库, 很简单:终端切换到下载到的文件夹下,make 回车就好了。
    二、把砸壳文件复制到要砸壳 app 的沙盒路径

    注意⚠️:(手机和电脑需要在同一网段,其实手机和 Mac 通过 USB 连接最好,或者通过网络共享也是可以的)
    要输入密码的默认是:alpine (请记住这个密码,下面很多地方用到)

    2.1 终端连接手机: ssh root@手机IP
    例如:
    Mac$ ssh root@192.168.8.12 
    root@192.168.8.12's password: 
    iPhone4:~ root# (此时表示连接手机成功)
    
    2.2 找到要砸壳 app 的沙盒路径
    手机上运行要砸壳的 app ,和杀掉所有不相关 app, 为了方便找到该 app
    Mac 终端输入:ps -e 
    例如:
    iPhone4:~ root# ps -e 
      PID TTY           TIME CMD
     1556 ??         0:00.10 /usr/libexec/afc2d -S -L -d /
     1564 ??         0:03.07 /usr/libexec/deleted --idleExit
     1566 ??         0:00.15 /System/Library/PrivateFrameworks/GeoServices.framework/geod
     1568 ??         0:00.36 /usr/libexec/mobileassetd
     1570 ??         0:00.63 /System/Library/Frameworks/AssetsLibrary.framework/Support/assetsd
     1612 ??         0:00.37 sshd: root@ttys000 
     1622 ??         0:06.20 /var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/xxx.app/xxx
     1623 ??         0:00.10 /System/Library/Frameworks/UIKit.framework/Support/pasteboardd
     1613 ttys000    0:00.05 -sh
     1628 ttys000    0:00.01 ps -e
    iPhone4:~ root#
    
    注意⚠️:/var/mobile/ 开头的就是我们手机运行的 app 路径
    
    2.3 使用Cycript 找到 app 的 Documents 目录路径,它很强大可进行很多牛逼的操作
    ⚠️ # xxx : 这是该 app 的名(不带.app)
    iPhone4:~ root# cycript -p xxx   
    cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
    #"file:///var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/"
    cy#[control+D,来退出Cycript]
    
    2.4 步骤二,最后一步,把砸壳文件复制到刚才得到的路径下面
    Mac$ scp /Users/Mac/Desktop/dump/dumpdecrypted.dylib root@192.168.8.12:/var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/
    root@192.168.8.12's password: 
    dumpdecrypted.dylib                         100%   81KB  81.0KB/s   00:00    
    Mac$
    
    三、执行砸壳文件
    iPhone4:~ root# cd /var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/
    iPhone4:/var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents root# DYLD_INSERT_LIBRARIES=dumpdecrypted_7.dylib /var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/xxx.app/xxx
    mach-o decryption dumper
    
    DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.
    
    [+] detected 32bit ARM binary in memory.
    [+] offset to cryptid found: @0x4a4c(from 0x4000) = a4c
    [+] Found encrypted data at address 00004000 of length 46284800 bytes - type 1.
    [+] Opening /private/var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/QQ.app/QQ for reading.
    [+] Reading header
    [+] Detecting header type
    [+] Executable is a FAT image - searching for right architecture
    [+] Correct arch is at offset 16384 in the file
    [+] Opening QQ.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 4a4c
    [+] Closing original file
    [+] Closing dump file
    
    然后接着执行:ls
    发现该目录下有一个 xxx.decrypted 的文件,就是砸壳之后的文件,把它拷贝到 Mac 端
    在 Mac 终端(非手机终端):
    Mac$ scp  root@192.168.8.12:/var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/xxx.decrypted (Mac路径)
    root@192.168.8.12's password: 
    
    四、使用class-dump将文件解析
    Mac$ cd /Users/damon/Desktop/test 
    Mac:test Mac$ class-dump --arch armv7 xxx.decrypted > 123.m
    Mac:test Mac$ 
    得到的123.m文件就是我们需要的头文件
    其他型号使用相对应的 4(armv7),4s(armv7),5(armv7),5s(arm64),6(arm64),6s(arm64)
    
    注意⚠️:如果是非 App store 渠道下的包,可以使用该命令:
    class-dump -H 越狱包路径 -o 输出路径
    例如:
    class-dump - H xxx.app -o /user/Desktop/Test
    
    最终你们自己去装X吧

    相关文章

      网友评论

          本文标题:iOS 逆向工程一 App Store 下载的 app 砸壳

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