首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >iOS逆向 【砸壳】之利用dumpdecrypted进行app脱壳

iOS逆向 【砸壳】之利用dumpdecrypted进行app脱壳

作者头像
公众号iOS逆向
发布2021-03-24 16:03:43
发布2021-03-24 16:03:43
2.8K0
举报
文章被收录于专栏:iOS逆向与安全iOS逆向与安全

前言

原文

https://kunnan.blog.csdn.net/article/details/77981823

  • 加壳

利用特殊的算法,改变EXE可执行程序或者DLL动态连接库文件的编码(比如实现压缩、加密),以达到缩小文件体积或者加密程序编码,甚至是躲过杀毒软件查杀的目的。目前较常用的壳有UPX、ASPack、PePack、PECompact和UPack等。

  • 砸壳原理

其中用到的砸壳工具就是dumpdecrypted,其原理是让app预先加载一个解密的dumpdecrypted.dylib,然后在程序运行后,将代码动态解密,最后在内存中dump出来整个程序。

代码语言:javascript
复制
iPhone:~ root# DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/3A5D7F67-04E8-49CF-93CF-5019B11146D6/Documents/dumpdecrypted.dylib  /var/mobile/Containers/Bundle/Application/01ECB9D1-858D-4BC6-90CE-922942460859/WeChat.app/WeChat

先用dumpdecrypted工具先对加过密的ipa包进行砸壳,然后再用class-dump工具去导出它的头文件。

  • 砸壳的步骤:

1、找到app二进制文件对应的目录; 2、找到app document对应的目录; 3、将砸壳工具dumpdecrypt.dylib拷贝到ducument目录下;//目的是为了获取写的权限 4、砸壳;利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库dumpdecrypted.dylib 接下来要正式的dump可执行文件。

I、砸壳的准备工作

  • 用ssh进入连上的iPhone(确保iPhone和Mac在同一个局域网)。OpenSSH的root密码默认为alpine

http://blog.csdn.net/z929118967/article/details/77980812

代码语言:javascript
复制
 ssh 'root@192.168.2.212'

  • 使用ssh config配置文件来管理ssh连接
代码语言:javascript
复制
Host   : hostName的别名
HostName: 是目标主机的主机名,也就是平时我们使用ssh后面跟的地址名称。
Port:指定的端口号。
User:指定的登陆用户名。
IdentifyFile:指定的私钥地址。

  • iOS逆向工具usbMuxd的应用场景:【1、通过USB方式SSH到iOS越狱设备2、端口转发】
  • connecting-to-github-with-ssh 免密码进行SSH连接:【Mac 使用~/.ssh 的config 配置GitHub SSH keys】同样适用于gitlab

———————————————— 版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/z929118967/article/details/78234772

免密码进行SSH连接(connecting-to-github-with-ssh)

1.1、查找二进制文件对应的目录


代码语言:javascript
复制
iPhone:~ root# ps -e |grep WeChat
  405 ??         0:01.72 /var/mobile/Containers/Bundle/Application/E2B26C47-B989-492B-995C-47EFFA94DAB3/WeChat.app/WeChat
36068 ttys000    0:00.00 grep WeChat

或者

代码语言:javascript
复制
iPhone:~ root#  ps -e | grep /var/mobile
 7691 ??        13:22.82 /var/mobile/Containers/Bundle/Application/01ECB9D1-858D-4BC6-90CE-922942460859/WeChat.app/WeChat
 7836 ttys000    0:00.01 grep /var/mobile

因为从AppStore中下载安装的应用都会位于/var/mobile/..Applications中,

1.2、查找app document对应的目录

使用Cycript注入目标进程中

代码语言:javascript
复制
iPhone:~ root# cycript -p WeChat
cy# NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]
@"/var/mobile/Containers/Data/Application/91E7D6CF-A3D3-435B-849D-31BB53ED185B/Documents"

或者使用:

代码语言:javascript
复制
iPhone:~ root# cycript -p WeChat
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
#"file:///var/mobile/Containers/Data/Application/3A5D7F67-04E8-49CF-93CF-5019B11146D6/Documents/"

1.3、dumpdecrypted

  • dumpdecrypted.dylib 的获取

dumpdecrypted

代码语言:javascript
复制
devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ ls
Makefile README  dumpdecrypted.c
devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ 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
devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ ls -a
.   README   dumpdecrypted.o
..   dumpdecrypted.c
Makefile  dumpdecrypted.dylib

使用SCP 拷贝文件到iOS设备对应的目录

代码语言:javascript
复制
devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ scp ./dumpdecrypted.dylib root@192.168.2.212://var/mobile/Containers/Data/Application/91E7D6CF-A3D3-435B-849D-31BB53ED185B/Documents
root@192.168.2.212's password: 
dumpdecrypted.dylib                                                                                                                                    100%  193KB  64.0KB/s   00:03    
devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ 

II、砸壳

  • 利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库dumpdecrypted.dylib
代码语言:javascript
复制
DYLD_INSERT_LIBRARIES=/PathFrom/dumpdecrypted.dylib /PathTo

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • I、砸壳的准备工作
    • 1.1、查找二进制文件对应的目录
    • 1.2、查找app document对应的目录
    • 1.3、dumpdecrypted
  • II、砸壳
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档