学了两周的iOS逆向了,学了东西总想用一用,于是下载了一个小游戏-2048来试试刀.
很多人(包括我自己)在没有接触逆向工程的时候可能会觉得那东西非常难,要接触一大堆汇编代码什么的。
实际上简单逆向工程的运用是不复杂的,在这个去广告的过程中甚至没有用到汇编知识。
1.Reveal 分析 App 的 UI 结构
Reveal 是一款用来调试iOS UI的软件,可以给开发者提供运行时App的UI的结构。
在越狱设备上配置好相应环境后,就可以调试任意App了。
很容易的能从中发现三个广告UI的类分别是 Interstitiel 、 HZBannerAd 和 GADAdView。
2.class-dump导出头文件
class-dump 是一个可以用来导出Objective-C可执行文件的头文件的开源项目。
App Store里下载的文件都是经过加密的,所以需要解密之后才能进行dump。dumpdecrypted是个不错的选择。
就这么个小游戏导出了844个头文件,根据之前UI分析的结果进行搜索,最终确定几个关键的函数:
//GADAdView - (void)loadHTMLString:(id)arg1 baseURL:(id)arg2; //HZBanner.h + (void)placeBannerInView:(id)arg1 position:(unsigned long long)arg2 options:(id)arg3 success:(CDUnknownBlockType)arg4 failure:(CDUnknownBlockType)arg5; + (void)requestBannerWithOptions:(id)arg1 success:(CDUnknownBlockType)arg2 failure:(CDUnknownBlockType)arg3; //FBAdContentContainer.h - (_Bool)loadAdData:(id)arg1 minViewability:(int)arg2; //FBAdViewInternal - (void)loadAd; - (void)loadAdFromMarkup:(id)arg1 activationCommand:(id)arg2 orientation:(long long)arg3; //Interstitiel.h - (void)show:(id)arg1; - (void)requestURL:(id)arg1;
3.编写Tweak更改程序运行逻辑
用Substrate勾住以上的函数之后,将函数体直接改为了return,这样这些函数本身的代码就无法得到执行,广告也就不会出现了。
效果: