下载dumpdecrypted的源码
源码下载地址是“https://github.com/stefanesser/dumpdecrypted/archive/master.zip243”,下载后请将其解压至你习惯的位置,例如楼猪为/Users/snakeninny/Code/
,解压后生成/Users/snakeninny/Code/dumpdecrypted-master/
。
输入:
snakeninnysiMac:cd /Users/snakeninny/Code/dumpdecrypted-master/
snakeninnysiMac:make
显示:
`xcrun --sdk iphoneos --find gcc` -Os -Wimplicit -isysroot `xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/Frameworks -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -c -o dumpdecrypted.o dumpdecrypted.c
`xcrun --sdk iphoneos --find gcc` -Os -Wimplicit -isysroot `xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/Frameworks -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -dynamiclib -o dumpdecrypted.dylib dumpdecrypted.o
上面的make命令执行完毕后,会在当前目录下生成一个dumpdecrypted.dylib文件,这就是我们等下砸壳所要用到的榔头。此文件生成一次即可,以后可以重复使用,下次砸壳时无须再重新编译。
用ps命令定位待砸壳的可执行文件:
snakeninnysiMac:ssh -t root@yourIP -p 22 (连接上你的iPhone,默认密码alpine)
输入:
FunMaker-5:ps -e
有/var/mobile/Containers/Bundle/Application/
字样的结果就是TargetApp可执行文件的全路径。
输入:
FunMaker-5: cycript -p TargetApp
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
输出:
#"file:///var/mobile/Containers/Data/Application/D41C4343-63AA-4BFF-904B-2146128611EE/Documents/"
将dumpdecrypted.dylib拷贝到Documents目录下。拷贝命令如下:
snakeninnysiMac:scp /Users/snakeninny/Code/dumpdecrypted/dumpdecrypted.dylib root@192.168.2.2:/var/mobile/Containers/Data/Application/D41C4343-63AA-4BFF-904B-2146128611EE/Documents/dumpdecrypted.dylib这里采用的是scp方式,也可以使用iFunBox等工具来操作。
FunMaker-5: cd /var/mobile/Containers/Data/Application/D41C4343-63AA-4BFF-904B-2146128611EE/Documents/
FunMaker-5:/var/mobile/Containers/Data/Application/D41C4343-63AA-4BFF-904B-2146128611EE/Documents root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/03B61840-2349-4559-B28E-0E2C6541F879/TargetApp.app/TargetApp mach-o decryption dumper
当前目录下会生成TargetApp.decrypted,即砸壳后的文件:
输入:ls
输出:TargetApp.decrypted dumpdecrypted.dylib OtherFiles
赶紧把砸壳后的文件拷贝到OSX上备用吧,class-dump、IDA等工具已经迫不及待啦。
以上6步还算简洁明了,但可能会有朋友问,为什么要把dumpdecrypted.dylib拷贝到Documents目录下操作?
问得好。我们都知道,StoreApp对沙盒以外的绝大多数目录没有写权限。dumpdecrypted.dylib要写一个decrypted文件,但它是运行在StoreApp中的,与StoreApp的权限相同,那么它的写操作就必须发生在StoreApp拥有写权限的路径下才能成功。StoreApp一定是能写入其Documents目录的,因此我们在Documents目录下使用dumpdecrypted.dylib时,保证它能在当前目录下写一个decrypted文件,这就是把dumpdecrypted.dylib拷贝到Documents目录下操作的原因。
class-dump丫:
class-dump --arch armv7 AlipayWallet.decrypted > ./AlipayWallet_header.h
class-dump-H --arch armv7 AlipayWallet.decrypted -o ./AlipayWallet_header
成功!
创建tweak
输入: /opt/theos/bin/nic.pl
选择:创建 iphone/tweak
OK!