【IOS逆向】dumpdecrypted砸壳
前面简单尝试了下frida-trace,发现可以追踪对应pid动态运行时的各种函数,但是对于一个完整APP应用,我们如何得到关键的运行函数,这里就需要对IPA进行一个逆向拆解,找代码逻辑,然后结合frida动态去看了。
爱思助手下载IPA
Apple Configuration下载IPA
这个是通过缓存IPA,这是APPLE官方出品的,不同于爱思是镜像苹果商城,这个方法比较推荐
登录APPLEid,然后从历史iCloud里面找你的app下载记录,
点击添加,他会先缓存ipa
~/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
可以先从文件夹取出来,再点击停止行了。
砸壳
dumpdecrypted
✘ ~/repos git clone https://github.com/stefanesser/dumpdecrypted.git
Cloning into 'dumpdecrypted'...
remote: Enumerating objects: 31, done.
remote: Total 31 (delta 0), reused 0 (delta 0), pack-reused 31
Receiving objects: 100% (31/31), 7.10 KiB | 1.77 MiB/s, done.
Resolving deltas: 100% (15/15), done.
~/repos cd dumpdecrypted
~/repos/dumpdecrypted master ls
Makefile README dumpdecrypted.c
~/repos/dumpdecrypted master mke
zsh: command not found: mke
✘ ~/repos/dumpdecrypted master 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
~/repos/dumpdecrypted master ls
Makefile README dumpdecrypted.c dumpdecrypted.dylib dumpdecrypted.o
~/repos/dumpdecrypted master
完成上述之后我们得到了编译后的产物dumpdecrypted.dylib,现在将他弄到手机里
openssh
首先需要在cydia中下载openssh
然后找到你手机的ip地址(wifi里面看)
电脑连接ssh
ssh root@192.168.0.103
这里openssh默认的root密码是alpine
,建议修改,修改如下
iPhone:~ root# passwd
Changing password for root.
New password:
Retype new password:
iPhone:~ root#
scp传进来即可
搜索App应用位置
对我们的动态库进行签名
ldid -S dumpdecrypted.dylib
砸壳,以wechat为例:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/58F8F561-7406-479B-B90E-64C266218A4B/WKMainProject.app/WKMainProject
如果出现
则表示砸壳失败
否则会在当前文件夹下生成脱壳后的mach-0文件:生成: app名字.decrypted
通过如下命令可以看到文件是否加密
otool -l WeChat|grep cry