简介
从 AppStore下载下来的二进制文件都是加了壳的,所以为了让它的内核破茧而出,我们需要砸壳操作。
所以就需要dumpdecrypted这个工具,它是手机端 的,可以从Github下载。
下载完后,在终端有输入命令打包,用iFunBox
拷贝到你手机的指定目录下。
剥壳需要用到的工具
- Mac 电脑
- 越狱的手机
- WIFI
- 手机插件OpenSHH
- iFunBox
- dumpdecrypted.dylib
安装 dumpdecrypted.dylib
关于工具的安装,可以参考我的这篇博客:[iOS HACKING入门]微信注入。:dumpdecrypted.dylib
,只有有这个家伙,才能完成剥壳!
关于安装过程,Google一下,一大堆。
定位目标app可执行文件
打开iFunBox,将上一步下载的dylib文件,复制到/User/Downloads
目录下。
手机上杀掉其它的app,保留目标app运行。
用ssh连接到手机
ssh [email protected]
其中xx.xx.xx.xx
表示你的手机的IP地址,具体操作可以参考我的博客[iOS HACKING入门]微信注入。
连续2次输入cd ..
命令到根目录:
cd ..
cd ..
输入pwd
验证是否为根目录:
pwd
结果为/
表示为根目录:
guifengxiade-iPhone:/ mobile$ pwd
/
输入指令:
su mobile
定位目标app可执行文件路径,cd到如下路径:
/private/var/containers/Bundle/Application
执行命令:
ps -e
然后command+F
搜索目标app的路径:
比如,我这里目标app是微信,那么我搜索:
wechat
得到微信可执行文件路径:
/var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat
若找不到可执行文件路径,解决方案如下:
在Mac上下载目标app的ipa文件,右键,用实用归档工具打开,然后在解压后的文件夹中找到
Payload/xxx.app
,找到可执行文件的位置,如我要hack微信(WeChat),可执行文件位置为:
Payload/WeChat.app/WeChat
然后在手机上运行目标app,如启动微信,杀掉其它app然后根据上面拿到的可执行文件名WeChat
执行如下命令
ps aux | grep "WeChat"
同样可以找到目标文件的可执行文件在手机中的路径:/var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat
:
mobile 513 0.0 4.8 911344 49328 ?? Ss 10:37AM 0:10.41 /var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat
root 825 0.0 0.0 527168 304 s000 R+ 11:03AM 0:00.01 grep WeChat
让目标程序破茧而出
cd 到/User/Downloads
目录下,执行命令:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat
完成之后,显示如下:
[+] detected 64bit ARM binary in memory.
[+] offset to cryptid found: @0x100048ca8(from 0x100048000) = ca8
[+] Found encrypted data at address 00004000 of length 47087616 bytes - type 1.
[+] Opening /private/var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat for reading.
[+] Reading header
[+] Detecting header type
[+] Executable is a plain MACH-O image
[+] Opening WeChat.decrypted for writing.
[+] Copying the not encrypted start of the file
[+] Dumping the decrypted data into the file
[+] Copying the not encrypted remainder of the file
[+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset ca8
[+] Closing original file
[+] Closing dump file
在User/Downloads/
目录下的找到到剥壳后的文件xxx.decrypted文件
:
注意,若此过程出现Killed:9
错误,只需要执行命令:
cd /
su mobile
然后重新回到/User/Downloads
cd /User/Downloads
再执行剥壳命令即可:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat
这个问题要感谢个issue:Killed 9: issue on 64bit iOS 9.3.3 ~
至此,剥壳完成,接下来可以做其它更加深入的操作,请关注我的或博客,我会在和我的个人博客上不定期更新iOS Hack系列技术文章,欢迎交流!
关于我
- Blog: CGPointZeero
- GitHub: Insfgg99x
- Mooc: CGPointZero
- Jianshu: CGPointZero
- Email: [email protected]
@CGPoitZero