iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用

话不多讲进入正题

工具:1.iPhone手机一部

2.Clutch砸壳

3.class-dump导出头文件

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

5.Charles 的接口查看

一、安装ipa

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


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第1张图片

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第2张图片
首先把文件拉到手机上


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第3张图片
然后连上ssh


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第4张图片
通过终端    输入: ssh root@localhost -p 2222


3.查找ipa然后砸壳

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第5张图片

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

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

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第6张图片

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第7张图片

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

方法二: 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  正确安装显示下面:

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第8张图片

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

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第9张图片
iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第10张图片

例如 :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 )


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第11张图片

四、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:


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第12张图片

然后选择导出所有伪代码

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第13张图片

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


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第14张图片


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


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第15张图片
iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第16张图片

五、Charles使用

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

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

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


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第17张图片

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

过滤网络请求

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

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

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


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第18张图片

截取 iPhone 上的网络封包

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

charles设置:

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


iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第19张图片

iPhone 上的设置

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第20张图片

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第21张图片

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第22张图片

截取 Https 通讯信息

安装证书

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

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第23张图片

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第24张图片

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

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

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

iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用_第25张图片

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

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

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

你可能感兴趣的:(iOS逆向破解clutch、class-dump、Hooper Disassembler、Charles使用)