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

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 [email protected] 
[email protected]'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 [email protected]:/var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/
[email protected]'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  [email protected]:/var/mobile/Applications/B1215D4A-24B7-480F-B91D-8F5386B0211A/Documents/xxx.decrypted (Mac路径)
[email protected]'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 砸壳)