[iOS Reverse]用dumpdecrypted.dylib剥壳

简介

从 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

[iOS Reverse]用dumpdecrypted.dylib剥壳_第1张图片

若找不到可执行文件路径,解决方案如下:
在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

[iOS Reverse]用dumpdecrypted.dylib剥壳_第2张图片

你可能感兴趣的:([iOS Reverse]用dumpdecrypted.dylib剥壳)