iOS逆向工程 -- 小黑盒的破解

2018-05-27  本文已影响173人  怀心逝水

逆向 破解APP


小黑盒破解目标:

在特定的页面中插入自己写的页面(如在头条的新闻详情页中插入自己放进去的广告页面

效果图:


IMG_0087.PNG

如果对本教程中终端的命令行或是工具的使用不熟悉的话,可以看看我的另一篇关于逆向工程的文章。
逆向的基础

小黑盒破解流程:

获取APP解密后的可执行文件

/var/containers/Bundle/Application/1312D372-0E9F-4CF3-9130-A365C08897DE/xiaoheihe.app/xiaoheihe

找到可执行文件xiaoheihe并看其是否是解密后的文件

otool -l xiaoheihe | grep cryptid

    cryptid 0
    cryptid 0

当然为什么会有两个cryptid 一个是armv7的构架下的,一个是arm64构架下的。

至于怎么解密,可以从越狱版的PP助手上下载app,或是在越狱手机中的Cydia中搜索本公司的“兔兔破解助手”。

解密成功后,将可执行文件放入到Hopper工具中进行二进制编译。

查看APP的图层结构

用查看图层工具进行对app图层界面中控制器的获取。

可利用的图层工具有:
Reveal
FLEXLoader
至于这两个工具的安装和用法,你可以看我的这篇文章。
图层工具的使用

通过工具可以知道控制器是:MaxWebBBSNewsViewController

那么下面就是在hopper中搜索MaxWebBBSNewsViewController可以看到里面有很多方法
但我们需要的是hook他的ViewDidLoad即可

Hook操作

预想:
需要在这个hook方法中的操作有

  • 创建广告需要展示的View
  • 该广告可能目前就是一条固定的url
  • 在该控制器中的webView上添加我们的广告页面
  • 在退出该控制器后我们需要remove掉广告view(当然再次进入详情页后还是得出现广告页面)

接下来的就是在xcode中创建我们的动态库插件了

动态库里面的步骤:

  • 动态库的入口申明需要hook的方法
  • 在hook的方法中首先执行官方APP自己的方法,之后添加我们需要完成的方法
  • 代码的编写,编译运行

github代码

动态库的注入

注入(必须在最终的文件夹下)
./yololib xiaoheihe xiaoheiheLib.dylib

当然这里需要把我们需要的注入工具拷贝到xiaoheihe.app所在的文件目录下,同时cd到这个目录下,执行上面的命令。
至于工具的使用可以看看我的这篇文章,里面会介绍到我们注入的会有那些方法或是工具。

动态库的注入工具

APP的重签名

这里我们需要注意的坑有:

  • 在xiaoheihe.app 中下建立embedded.mobileprovision证书的描述文件,当然这个描述文件和重签名时候用到的描述文件相同的bundleId
  • 我们是在Payload下压缩文件,并改掉压缩后的文件类型.ipa
image.png

当然重签名你可以使用工具iOS App Singer,这个需要编译运行后即可。

之后需要用到时PP助手。

第一次在手机上安装,打开注入后的小黑盒,然而瞬间崩溃了

然后这种查找问题,发现是命令的问题,动态库应该是xiaoheiheLib.dylib
之后再注入,点开后并没有进入相应的hook方法中,然后又是各种找问题,发现在hook的入口必须

CHLoadLateClass(MaxWebBBSNewsViewController);
CHHook0(MaxWebBBSNewsViewController, viewDidLoad);

并且在编译动态库的时候最好选择Generic iOS Device,然后在编译获取到动态库,在注入签名,重新打开后。

成果:

在头条的新闻详情页面中出现了我们注入进去的页面,退出详情页后,不显示广告页面。

上一篇下一篇

猜你喜欢

热点阅读