1TweakStartUp - 喜马拉雅FM去广告

 

思路

  1. Reveal查看广告控件
  2. 处理
    1. 方案一:用cycript把这个控件干掉
      1. 问题:不彻底,只是在内存中干掉了
    2. 方案二:把这个View的init方法的实现hook掉,直接return nil;
      1. 通过class-dump找到这个View的头文件

hook的简单实现

Theos工具

作用:实现比较简单的hook操作

使用原理

编写的hook代码 → deb插件 → 安装到手机上 → 修改宿主函数

安装方法

安装签名工具ldid

$ brew install ldid

添加theos路径到环境变量

export THEOS=~/theos
export PATH=$THEOS/bin:$PATH # 把命令路径扔给PATH环境变量 #不能PATH=$THEOS/bin这样写,会把之前的PATH都覆盖掉了 :为分隔符 $PATH 引用以前的环境变量

下载theos

git clone --recursive https://github.com/theos/theos.git $THEOS  // 递归clone依赖的库

基本使用

前置 - 环境变量配置

需要使用nic.pl这个文件创建一个项目 - 记得确认PATH环境变量已经配好了

使用

➜  Desktop nic.pl
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/cydget
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/ios7_notification_center_widget
  [7.] iphone/library
  [8.] iphone/notification_center_widget
  [9.] iphone/preference_bundle_modern
  [10.] iphone/tool
  [11.] iphone/tweak
  [12.] iphone/xpc_service
Choose a Template (required): 11
Project Name (required): Momotweak
Package Name [com.yourcompany.momotweak]: com.azen.momotweak
Author/Maintainer Name [Azen Xu]:
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.maimemo.ios.momo // 此处需要填写目标Hook app的bundle id
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:
Instantiating iphone/tweak in momotweak/...
Done.

修改文件

# makefile文件,需要指定下关联手机的端口号 和 IP号


export THEOS_DEVICE_IP=127.0.0.1 # 配置连接手机的端口
export THEOS_DEVICE_PORT=38438 # 配置连接手机的端口

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = Momotweak
Momotweak_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 SpringBoard" # 安装之后,重启SpringBoard

hook目标方法

编译tweak文件

make

打包成deb

make package

安装

make install # 会自动将deb通过makefile中指定的环境变量IP:PORT安装到手机上

报错与解决

Can't locate IO/Compress/Lzma.pmhttps://www.jianshu.com/p/866c7418d506