美文网首页ios开发进阶程序员
iOS逆向破解clutch、class-dump、Hooper

iOS逆向破解clutch、class-dump、Hooper

作者: 绿箭绿 | 来源:发表于2017-07-03 11:32 被阅读279次

    话不多讲进入正题

    工具:1.iPhone手机一部

    2.Clutch砸壳

    3.class-dump导出头文件

    4.Hooper  Disassembler导出所有.m实现文件

    5.Charles 的接口查看

    一、安装ipa

    手机系统版10-10.2本如果未越狱下载PP助手(傻瓜操作)五分钟可完成越狱

    8.4版本及以下版本网上月月资料也是甚多,10.2以上、9-10版本暂时没找到快速方便方法。

    越狱之后通过越狱手机下载你所需要破解的app (appstore也可以)。比如:"简书"(可以换一个  因为最后失败原因:简书是swift和oc混编  导出头文件时候 不支持swift )

    二、安装clutch软件

    之前AppCrackr这种方式简单粗暴,省时省力,但正是因为它过于方便,导致几乎所有iDevice用户都可轻松上手,所以不少用户都拿它来破解程序,过于暴力、引起业界公愤,所以AppCrackr则是1.5旧版,已不能在高级系统中使用。

    1.clutch下载地址:https://github.com/KJCracks/Clutch/releases(下载时候注意支持版本和手机版本的匹配)

    2.下载之后  把文件拷到手机上/usr/bin/  下

        方法一:通过SSH

    首先把文件拉到手机上 然后连上ssh 通过终端    输入: ssh root@localhost -p 2222

    3.查找ipa然后砸壳

    找到"简书.ipa"前面编号 比如:28

    终端输入:/private/var/mobile/Media/clutch-2 -d 28(/private/var/mobile/Media/clutch-2是clutch路径  可以自己看自己的路径  如果clutch放在/usr/bin下  可以直接使用clutch -d 28)

    下面就是砸壳后存放的路径  之后我们就需要把砸壳后的文件拿出来

    mv 原路径 现路经  (路径中有括号的话  加 "\" 转义一下)

    手动拉到自己电脑桌面上完成

    方法二: iFunBox 或者其他的第三方工具

    命令方式:scp Clutch root@设备IP:/usr/bin

    三、安装class-dump 取.H文件

    1、下载地址:http://stevenygard.com/projects/class-dump/

    2.将class-dump 复制到/usr/bin/class-dump。如果是OS X 10.11,因为没有/usr/bin文件夹的写权限,所以将class-dump复制到/usr/local/bin/class-dump即可。

    3.同时打开Terminal,需要的话就执行命令赋予其执行权限:

    sudo chmod 777 /usr/bin/class-dump  正确安装显示下面:

    然后 输入    class-dump -H "A" -o "B"

    A:  ipa报内容里面的DVKIT头文件框架路径   B:导出的.h要存放的路径  

    例如 :class-dump -H /Users/Flywoods/Desktop/简书破解/com.jianshu.Hugo-iOS7.0-\(Clutch-2.0.3\)/Payload/Hugo.app/Hugo -o /Users/Flywoods/Desktop/简书破解/jianshuH文件

    结果失败:swift和oc混编   因为不支持swift  所以导出失败

    可以换其他APP  导出结果:可以导出所有.h(包括pod第三方头文件,但不包括.pch )

    四、Hooper Disassembler 导出.m伪代码

    下载地址:https://www.hopperapp.com/ 安装好之后 把砸壳后的ipa拉进面板内

    {{{注:实现批量导出伪代码的功能。具体代码可以在https://github.com/poboke/Class-Decompile下载。}}}

    使用方法

    1、将下载的Class Decompile.py文件放到~/Library/Application Support/Hopper/Scripts目录里。

    2、将可执行文件拖到Hopper里,等待分析完成。如果日志框里出现以下文字,就说明分析完成了:

    Analysis segment __LINKEDIT

    Analysis segment External Symbols

    Background analysis ended

    3、点击菜单Scripts–>Class Decompile:

    然后选择导出所有伪代码

    4.反编译出来的伪代码保存在~/ClassDecompiles目录里。

    至此我们就把一个APP的.h和.m文件拿到了  可以放在同一个文件夹,然后新建一个项目 ,把这些文件拉进去  可以进行看对方的框架、方法定义、伪代码就需要你有一双黑客的眼睛了,毕竟是伪代码  不是直白的。可以进行字符串搜索、方法搜索等等;怎么用就要看大家自己了。

    五、Charles使用

    下载地址:http://www.charlesproxy.com

    Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。

    启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。如下所示:

    之后自己电脑上网页一类的请求网络的都可以显示在charles界面

    过滤网络请求

    通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

    方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com, 那么只需要在 Filter 栏中填入 yuantiku 即可。

    方法二:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:通常情况下,我们使用方法一做一些临时性的封包过滤,使用方法二做一些经常性的封包过滤。

    截取 iPhone 上的网络封包

    Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以 iPhone 为例,讲解如何进行相应操作。

    charles设置:

    要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:

    iPhone 上的设置

    首先我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图所示:

    在 iPhone 的 “ 设置 “->” 无线局域网 “ 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:

    设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。

    截取 Https 通讯信息

    安装证书

    如果你需要截取分析 Https 协议相关的内容。那么需要安装 Charles 的 CA 证书。具体步骤如下。

    首先我们需要在 Mac 电脑上安装证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在 KeyChain 看到添加好的证书。如下图所示:

    需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,可以在该请求上右击,选择 SSL proxy,如下图所示:

    这样,对于该 Host 的所有 SSL 请求可以被截取到了。

    截取移动设备中的 Https 通讯信息

    如果我们需要在 iOS 或 Android 机器上截取 Https 协议的通讯内容,还需要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。如下图所示:

    按照我们之前说的教程,在设备上设置好 Charles 为代理后,在手机浏览器中访问地址:http://charlesproxy.com/getssl,即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。不过同样需要注意,默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择 SSL proxy 菜单项。

    最后大家在编写程序时候做好核心代码混淆就好了,也可以swift和oc混编就拿不出来头文件了,防范为好;

    注: 下一篇      iOS制作属于自己的FrameWork    保护好代码

    相关文章

      网友评论

        本文标题:iOS逆向破解clutch、class-dump、Hooper

        本文链接:https://www.haomeiwen.com/subject/xtlacxtx.html