一、概述
从App Store下载的应用是加过壳的,加壳的应用是不能直接执行的,手机之所以能够使用下载的app,是因为操作系统有解密的方法。
Mach-O文件 -> 苹果加密 -> 加壳文件
加壳文件 ->系统解密 -> Mach-O文件(DYLD)
1.DRM(数字版权管理)检查
2.找到合适的架构进行解密
3.使用DYLD加载解密的MachO
砸壳工具(GitHub上)
*Clutch (静态砸壳)
*dumpdecrypted (动态砸壳)
二、砸壳
1.使用Clutch砸壳(使用Clutch砸壳需要拷贝到越狱设备上)
$ file Clutch-2.0.4
1.1先映射之后,再拷贝到越狱设备的bin目录下,放在bin目录下,在其他地方也可以使用clutch的命令
$ scp -P 12345 Clutch-2.0.4 root@localhost:/usr/bin (拷贝)
1.2在“~/”目录下输入clutch命令没有提示,需要修改下名字才会有提示
$ mv Clutch-2.0.4 Clutch (修改Clutch-2.0.4 为Clutch)
1.3添加权限
$ chmod +x Clutch
1.4查看可以砸壳的应用
$ Clutch -i
1.5砸壳
Clutch -d com.gotokeep.keep
2.使用dumpdecrypted砸壳
$ make
2.1把动态库拷贝到越狱设备上
$ scp -P 12345 dumpdecrypted.dylib root@localhost:~/
2.2 DYLD_INSERT_LIBRARIES是DYLD(动态连接器)的一个环境变量,DYLD在加载过程中,通过DYLD_INSERT_LIBRARIES添加一个动态库 ,并依附一个进程,使添加的动态库被执行,通过2.3可以看出,添加的动态库被执行了
$ DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib xxx
注意:动态库作用:把内存中可执行文件拷贝出来
把动态库拷贝出来的可执行文件拷到桌面
$ scp -P 12345 root@localhost:~/WeChat.decrypted ~/Desktop
2.3新建动态库test(测试用)(framework动态库下有Mach-O文件test,dylib没有)
因为test.framework是文件夹所以加了个 -r
$ scp -r -P 12345 test.framework/ root@localhost:~/
添加动态库中的可执行文件
DYLD_INSERT_LIBRARIES=test.framework/test xxx(xxx为某个应用的进程)
三.Theos的配置和使用
1.Theos的配置
https://github.com/theos/theos/wiki/Installation
Homebrew安装:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
常用的方式
brew install ldid 安装
brew uninstall ldid 卸载
brew search ldid 搜索
brew upgrade ldid 更新
brew list 查看列表
brew update 更新Homebrew
2.Theos的使用(窃取微信密码)
配置IP和端口
注意:
关于Theos的坑!!!!
1.不要在中文目录下编译工程.否则报错!
2.packageName(包名称),全部小写!!!
打包的问题:make package
Error: IO::Compress::lzma
解决方案两种:
1.安装xz
$ brew install xz
$ sudo cpan IO::Compress::Lzma
2. 改变压缩方式
2.1修改dm.pl 文件
vim $THEOS/$THEOS/vendor/dm.pl/dm.pl
#use IO::Compress::Lzma;
#use IO::Compress::Xz;
2.2修改deb.mk 文件
vim $THEOS/makefiles/package/deb.mk
修改为:
_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= gzip
编译的问题:make
Error: You do Not an SDK
需要指定Xcode . 安装过MonkeyDev
make clean 清除缓存!
推荐
https://www.jianshu.com/p/2efa44f2151f