美文网首页
【iOS开发】iOS逆向开发入门

【iOS开发】iOS逆向开发入门

作者: 人月神话Lee | 来源:发表于2018-08-04 15:53 被阅读0次

本文以一个简单的栗子,带你入门iOS逆向开发。提纲如下:

逆向开发流程

我们的需求是去除招商银行掌上生活App卡金融模块的浮动广告,如下图所示

需求

最终达到的效果如下图所示

效果

逆向开发环境搭建可参考笔者上篇相关文章,此外还需安装签名工具ldid

brew  install  ldid

安装theos到电脑的~/theos目录下

git clone --recursive https://github.com/theos/theos.git $THEOS

其中$THOSE是个环境变量,终端键入如下命令:vim ~/.bsah_profile,然后追加以下四行

export THEOS=~/thoes

export PATH=$THEOS/bin:$PATH

export THEOS_DEVICE_IP=127.0.0.1

export THEOS_DEVICE_PORT=10012

最后两个环境变量在Tweak项目中需要用到,表示用电脑的10012端口同iPhone的22端口通信。

安装Clutch,使用说明可参考官网,此处不做介绍。下面开始干活了。

一、脱壳、导出头文件

利用MJ大神的逆向工具MJAppTools,可以方便列出手机上的App信息。

App

如上图所示,可以看到掌上生活App的安装路径及Bundle ID。Mac登录iPhone,将掌上生活App脱壳,clutch -d App序列号或者Bundle ID

clutch -d com.cmbchina.cmblife

接着就将其脱壳了,如下图所示

脱壳

在上图所示目录下找到脱壳后的App包,拷贝到电脑的某个目录(/Users/你的电脑名/Desktop/reverse/CMBLife),然后cd到此目录,利用class-dump导出脱壳后的App包头文件。

class-dump  -H cmblife -o Headers

二、明确需求,找到目标文件

利用Reveal可以迅速找到目标文件,本文利用mjcript找到目标文件。

控制器

如上找到目标控制器,然后遍历它的根视图的所有子制图

MJSubviews(#0x14680cca0.view)

目标视图

如上,可以猜想浮动的广告控件就是蓝色框中的那个视图。也就是要hook的那个类。我们可以通过如下方式简单地验证就是此视图,设置其hidden属性看手机上显示与否。

验证目标视图

三、新建Tweak项目、编写代码

cd到/Users/你的电脑名/Desktop/reverse/CMBLife,新建工程

nic.pl

新建工程

填写项目信息,诸如Project Name、Package Name等。

打开Tweak.xm文件,编写代码,hook目标文件CMBDPFloatAdView

编写代码

将其初始化方法返回nil就可达到需求目标

四、编译、打包、安装

1)编译:执行make命令,创建了obj文件夹

make

2)打包:执行make package命令,生成package文件夹,存放deb文件

make package

,3)安装:执行make install安装deb文件

make install

安装完毕会重启SpringBoard,此后在Cydia中会看到刚刚安装的插件

CMBLifeTweak

        再次打开掌上生活App就没有浮动广告了。至此,一个完整插件就简单地开发完毕。逆向开发的基本流程大致如此。当然这其中还有些具体的、复杂的流程,本文不做介绍,希望可以起到抛砖引玉的作用。基本套路就是脱壳、导出头文件、静态分析、动态调试、编写代码、编译、安装、打包。

相关文章

网友评论

      本文标题:【iOS开发】iOS逆向开发入门

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