iOS逆向工程(六):使用frida-ios-dump工具,一键脱壳

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

一、加壳
    1. 我们知道App上传到AppStore后,会被自动加壳,那么什么是加壳呢?加壳就是利用特殊的算法, 对可执行文件的编码进行改变(例如:压缩、加密),已达到保护程序代码的目的。
    1. 加壳之前,执行程序,就会直接把可执行文件载入到内存中,如下图所示:
      加壳之前的执行过程.png
    1. 加壳之后,执行程序,会把包裹着加密可执行文件的壳程序载入内存,在内存中,由壳程序对可执行文件进行解密,然后才会执行,如下图所示:
      加壳之后的执行过程.png
    1. 加壳之后,由于可执行文件被加密了,所以就无法通过MachOView、Hopper Disassembler、class-dump、IDA等工具分析Mach-O文件了
二、脱壳
    1. 脱壳就是摘掉壳程序,将未加密的可执行文件还原出来
    1. 脱壳的办法主要有两种:硬脱壳、动态脱壳
  • 3.硬脱壳就是编写解密算法,把经过壳程序加密的可执行文件解密出来,如下图所示:

    硬脱壳.png

    1. 动态脱壳就是把内存中已经解密的可执行文件,直接从内存中导出来,如下图所示:
      动态脱壳.png
    1. 如何判断可执行文件是否已经脱壳了呢?这里介绍两种办法:
    • 使用MachOView工具查看可执行文件,查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密,1代表已加密,如下所示:


      MachOView工具判断是否脱壳
    • 在终端中,通过otool命令判断,otool的语法是:otool -l 可执行文件路径 | grep crypt,如下所示:

通过otool命令判断是否脱壳.png
三、脱壳工具介绍
    1. 最早的砸壳工具是stefanesser写的dumpdecrypted,通过手动注入然后启动应用程序在内存进行dump解密后的内存实现砸壳,这种砸壳只能砸主App可执行文件。
    1. 对于应用程序里面存在framework的情况可以使用conradev的dumpdecrypted,通过_dyld_register_func_for_add_image注册回调对每个模块进行dump解密。但是这种还是需要拷贝dumpdecrypted.dylib,然后找路径什么的,还是挺麻烦的。
    1. 然后有了KJCracks的Clutch,通过posix_spawnp创建进程然后dump直接生成ipa包在设备,可以说是很方便了。这个是工具在使用的时候大部分应用会出报错,此外生成的包还需要自己拷贝。
    1. 以上两种工具,都有各自的缺陷,于是便有了本文将要介绍的frida-ios-dump,该工具基于frida提供的强大功能,通过注入js实现内存dump,然后通过python自动拷贝到电脑生成ipa文件,通过以下方式配置完成之后真的就是一条命令砸壳。
四 、配置frida-ios-dump,实现一键脱壳
    1. frida-ios-dump是基于frida的,所以先要在手机和电脑上安装frida,命令如下:(注意,手机和电脑上的frida的版本需要保持一致)
Mac上安装frida的命令:
sudo pip install frida
或者 
sudo pip install frida –upgrade –ignore-installed six

iPhone上安装frida的方法:
打开Cydia->软件源->编辑->添加,输入build.frida.re,添加软件源后,搜索安装Frida即可
    1. 然后将越狱设备通过USB连上电脑,进行端口映射,默认是将Mac的2222端口映射到手机的22端口,命令如下:(注意,这里的映射的端口必须与frida-ios-dump中的dump.py文件指定的端口一致,只要是未被占用的端口就可以,也可以用以前说过的10010端口,这样用sh usb.sh命令就可以代替iproxy 2222 22了)
iproxy 2222 22
映射端口保持一致即可.png
    1. 下载frida-ios-dump,在手机上运行需要脱壳的App,然后回到Mac新开一个终端 ,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
脱壳成功.png
    1. 到此就已经配置完成了,以后想要脱壳,只需要映射端口,并且运行./dump.py,就可以脱壳了,需要注意以下几点:
    • 由于通过SSH的方式连接手机,所以请先确保已将公共密钥添加到目标设备的〜/ .ssh / authorized_keys文件中,具体方法请看iOS逆向工程(二):Mac远程登录iPhone

    • 如果运行./dump.py命令后,手机出现了崩溃重启,可以这样解决:从frida-releases下载相应版本的frida-server,替换手机里 /usr/sbin/frida-server文件,重启手机,再越狱,就可以修复。

    • 如果发生了设备重启、失去了连接等错误,尝试在./dump.py之前打开要脱壳的App

    • 请确保你要脱壳的App是从AppStore下载的App,否则可能会出现莫名其妙的卡住不动

五 、脱壳之后
    1. 脱壳之后,我们就可以拿到未加密的可执行文件了,可以用MacOView工具观察,也可以用class-dump工具导出头文件,也可以用Hopper Disassembler工具分析汇编代码和伪代码
    1. 目前为止,我们已经学会了分析界面(用Reveal以3D的视角查看层级结构)、分析代码(用class-dump导出头文件),接下来,我们将要学习动态调试和代码注入,最终实现将注入的代码的App重新打包,安装到非越狱的设备上。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容