iOS逆向之改变喜马拉雅播放界面的布局
粗略的学习了一点 iOS逆向,跟着课程学习代码层面改变APP界面布局,可用作对于市面上APP的研究。
复盘下如何改变喜马拉雅播放界面的布局。只作为学习和方便自己理解用。
原本打算写总结悬浮在上方的广告位的,可惜在自己第一测试的时候就被我删除了,本来以为卸掉重新安装就能恢复,但是没有成功,只能改变其他的了。
必备条件 一台 已越狱的苹果手机
界面如下 本次要删除的为截图中红色区域
![](https://img.haomeiwen.com/i10954281/401bc042216c1cf7.png)
一、首先先给APP 脱壳
脱壳工具有很多种,我使用的是懒人一键脱壳 creakerXI+
有需要了解的 可以看 之前写的
iOS逆向之脱壳工具creakerXI+,最简单、最适合新手的脱壳工具
脱壳成功后,通过iFunBox或者爱思助手更具路径找到 IPA文件,并拖拽电脑桌面
![](https://img.haomeiwen.com/i10954281/e09e238574fa0e20.png)
修改后缀。将IPA改为ZIP。并解压得到
![](https://img.haomeiwen.com/i10954281/6410e32e0a463fa8.png)
二、获取APP的 .h文件以及知道我们需要更改布局的class类名
生成相对应的.h文件可以参考IOS逆向之class-dump
终端执行代码如图所示
class-dump -H /Users/mc/Desktop/底层原理/Payload/ting.app -o /Users/mc/Desktop/底层原理/ting_xw
![](https://img.haomeiwen.com/i10954281/1c6a02f3fda91876.png)
生成的.h文件
![](https://img.haomeiwen.com/i10954281/eba236637afcc557.png)
通过Reveal查看app的布局,以及我们想更改UI的类名
![](https://img.haomeiwen.com/i10954281/596152752f4e0fbd.png)
![](https://img.haomeiwen.com/i10954281/f5bde699f7c98a48.png)
打开相对应的文件,找到初始化公开方法
![](https://img.haomeiwen.com/i10954281/421e8cdc6b075884.png)
需要更改的类为 XMNowPlayingBPicView
需要更改的类的初始方法为 - (id)initWithFrame:(struct CGRect)arg1;
三、编写代码
使用theos生成对应的新的ipa文件(当然先要安装theos)
详情可见链接
打开theos 生成的文件夹,打开Tweak.x文件,简单粗暴的方法就是删掉所有内容,写入
#import <UIKit/UIKit.h>
%hook XMNowPlayingBPicView- (id)initWithFrame:(struct CGRect)arg1
{
return nil;
}%end
此处需要导入头文件 #import <UIKit/UIKit.h>,不然无法识别方法中出现的类名
%hook XMNowPlayingBPicView 是我们需要hook的类
- (id)initWithFrame:(struct CGRect)arg1 是我们需要更改的初始化方法。因为我们需要这个界面不显示,所以直接返回空 nil
还需要Makefile中添加UIKit的 framework 的声明
![](https://img.haomeiwen.com/i10954281/f011fd72f80c1521.png)
具体可以见
theos tweak 错误请见 ios逆向工具theos tweak make编译错误集合
四、编译-打包-安装
进入生成的文件夹中
编译
make
![](https://img.haomeiwen.com/i10954281/b2e0f4547f5441b4.png)
打包成deb
make package
![](https://img.haomeiwen.com/i10954281/5ea31e7f9e046406.png)
新生成package文件夹,里面有可安装的deb包
![](https://img.haomeiwen.com/i10954281/7a2922fe89eab20b.png)
安装 (默认会自动重启SpringBoard)
make install
![](https://img.haomeiwen.com/i10954281/a83153abd3c8370d.png)
五、等待重启生效
完成撒花
![](https://img.haomeiwen.com/i10954281/f98879a16cd00f65.png)
ps: 后面经过查阅资料知道 我们安装的插件目录为
/Library/MobileSubstrate/DynamicLibraries
![](https://img.haomeiwen.com/i10954281/123248912ba441b2.png)
![](https://img.haomeiwen.com/i10954281/da74afb754c97927.png)