使用frida-ios-dump工具一键脱壳

2021-10-04  本文已影响0人  Jorunk

一、壳

  1. APP上传到AppStore后,会被自动加壳,即利用特殊的算法, 对可执行文件的编码进行改变(例如:压缩、加密),已达到保护程序代码的目的。
  2. 加壳之前,执行程序,就会直接把可执行文件载入到内存中,如下图所示


  3. 加壳之后,执行程序,会把包裹着加密可执行文件的壳程序载入内存,在内存中,由壳程序对可执行文件进行解密,然后才会执行,如下图所示:


  4. 加壳之后,由于可执行文件被加密了,所以就无法通过MachOView、Hopper Disassembler、class-dump、IDA等工具分析Mach-O文件了

二、脱壳

脱壳就是摘掉壳程序,将未加密的可执行文件还原出来
脱壳的办法主要有两种:硬脱壳、动态脱壳
3.硬脱壳就是编写解密算法,把经过壳程序加密的可执行文件解密出来,如下图所示:



4.动态脱壳就是把内存中已经解密的可执行文件,直接从内存中导出来,如下图所示:


  1. 如何判断可执行文件是否已经脱壳了呢?这里介绍两种办法:

三、脱壳工具

  1. 最早的砸壳工具是stefanesser写的dumpdecrypted,通过手动注入然后启动应用程序在内存进行dump解密后的内存实现砸壳,这种砸壳只能砸主App可执行文件。

  2. 对于应用程序里面存在framework的情况可以使用conradev的dumpdecrypted,通过_dyld_register_func_for_add_image注册回调对每个模块进行dump解密。但是这种还是需要拷贝dumpdecrypted.dylib,然后找路径什么的,还是挺麻烦的。

  3. 然后有了KJCracks的Clutch,通过posix_spawnp创建进程然后dump直接生成ipa包在设备,可以说是很方便了。这个是工具在使用的时候大部分应用会出报错,此外生成的包还需要自己拷贝。

四、配置frida

  1. frida-ios-dump(下载地址)是基于frida的,所以先要在手机和电脑上安装frida,命令如下
  1. 通过USB使用SSH连接iOS设备
brew install usbmuxd

安装usbmuxd库之后,就顺带安装了一个小工具iproxy,该工具会将设备上的端口号映射到电脑上的某一个端口,例如:

iproxy 2222 22
  1. cd进入下载好的frida-ios-dump目录后,运行./dump.py Display name或Bundle identifier,就可脱壳成功,如下所示:
可以先用./dump.py -l命令,列出来所有的可脱壳的应用名称和BundleID
./dump.py -l

让然后选择其中一个,执行./dump.py Display name命令,以微信为例:
./dump.py com.tencent.xin
上一篇 下一篇

猜你喜欢

热点阅读