粗略的学习了一点 iOS逆向,跟着课程学习代码层面改变APP界面布局,可用作对于市面上APP的研究。
复盘下如何改变喜马拉雅播放界面的布局。只作为学习和方便自己理解用。
原本打算写总结悬浮在上方的广告位的,可惜在自己第一测试的时候就被我删除了,本来以为卸掉重新安装就能恢复,但是没有成功,只能改变其他的了。
必备条件 一台 已越狱的苹果手机
界面如下 本次要删除的为截图中红色区域
一、首先先给APP 脱壳
脱壳工具有很多种,我使用的是懒人一键脱壳 creakerXI+
有需要了解的 可以看 之前写的
iOS逆向之脱壳工具creakerXI+,最简单、最适合新手的脱壳工具
脱壳成功后,通过iFunBox或者爱思助手更具路径找到 IPA文件,并拖拽电脑桌面
修改后缀。将IPA改为ZIP。并解压得到
二、获取APP的 .h文件以及知道我们需要更改布局的class类名
生成相对应的.h文件可以参考IOS逆向之class-dump
终端执行代码如图所示
class-dump -H /Users/mc/Desktop/底层原理/Payload/ting.app -o /Users/mc/Desktop/底层原理/ting_xw
生成的.h文件
通过Reveal查看app的布局,以及我们想更改UI的类名
打开相对应的文件,找到初始化公开方法
需要更改的类为 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 的声明
具体可以见
theos tweak 错误请见 ios逆向工具theos tweak make编译错误集合
四、编译-打包-安装
进入生成的文件夹中
编译
make
打包成deb
make package
新生成package文件夹,里面有可安装的deb包
安装 (默认会自动重启SpringBoard)
make install
五、等待重启生效
完成撒花
ps: 后面经过查阅资料知道 我们安装的插件目录为
/Library/MobileSubstrate/DynamicLibraries