dumpdecrypted

前言

本文重点推荐使用frida-ios-dump-master,而非dumpdecrypted.dylib。

frida-ios-dump-master

使用frida-ios-dump-master 只需先用frida-ps查看applications Name ,之后执行dump.py 即可在dump.py 目录下生成砸壳之后的ipa包。

Frida环境的搭建可以看下这篇文章

dumpdecrypted.dylib

*dumpdecrypted的原理:通过向宏 DYLD_INSERT_LIBRARIES 里写入动态库的完整路径,就可以在可执行文件加载的时候,将动态链接库插入。

把自己通过DYLD_INSERT_LIBRARIES这个环境变量注入到已经通过系统加载器解密的 mach-o文件(因此要求程序是运行状态),再把解密后的内存数据 dump出来--并没有破解 appstore的加密算法
  • dumpdecrypted/dumpdecrypted.c
    <!-- __attribute__((constructor)) 在main() 之前执行,__attribute__((destructor)) 在main()执行结束之后执行. -->
    __attribute__((constructor))
    void dumptofile(int argc, const char **argv, const char **envp, const char **apple, struct ProgramVars *pvars)
    <!--  -->
    

砸壳的步骤:

*1、找到app二进制文件对应的目录;

ps -e|grep /var/mobile/Container*

*2、找到app document对应的目录;

cycript -p 
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

*3、将砸壳工具dumpdecrypt.dylib拷贝到ducument目录下; //目的是为了获取写的权限

devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ scp ./dumpdecrypted.dylib root@192.168.2.212://var/mobile/Containers/Data/Application/91E7D6CF-A3D3-435B-849D-31BB53ED185B/Documents

*4、砸壳;利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库dumpdecrypted.dylib

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/01ECB9D1-858D-4BC6-90CE-922942460859/KNWeChat.app/KNWeChat

第一个path为dylib,目标path 为app二进制文件对应的目录

  • iPhone:~ root# find / -name “.” | xargs grep “DYLD_INSERT_LIBRARIES” > ~/text.text
    iPhone:~ root# cat  text.text
    Binary file /Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib matches
    Binary file /Developer/usr/lib/libBacktraceRecording.dylib matches
    Binary file /Library/Frameworks/CydiaSubstrate.framework/Libraries/SubstrateLauncher.dylib matches
    Binary file /Library/Frameworks/CydiaSubstrate.framework/Libraries/SubstrateLoader.dylib matches
    Binary file /System/Library/Caches/com.apple.xpcd/xpcd_cache.dylib matches
    /System/Library/LaunchDaemons/com.apple.searchd.plist:		<key>no_DYLD_INSERT_LIBRARIES</key>
    

可以dump混编的

  • 可以dump混编的
    devzkndeMBP:bin devzkn$ swiftOCclass-dump  --arch arm64 /Users/devzkn/decrypted/AppStoreV10.2/Payload/AppStore.app/AppStore -H -o  /Users/devzkn/decrypted/AppStoreV10.2/head
    

签名

  • 查询可签名证书
    exit 0devzkndeMacBook-Pro:.git devzkn$ security find-identity -v -p codesigning
    2) CB45FC98D2F6BC553EF706D835077 "iPhone Developer: kn zhang (48M9)"
    17 valid identities found
    
  • 为dumpecrypted.dylib签名的例子
    codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib
    

see also

转载请注明: > dumpdecrypted

在操作过程或者文章有问题的话欢迎在 原文 里提问或指正。

赞赏支持

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少
最近的文章

antiDebugger

前言软件的逆向工程指的是通过分析一个程序或系统的功能、结构或行为,将它的技术实现或设计细节推导出来的过程。当我们因为工作需要,或是对一个软件的功能很感兴趣,却又拿不到它的源代码时,往往可以通过逆向工程的方式对它进行分析,探索它的实现原理。一个生动的比喻:照着配方包饺子,是正向开发 吃着饺子推配方(API 调用顺序),是逆向工程。iOS 逆向分析方法从二进制文件入手,尝试从汇编代码中理清原始逻辑,并修改/绕过以达到目的。 1、网络分析 抓包工具有 tcpdump, Wir...…

anti继续阅读
更早的文章

CustomHTTPProtocol

前言在每一个 HTTP 请求开始时,URL 加载系统创建一个合适的 NSURLProtocol 对象处理对应的 URL 请求;而我们需要做的就是写一个继承自 NSURLProtocol 的类,并通过 - registerClass: 方法注册我们的协议类;然后 URL 加载系统就会在请求发出时使用我们创建的协议对象对该请求进行处理。这样,我们需要解决的核心问题就变成了如何使用 NSURLProtocol 来处理所有的网络请求,本文主要是对官网提供的CustomHTTPProtocol 进行...…

iOSre继续阅读
更多