• iOS应用砸壳

    2019-07-17 11:21:25
    #一、砸壳概述及其原理 APP上架会经历 APP->AppStore->源码 加密过程。 应用加密:开发者向AppStore提交应用,都将由苹果官方进行加密处理,以确保用户使用的APP都是经过审核过的,加密后的APP,开发人员...

    一、砸壳概述及其原理

    APP上架会经历 APP->AppStore->源码 加密过程。

    应用加密:开发者向AppStore提交应用,都将由苹果官方进行加密处理,以确保用户使用的APP都是经过审核过的,加密后的APP,开发人员无法通过Hopper等反编译应用,也无法使用class-dump

    iOS应用运行原理:应用在磁盘中是加密状态,由于CPU运行不会识别加密文件,因此在启动应用前需要在内核中对加密应用文件进行解密,提取可执行文件才可放入内存中运行。示意图如下:
    在这里插入图片描述
    逆向需要对加密的二进制文件进行解密才可以做静态分析,解密过程即为砸壳。砸壳有两种:
    1、静态砸壳
    在已经掌握和了解加密应用的加密算法和逻辑后在不运行加密应用程序的前提下将壳应用程序进行解密处理,静态砸壳方法难度大,并且加密方发现应用被破解后就可能会改用更高级的复杂加密算法。
    2、动态砸壳
    在运行进程内存中的可执行程序映像入手,将内存中的内容进行转储处理来实现砸壳。该方法相对简单,并且不用关心应用所使用的加密技术。

    二、手机越狱

    使用爱思助手或pp助手均可以对手机越狱,注意越狱时对应的系统版本号,根据自己系统版本号选择。
    越狱后手机上会安装Cydia软件,在软件中选择搜索搜索OpenSSH安装,安装完成后便可以与Mac端通过ssh建立连接。
    1、通过工具越狱后会出现h3lix应用:
    在这里插入图片描述
    2、点击运行h3lix,再点击按钮运行,将会下载安装Cydia应用:
    在这里插入图片描述
    3、点击Cydia应用查看是否安装OpenSSL,如未安装则搜索安装,如下:
    在这里插入图片描述
    通过以上1、2、3步骤之后Mac终端就可以和越狱手机进行ssh连接了。命令如下:

    ssh root@192.168.1.168 -p 22
    

    默认密码:alpine
    修改密码执行passwd 输入新密码:yahibo
    进入手机中操作与Linux命令相同
    注意:手机重启后Cydia应用会失效,需要重新执行第2步重新安装。

    三、砸壳工具Clutch使用(动态砸壳)

    注意:会遇到砸壳失败,要确定是否在App Store下载,如果不是重新下载。
    Clutch需要使用iOS8.0以上的越狱手机应用。
    下载链接:https://github.com/KJCracks/Clutch/releases
    1、下载后将Clutch-2.0.4放到越狱手机的usr/bin目录下(密码默认为alphine

    scp Clutch-2.0.4 root@192.168.1.168:/usr/bin/
    

    2、ssh连接苹果设备,命令如下:

    ssh root@192.168.1.168
    

    3、进入usr/bin目给Clutch-2.0.4赋予可执行权限:

    chmod +x Clutch-2.0.4
    

    4、执行Chmod命令查看命令参数:

    Clutch-2.0.4
    

    在这里插入图片描述

    -b 只转储二进制文件
    -d 转储应用的.ipa文件即砸壳,砸壳后获取.ipa文件的路径,将.ipa拉到本地即可
    -i 获取安装的应用

    5、列举安装的应用:

    Clutch-2.0.4 -i
    

    在这里插入图片描述
    6、开始砸壳,选择编号2对微信进行砸壳:

    Clutch-2.0.4 -d 2
    

    运行如下:
    在这里插入图片描述
    最后生成一个砸壳后的包路径:
    /private/var/mobile/Documents/Dumped/com.tencent.xin-iOS9.0-(Clutch-2.0.4).ipa
    将Dumped文件下载到Mac中:

    scp -r root@192.168.1.168:/private/var/mobile/Documents/Dumped ipas/
    

    7、将获取到的.ipa修改为wxtest.zip并解压,进入wxtest文件中的Payload中,执行命令:

    class-dump -H WeChat.app -o apph
    

    结束后apph中为微信对应的所有头文件信息。如图:
    在这里插入图片描述
    apph中为微信对应的所有头文件信息。如图:
    在这里插入图片描述

    展开全文
  • iOS逆向工程一:砸壳

    2019-07-14 20:53:44
    对一个iOS App进行逆向分析,首先需要砸壳,因为从AppStore中下载的App是加壳的,即加密过的,“砸壳”的过程就是解密的过程。对于公司内部的debug、release版本进行逆向时,不用砸壳处理,可以跳过此步骤。 砸壳...

    对一个iOS App进行逆向分析,首先需要砸壳,因为从AppStore中下载的App是加壳的,即加密过的,“砸壳”的过程就是解密的过程。对于公司内部的debug、release版本进行逆向时,不用砸壳处理,可以跳过此步骤。
    砸壳工具有多种,常用的是dumpdecrypted 和 Clutch。下面以dumpdecryted为例。

    dumpdecryted

    从github上下载dumpdecryted源码后,make进行编译,得到dumpdecryted.dylib动态库,接下来利用dumpdecryted.dylib进行注入解密。
    在这里插入图片描述
    砸壳工具安装完成之后,接下需要定位待解密的的可执行文件,先用ps定位目标应用,打开目标App,使用ps -e命令查看正在运行进程的可执行文件路径,在/var/mobile/Containers/Bundle/Application//TargetApp.app/TargetApp.
    下一步就是获取TargetApp的Documents目录,因为需要把动态库复制到沙盒目录下,这里选择Documents目录。在info.plist文件中找到BundleID,后面com即为Bundle ID。然后使用cycript -p TargetApp命令注入进程,调用NSHomeDirectory()函数获取到Home目录,Home目录后加上/Documnets即可。
    然后把dumpdecryted.dylib文件复制到Documents目录下。执行以下指令解密:
    DYLD_INSERT_LIBRARIES=/usr/lib/dumpdecrypted.dylib /var/containers/Bundle/Application/59CEB222-4C4D-4A34-BC0F-8D38B9E3853D/MyApp.app/MyApp

    解决iOS12版本的砸壳问题

    然而如果iOS系统版本为12及以上,那么dumpdecryted和Clutch就无法正常使用了,需要使用CrackerXI+。
    CrackerXI+的下载源地址为https://repo.netskao.cn/ ,下载后在设置里把CrackerXI Hook打开,在AppList中选择需要砸壳的应用就行了。

    解密后的应用存储在/var/mobile/Documents/CrackerXI,使用pp助手导出该ipa文件,完成砸壳。

    展开全文
  • IOS逆向-砸壳笔记

    2019-01-12 16:16:37
    本人ios10.3.1 iphone6越狱机。方案三个。方案一、dumpdecrypted.dylib 1. ssh到越狱机上,看WeChat可执行文件在哪。 # ps aux|grep WeChat // 需要运行一下微信mobile 33539 0.0 5.4 1556320 54512 ?? Ss 9:56AM ...

    本人ios10.3.1 iphone6越狱机。
    方案三个。


    方案一、dumpdecrypted.dylib

    1. ssh到越狱机上,看WeChat可执行文件在哪。

    # ps aux|grep WeChat // 需要运行一下微信
    mobile 33539 0.0 5.4 1556320 54512 ?? Ss 9:56AM 4:03.60 /var/containers/Bundle/Application/803BCF43-5FC1-4A35-90CC-7E47C4C7307E/WeChat.app/WeChat
    2. ssh到越狱机上,看其Documents目录在哪。

    # cycript -p WeChat  // 貌似得点一下iphone里的微信,不然会卡住。
    cy# NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]
    @"/var/mobile/Containers/Data/Application/CDA3D8B1-CBEE-4A35-B2A6-2FB733540511/Documents"
    3. mac下,下载:dumpdecrypted 并make出dumpdecrypted.dylib。 然后把dumpdecrypted.dylib用scp拷到iphone的上面步骤2的目录下。(实操中在~目录下也成了.)
    4. 砸壳:
    # DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/CDA3D8B1-CBEE-4A35-B2A6-2FB733540511/Documents/dumpdecrypted.dylib /var/containers/Bundle/Application/803BCF43-5FC1-4A35-90CC-7E47C4C7307E/WeChat.app/WeChat
    注:实操中dumpdecrypted.dylib放~目录也成了,即:DYLD_INSERT_LIBRARIES=~/dumpdecrypted.dylib ....
    砸壳成功后,会在当前目录下生成砸壳后的的文件 WeChat.decrypted。
    注:此方法 解密(砸壳)的仅这个WeChat.app/WeChat 。并不是整个WeChat.app。
    5. 遇到的问题:
    dyld: could not load inserted library ‘dumpdecrypted.dylib’ because no suitable image found. Did find: dumpdecrypted.dylib: required code signature missing for ‘dumpdecrypted.dylib’
    解决方法,mac下:
    ## 列出可签名证书
    # security find-identity -v -p codesigning
    ## 选一个证书为dumpecrypted.dylib签名
    # codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib
    然后把签名后的dumpdecrypted.dylib拷到iphone上。重复步骤4.
    6. 怎么证明砸出来的WeChat.decrypted是成功解密(脱壳)了的?
    把WeChat.decrypted拷到mac上,然后

    # otool -l WeChat.decrypted | grep -B 2 crypt
    WeChat.decrypted:
    --
    cmd LC_ENCRYPTION_INFO_64
    cmdsize 24
    cryptoff 16384
    cryptsize 59817984
    cryptid 0                     // <--- 0表示解密成功。1表示未成功

    7. 顺便:在mac下借助 class-dump ,把脱壳文件dump出所有的OC头文件:

    # ./class-dump -s -S -H ./WeChat.decrypted -o ./headers


    方案二、frida 

    0. 这玩意,他是分两个端安装的。。mac端要装,iphone那也要装。相当于是mac下通过命令请求ios端脱壳...
    1. mac下要安装:https://www.frida.re/docs/installation/
    2. iOS下要安装:https://www.frida.re/docs/ios/
    然而我这一步就失败了,Cydia下添加源,屡次失败。
    (补充链接,以后能添加源了再瞧。。https://www.jianshu.com/p/cfe852110e8a)

     

    方案三、直接去pp助手下载越狱应用。通常就是脱壳了的ipa。

     

    展开全文
  • 近来对iOS逆向十分感兴趣,就在业余时间里自己在上网找了各种资料学习,发现许多资料对于一些细节描述的不够详细,所以也踩了很多坑,我也将自己踩的一些坑总结出来,希望对大家有所帮助。 注:逆向是为了学术\学习...

    近来对iOS逆向十分感兴趣,就在业余时间里自己在上网找了各种资料学习,发现许多资料对于一些细节描述的不够详细,所以也踩了很多坑,我也将自己踩的一些坑总结出来,希望对大家有所帮助。

    注:逆向是为了学术\学习的目的而去探索,不为了非法盈利或其他不正当行为而进行的。本文如有侵犯隐私或其他请联系我,我将在第一时间整改或删除。

    一、前期准备
    1、Mac Book Pro(笔者做iOS开发,暂时没有研究Windows环境下的一些工具或者配置,或许有些许不同)。

    2、一部越狱设备(没有越狱设备的,可以下载爱思助手等工具进行一键越狱,在一键越狱那边有对应的版本号,这里就不对越狱过多描述。这里我准备的是一部8.3版本的iPhone 5s)
    爱思助手

    3、dumpdecrypted(砸壳工具)

    密码:fc29

    下载地址

    4、pp助手(用于下载准备砸壳的App应用)

    5、iFunBox(用于将砸壳完成后的文件导出)

    密码:u3qr

    下载地址

    6、iTools Pro(用于导入编译后的dumpdecrypted.dylib文件,以及对照查看文件目录)

    7、Terminal(终端,我们会大量的运用到这个工具)

    8、class-dump(砸壳工具)

    二、分析目标
    1、下载App应用

    使用pp助手下载我们准备砸壳的App应用(这里我用的是微信做示范)。
    目标软件——微信

    2、手机OpenSSH连接

    把手机与Mac通过USB连接,保证手机与Mac处在同一WiFi环境下,为的是能够连接上手机。

    ①点击手机里的设置->Wi-Fi->已连接上的WiFi最右侧的感叹号->BootP

    ②点击手机里的设置->Wi-Fi->已连接上的WiFi最右侧的感叹号->IPV4地址选择BootP,选择右上角存储。

    这时我们的设备的IP地址已固定,这么做是为了防止动态IP的情况下IP地址被占用或地址更改。

    3、打开终端

    输入ssh 以及我们上一步展示的IP地址。

    例如:ssh root@192.168.1.1
    在这里插入图片描述
    这是我们需要输入OpenSSH的连接密码,连接密码的初始值为alpine。
    在这里插入图片描述
    到这里我们成功连接上手机了。

    4、进入我们要砸壳的对应目录下

    首先我们将手机中的所有进程杀死,回到桌面,然后点开我们要砸壳的App应用,让应用保持在前台。

    然后在终端输入ps -e,我们会发现一个很是奇怪的进程。
    微信
    再打开iTools Pro根据圈出的对应目录进行查看,我们会发现这个目录就是微信所在的目录,如果找不到的同学可以试试在不打开微信和打开微信后通过ps -e命令输出的结果不同点在哪儿,就能找到了。
    iTools Pro下微信完整路径
    在WeChat.app文件夹中包含了大量的素材文件,配置文件以及WeChat项目文件,这时候我们先看一下这个项目文件是否加壳,与不加壳有什么区别。

    此时我们将WeChat.app导出至Mac中,右键选择WeChat,选择显示包内容,新建一个终端窗口,cd到包内容所在的路径中。
    在这里插入图片描述
    在这里插入图片描述

    在终端输入:otool -l WeChat | grep crypt,我们会看到一个重要的信息,cryptid 1,这表明这个项目文件还未没砸壳,0则表示已经完成砸壳。
    在这里插入图片描述

    目标文件分析大致到这儿已经满足我们需要的,接下来开始正式进入砸壳。

    三、砸壳
    1、下载并解压dumpdecrypted.zip文件(觉得Github慢的同学可以在上文中找到对应的下载地址)。
    在这里插入图片描述

    我们可以看到里面包含的文件很简单,就是三个文件,分别是一个.c文件,一个是Make编译文件,一个是README说明文件。

    我们打开一个新的终端窗口,并cd到Makefile所在的路径,输入make。
    编译dumpdecrypted.dylib库
    编译完成
    编译完成后会得到dumpdecrypted.dylib文件,然后我们要对这个文件进行一次签名,如果不对该文件进行签名, 后续砸壳的操作会失败。

    在终端输入security find-identity -v -p codesigning,会打印出mac上面已经安装的证书,这里我用自己的个人账号进行测试签名。
    在这里插入图片描述
    输入–force --verify --verbose --sign “iPhone Developer: XXXXX (XXXXX)” dumpdecrypted.dylib进行签名。
    签名成功
    这里已经完成了对dumpdecrypted.dylib文件的签名,如果有出现以下提示,则是因为在钥匙串中存在无效或者大量重复的证书导致,需要在钥匙串中删除无效的证书。
    存在重复证书
    2、找到WeChat的目录
    WeChat路径及ID编号
    从上图中我们可以看到微信在运行是的路径以及ID编号,在终端中我们输入cycript -p XXXX就可以勾住进程,通过OC语法查找到文件目录。(下图我重启了机子。。。进程编号就改变了,别在意 - -)。
    成功勾住进程
    如果出现输入cycript -p XXXX后提示-sh: cycript: command not found,则是因为设备中没有安装Cycript插件,打开Cydia,搜索Cycript并安装重启后即可。
    Cycript插件
    勾住进程后,我们输入[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomans:NSUserDomainMask][0]后,会打印出WeChat的Document目录所在路径。
    打印路径
    根据这个路径,我们打开iFunBox工具,按着这个路径将我们签名后的dumpdecrypted.dylib文件复制进去。
    选择Copy From Mac,将文件导入
    按control+d退出勾子,cd到Document目录中,再输入DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /WeChat所在的WeChat.app路径
    砸壳
    输入后会展现以下内容,表示砸壳成功了,成功后会生成WeChat.decrypted文件,这就是我们下一步要反编译的文件了。
    砸壳成功
    通过ls指令,我们可以看见WeChat.decrypted文件就存放在Documents,我们通过iFunBox可以看到文件,并导出到Mac中
    WeChat.decrypted文件
    导出文件到本地
    在本地把WeChat.decrypted文件的后缀名去掉,再用otool -l WeChat | grep crypt指令查看。
    砸壳成功
    明显的看到这里显示的是cryptid 0,也就是脱壳了。这时再使用class-dump -H WeChat指令将目标文件反编译出来。我们会看到反编译出来很多很多的头文件。我们整理到一个文件夹里。
    反编译成功
    到这里我们的砸壳与反编译已经完成。接下去就可以根据得到的头文件进行分析以及Hook等等。

    后续会继续对逆向这个方向进行深入的研究,欢迎各位大佬指教,文中有许多不足的地方多多包涵。

    欢迎各位大佬给予批评意见,让我们一起学习进步。

    欢迎搜索关注公众号:程序员的成长道路

    微信公众号:程序员的成长道路

    程序员的成长道路

    展开全文
  • 近期准备入手学习IOS逆向开发,在博客上写上笔记方便以后查看,也说说自己在其中遇到的坑。(提示:因为我的iphone没有越狱,因此我只研究非越狱设备的逆向工作。逆向设备:iphone7 10.3.1 + Mac Pro 17)  逆向...

       近期准备入手学习IOS的逆向开发,在博客上写上笔记方便以后查看,也说说自己在其中遇到的坑。(提示:因为我的iphone没有越狱,因此我只研究非越狱设备的逆向工作。逆向设备:iphone7 10.3.1 + Mac Pro 17)

       逆向的第一步,也是最重要的一步,给应用重新签名。

       1. 获取应用的压缩包文件IPA文件。

       由于我的iphone没有越狱,因此,不能通过砸壳的方法重新签名Appstore上加密的应用;因此,我选择的是PP助手上已经破壳的应用。首先,要在电脑上安装PP助手,打开后选择越狱应用,如下图:



      然后选择你想要重新签名的应用,点开后选择立即下载:(注意下载应用时,电脑不要连接手机,否则将显示立即安装,就无法下载应用了)



     下载后的应用在下载-->PP下载-->应用中能找到对应的ipa文件。


      2. 创建开发者证书(iOS Certificate)和描述文件(iOS Provisioning Profile)下载后双击。


      3.安装 sigh

       1). 通过 brew 安装ruby brew install ruby

       2).通过  sudo gem install sigh 安装sigh,若为安装ruby则会报错。

     

     (建议将描述文件和IPA文件放到同一目录,方便后面的操作!)

     4.安装好sigh后,

      1). 在终端输入sigh resign 回车,提示输入ipa文件的路径(ipa命名方式中,不能含有中文!!!)

      

      2). 提示选择开发者证书.输入完后回车,

      

      3). 提示输入描述文件(我用的是开发的描述文件不是发布的描述文件)

      

      4).成功后提示:

      


      5. 安装。使用PP助手将刚才重新签名的App,安装到自己的手机上。


     

      (也可以使用ios-deploy安装到手机上)。

       至此应用就能安装到自己的手机上了。

      坑:

      最开始用的iOS_resign_scripts来重新签名,发现安装的时候总是报以下错误,entitlements错误,权限问题,我想可能是权限配置不对,然后手动配置。


      使用codesign工具手动签名并配置好entitlements.plist,发现能签名成功,安装的时候还是报错。最后只能放弃上面两种方法了。


    展开全文
  • IOS应用逆向工程之App砸壳:通过dumpdecrypted.dylib
  • IOS开发之逆向分析

    2018-02-01 20:23:14
    首先,本逆向分析是系列文章,会分别从常见的逆向技巧来介绍iOS开发中常见的逆向技术。 网络分析 在逆向过程中很多时候需要分析APP和Web端数据交互的内容那么最简单的方式即是抓包网络分析,而使用Charles、...
  • 何为逆向工程?逆向工程,指的是通过分析一个程序或系统的功能、结构或行为,将它的技术实现或设计细节推导出来的过程。当我们对一个软件的功能很感...一台已越狱的iPhone5s以上机器(已安装OpenSSH和Cycript,砸壳用)
  • iOS逆向学习笔记(一)

    2019-01-06 21:15:31
    利用iOS系统的漏洞,获取iOS系统的最高权限(Root),解开之前的各种限制(合法行为) 2.iOS Jailbreak的优点 打造个性化、与众不同的iPhone 自由安装各种实用的插件、主题、APP 修改系统APP的一些默认行为 自由...
  • iOS逆向工具汇总

    2018-01-08 14:37:45
    Reveal:查看任意app的UI结构 注:1.不越狱的手机,可以用Reveal来查看自己app的UI结构,不能查看其它app的结构。 2.越狱手机上可以查看任意app的UI结构。...如果你有越狱手机可以直接从PP助手上下载ipa去的包。XC
  • 如果您有耐心看完这篇文章,您将懂得如何着手进行app的分析、追踪、注入等实用的破解技术,另外,通过...- 通过一个简单的实例,来介绍如何综合运用砸壳、寻找注入点、lldb远程调试、追踪、反汇编技术来进行黑客实战
  • 作为iOS逆向工程的一个小部分,之前整理在http://www.jianshu.com/p/c286e2681f9d,现在有时间,打算重新整理并且搬迁到CSDN中。
  • 作为自己正式接触iOS逆向的第一步 希望通过这次实践对 iOS 系统以及 APP 有更深入的了解。 1. 基本知识概述 这次实践的最终目的,是要实现“自由设定微信定位”的功能,这个功能的操作流程应该是: 打开...
  • 三、准备工作:1、手机越狱(我尝试用pp助手,无法越狱,所以我用的爱思助手)。版本不能太高,检查手机是否可以越狱http://jailbreak.25pp.com/ios 四、w手机安装软件:越狱成功后,手机上会有一个app:Cydia 1、...
  • iOS-通过MonkeyDev逆向微信 自动群发功能前言内容简述(文章内容有点长,请耐心看完)必备工具1.pp助手2. 安装class-dump3. 安装MonkeyDev自动群发的逻辑原理通过PP助手下载破ipa文件通过Class-dump指令查看所有...
  • iOS Jailbreak(iOS越狱) 在学习逆向之前,我们要了解什么是越狱? 越狱其实就是利用iOS的漏洞获取iOS系统的最高root权限,类似Android手机获取root权限一样,拥有root权限...使用 PP助手、爱思助 手等软件对手机进行.
  • 提到iOS逆向,网上的文章铺天盖地,创作时间从2014年到2019年不等。绝大部分的工具或命令都过时了。书籍更不用说。 我刚刚结束了为期1月的零基础iOS逆向研究,现已经成功逆向了微信的一些复杂逻辑。现在分享一下我的...
  • 近来也是学习了几天的iOS逆向工程方面的知识,这里就班门弄斧下,看看如何通过逆向工程来修改微信运动数据.先看一下效果图. 前期准备 在逆向之前我们需要准备一下以下工作.以方便我们的逆向功能能...
  • 前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的...
1 2 3 4 5 ... 15
收藏数 288
精华内容 115