九、喜马拉雅FM

本次的需求1:去掉播放页的广告:(经过验证,不是一整个红框都是广告)

XMNowPlayingPicView这个类需要hook



这需要替换app中的方法实现,也就是hook。

工具安装:

一般来说为了更方便hook,会安装个工具——theos:https://github.com/theos/theos

先安装个 签名工具ldid

brew install ldid

其实XCode也可以签名的。

环境变量配置

有些路径需要经常用到,所以写成全局变量,放在.bash_profile中,这样每次重启终端,.bash_profile文件中的指令都会先执行一遍。

vim .bash_profile
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH

让.bash_profiel配置的环境变量立即⽣生效:方式一:重新打开终端;方式二:source ~/.bash_profile


下载theos

不建议直接在github上点击『Download ZIP』,如果这样做的话,里面有个.gitmodules文件,该文件中的子模块文件不会下载下来。

所以推荐的方式是:递归下载(这样就可以把子模块文件也下载下来),放在~/theos文件夹中,这是theos推荐的。

git clone --recursive https://github.com/theos/theos.git $THEOS
theos安装好了


配置PATH

我们需要用nic.pl创建项目来进行hook操作,但是这个命令在~/theos/bin目录下,并不是在~/usr/local/bin或~/usr/bin下,怎么办呢?

能不能放在后者两个目录呢?其实最好还是不要这样放,因为从theos拿走后,nic.pl可能要访问theos中的其他东西,可能就找不到theos了。

但是又希望在任何一个地方都能使用这个指令,怎么办呢?其实只要把~/theos/bin目录变成跟~/usr/local/bin或~/usr/bin一样的性质就行了。如何做到这一点呢?配置到PATH这个环境变量中的文件夹,在任何地方敲指令都可以好使了。

在.bash_profile中添加东西vim ~/.bash_profile,添加PATH变量,但是不能这样写export PATH=~/theos/bin,这样会覆盖掉~/usr/local/bin和~/usr/bin目录,要将他们加起来。

export PATH=~/theos/bin:/usr/local/bin:/usr/bin(用:冒号拼接隔开)

但是我们并不确定除开上面三个目录还有没有别的指令目录,所以也不能这么写,要引用以前的PATH:

export PATH=~/theos/bin:$PATH(拼接上以前的PATH,引用环境变量的值)

但是上面已经配置过export THEOS=~/theos了,为了统一,所以:

export PATH=$THEOS/bin:$PATH

打印环境变量看下,发现不止上面提到的三个文件夹

FengdeMacBook-Pro:~ fengluo$ echo $PATH
/Users/fengluo/theos/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin


source命令

有可能刚配置完,执行echo $THEOS得到的结果是空的;执行echo $PATH得到的结果中也没有theos/bin,这时候解决的办法是:
执行source .bash_profile指令,意思是让.bash_profile文件马上生效。

所以以后修改了.bash_profile文件,就要对这个文件做下source操作。


编写tweak代码

配置完环境变量后,通过nic.pl来创建tweak项目(也就是hook项目):

创建tweak项目
获取appid
有四个文件
编辑Makefile:

需要配置些变量,文件夹拖拽到sublime中:

修改Makefile
编写Tweak.xm:

从本文最开始的需求可知,我们要hook XMNowPlayingPicView这个类,喜马拉雅app头文件拖拽至sublime,command+p,搜索找到XMNowPlayingPicView.h:

找到需要hook的方法
编写Tweak.xm

接下来对写的代码进行 编译 安装 操作,步骤:
1.来到tingtweak文件夹下,执行make,利用makefile里面的指令来编译;

2.make package

发现有Error:

open2: exec of lzma -c0 failed at /Users/fengluo/theos/bin/dm.pl line 113.
make: *** [internal-package] Error 2

在网上找了好些办法,都没用,什么打开dm.pl注释掉两行什么代码,抱歉,根本没那两行代码。经过自己在$THEOS/vendor/dm.pl/dm.pl$THEOS/makefiles/package/deb.mk这两个文件中修改两个地方,试来试去:

最终在deb.mk文件红框处修改后,就不报错了,而是报警告,警告先不管了:(打包阶段报的这个错,搞了两个晚上,擦)

终于打包成功,安装到手机也成功
生成了一个deb插件

3.把deb插件安装到手机make install

如上图,安装到手机成功,打开手机,喜马拉雅头部的广告页没广告了。


再来个需求2,去掉红框的广告,用tweak编写代码

步骤:
1、从reveal知道要修改的是哪个类,查看头文件要hook哪个方法,再编写tweak;

确定要hook的方法
编写tweak

2、编译打包安装
make clean
cd /Users/fengluo/Desktop/tweak/tingtweak
make
make package
make install

3、查看手机,达到目的


再来个需求3,去掉红框的广告,用tweak编写代码

2、编译打包安装
make clean
cd /Users/fengluo/Desktop/tweak/tingtweak
make
make package
make install

3、查看手机,达到目的


总结步骤:
一、安装签名工具ldid

brew install ldid

二、修改环境变量量

2.1 编辑⽤用户的配置⽂文件
vim ~/.bash_profile
2.2 在.bash_profie⽂文件后⾯面加⼊入以下2⾏行行
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH // 让THEOS/bin的命令可以在任何地方敲
2.3 让.bash_profiel配置的环境变量量⽴立即⽣生效
source ~/.bash_profile

三、下载theos

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

四、新建tweak项⽬

4.1 cd到一个存放项目代码的文件夹(⽐比如桌面)
4.2 选择iphone/tweak的序号
4.3 填写项⽬目信息

五、编辑Makefile

在前面加入环境变量,写清楚通过哪个IP和端口访问手机,THEOS_DEVICE_IP和THEOS_DEVICE_PORT

如果不希望每个项目的Makefile都编写IP和端口环境变量,也可以添加到用户配置文件中,编辑完毕后,$ source ~/.bash_profile让配置生效(或者重启终端)

image.png
vim ~/.bash_profile

export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=10010

source ~/.bash_profile
六、编写代码

打开Tweak.xm文件

%hook XMAdAnimationViewTwo
- (id)initWithFrame:(struct CGRect)arg1 {
    return nil;
}
%end

%hook XMSoundPatchImageView
- (id)initWithFrame:(struct CGRect)arg1 {
    return nil;
}
%end
七、编译-打包-安装
  • 编译
    make
  • 打包成deb
    make package
  • 安装(默认会⾃自动重启SpringBoard)
    make install
八、可能遇到的问题

。。。


如何卸载插件

在手机Library/MobileSubstrate/DynamicLibraries/文件夹下

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容