Skip to content

YangsCalvin/ReverseDocument

Repository files navigation

Reverse Document

GitHub issue author MIT Licence Open Source Love

逆向工程的目的

  1. 分析竞品的最新研究或者产品原型(包括所用的技术,所使用的框架)

  2. 有助于进一步的认识iOS从而提升自己/学习目的。

  3. 破解应用的使用权限

  4. 识别竞品潜在的侵权行为

逆向工程的分析工具

  • 进行iOS逆向工程的一个关键就是工具的使用,工欲善其事,必先利其器。
工具分类 工具名称 
越狱工具 盘古越狱
查看文件工具 PP助手iExploreriFunboxiTool
砸壳工具 dumpdecryptedClutch
查看头文件工具 class-dump
反汇编工具 HopperIDA Pro
调试器 HCycriptgdb
UI分析工具 Reveal
网络分析工具 Charles

1.准备阶段

先上 iOS 逆向的三板斧,这是每次要逆向破解前都需要做的步骤。如果你不了解iOS逆向的话你可以参考一下文章iOS逆向工程准备工作或者阅读iOS应用逆向工程书籍当然也有PDF版iOS应用逆向工程pdf版

首先,请确保你的手机已经越狱,同时已经安装好 theos 开发环境,当然如果你做的Tweak比较简单的话那么你可以使用MokeyDev来开发调试。

2.砸壳

如果是从 AppStore 上面下载的 App,都要先进行砸壳,否则是没办法进行下一步的。如果你懒得做这一步,就直接去其它助手类应该上面进行下载,那些都是砸过壳的,可以直接使用。

砸壳可以使用的工具有两种:

dumpdecrypted,使用方法请参考dumpdecrypted砸壳

Clutch,使用方法请参考Clutch砸壳

大多数App可以直接在PP助手在这里,我们这里以逆向陌陌为例就直接用PP助手下载陌陌越狱版省去砸壳步骤.具体流程请看下图

3.创建工程

这里我们没有越狱手机那么我们首先要配置好MokeyDev然后我们打开Xcode创建一个新的工程我们选择MokeyApp

此时我们打开项目文件把我们下载的越狱版陌陌ipa安装包放到项目下的TargetApp目录下

此时我们运行项目就可以看到陌陌啦 注意:只能用真机模拟器无法运行.

4.思路

hook一个APP最难的不是代码,往往是分析出合适的切入点。

比如我们想抓取陌陌关注里边的视频列表那我们就可以先从界面切入分析.

这时我们就用到了UI页面分析神器Reveal运行项目然后把手机页面调至我们想分析的页面然后打开Reveal

打开之后我们会看到陌陌的视图的层次结构左边部分是陌陌的结构中间是视图我们找到想要分析的界面点击此界面然后看下图

我们看到右侧的视图Class项确定了这个视图是属于哪个类的,下面我们就需要把陌陌的头文件导出来找到对象的Class然后进行分析Hook.

5.导出.h文件 导出头文件这里我们就要用到class-dump如果没配置的话可以参考Class-dump配置此时们可以在桌面创建一个文件夹(命名随意)然后打开ITerm(终端)输入以下命名行

class-dump -H 陌陌.app文件的路径 -o 生成头文件存放的路径

然后敲击回车运行等待完成即可此时头文件已全部导出

5.分析

  • 此时打开我们刚才导出的头文件找到我们之前分析到的MDMainMomentViewController.h文件

这正是我们要切入的那个点,下边我们就开始编写Tweak进行分析。

6.开始Hook

  • 我们已经找到了切入点,下边我们就要Hook此方法然后通过oc语言的Rtuntime特性进行下断点分析。

我们使用MonkeyDev使用的是CaptainHook语法,如果你不太了解CaptainHook语法的话你可以参考CaptainHook语法文章.

然后我们打开工程开始编写代码进行函数替换编写好的代码如下图会正向开发的下边代码都能看懂.

然后我们运行代码打开手机等待项目运行起来打开我们视频推荐列表然后下来一下然后App请求数据自然会走startRequest函数我们已经Hook了然后 会停到我们下断点的地方这时候我们就开始下一步的分析.

从Log栏中我们可以发现视频模型的类型是MDMomentItem *类型的那么我们就从我们导出的陌陌头文件中找到此文件把他拖入到项目中然后引用他就可以了。

我们把存储数据的List数组遍历然后把视频的信息全部打印出了当然你也可以把数据发送到后台存储到服务器当中或者连接电脑直接储存到电脑上也是可以的。 然后我们再次运行项目查看Log栏的打印,随便找个视频地址然后打开嗯不错完美Beautiful这不就正是我们想要的结果.

你还可以参考别人的文章初探iOS逆向工程+微信小牛试刀,移动App入侵与逆向破解技术-iOS篇等等. 如果你想更深入的了解逆向那么你还要学习ARM汇编语言等。

7.总结

洋洋洒洒写了这么多,其实真正的步骤是很简单的,只是我比较啰嗦,想把每个步骤都尽量讲得详细一点。

如果还有不清楚的地方,可以直接留言提问,或者直接到我的Github上提issue。

当然,我也是新手,刚开始学习逆向,可能有些地方理解不准确或有错误,欢迎批评指证。

再多啰嗦一句,这里讲的都是很浅很浅的东西,可以说跟逆向只能搭上一丢丢的边,如果你对逆向特别有兴趣的话,强烈

推荐去看下这本书iOS应用逆向工程

About

逆向陌陌的思路与心结总结文章.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published