iOS简单逆向之:Class-Dump、Hopper

前言

当你想实现一个功能的时候,无从下手,毫无思路的时候,搜遍了网上也没有这方面的资料的时候,是不是感到很无力。但是从别人的App上面又可以看到类似的功能,这时候是不是很想看看别人的源码,把里面有价值的内容都榨干了呢?

下面简单介绍两种工具帮助你

一、Class-Dump
1.1 Class-Dunp 简介

Class-Dump是一款可以导出头文件的命令行工具,改程序用于检查objective - c运行时信息存储在Mach-O文件,它生成类的声明,类别和协议。

1.2 Class-Dump 下载地址

http://stevenygard.com/projects/class-dump/

iOS简单逆向之:Class-Dump、Hopper_第1张图片
地址
1.3 安装

双击.dmg 文件打开,把里面的文件拖到 /usr/local/bin 目录下,因为是修改了系统的路径,所以需要输入本机的密码,这样就可以在终端使用 class-dump 命令了。

1.4 使用

因为这里dump的是应用后缀是.app而不是.ipa,所以我们要把我们的IPA文件归档处理:

iOS简单逆向之:Class-Dump、Hopper_第2张图片
归档

然后,打开刚才归档的 /Payload 目录下,那个就是.app 文件了。

![.app文件](http://upload-images.jianshu.io/upload_images/2986999-84a5164f6f900118.png?imageMogr2/auto-orient/strip%7Ci
![Uploading 6D04C291-0C02-431A-8887-DCBEE20EB21A_302676.png . . .]mageView2/2/w/480)

然后打开终端,输入命令

class-dump -H /Users/apple/Desktop/重新打包/Payload/XXX.app -o /Users/apple/Desktop/DumpHeaderClass

-H 后面的内容为需要dump的 .app 文件路径
-o 后面的内容为输出的头文件保存路径

因为我是保存到桌面的,所以等命令执行完成之后,我就可以在桌面上找到DumpHeaderClass这个名字的文件夹了,并且里面已经装满了我们想要的头文件了:

iOS简单逆向之:Class-Dump、Hopper_第3张图片
头文件
二、Hopper
2.1 什么是Hopper

Hopper Disassembler是Mac上的一款二进制反汇编器,基本上满足了工作上的反汇编的需要,包括伪代码以及控制流图(Control Flow Graph),支持ARM指令集并针对Objective-C的做了优化。

2.2 下载地址

官网地址:https://www.hopperapp.com

2.3 使用

这个工具的强大之处,在于二进制文件在它面前,基本是毫无遮掩的,所有函数名,方法名,代码逻辑结构,你都可以一览无遗。

iOS简单逆向之:Class-Dump、Hopper_第4张图片
Hopper

找到我们归档的 .app 文件,右键 —> 显示包内容 打开:

iOS简单逆向之:Class-Dump、Hopper_第5张图片
右键打开

找到里面的二进制文件,下面我们以 网易云音乐的 为例子:

iOS简单逆向之:Class-Dump、Hopper_第6张图片
二进制文件

最后直接把这个文件拖到Hopper 中,下面就是:

iOS简单逆向之:Class-Dump、Hopper_第7张图片
整体目录

左边是列出了所有的方法,而且点击右上角的两个图标还可以切换不同的查看方式,下面以查看源码为例子:

iOS简单逆向之:Class-Dump、Hopper_第8张图片
查看源码

OK!你已经可以查看你所想要看到的信息了,想想真有意思。

总结

对于上面的两种方法,都必须是已经砸壳的IPA文件,不然的话,是没办法导出头文件的。

如果对代码做了处理,也是看不到里面的方法名的。

下一篇文章介绍如何进行iOS核心代码加密,防止别人通过上面的工具来查看我们的核心代码信息。

你可能感兴趣的:(iOS简单逆向之:Class-Dump、Hopper)