IOS逆向(三)-去除某app谷歌广告

IOS逆向(三)-去除某app谷歌广告

在应用商店随便找的一个免费piano应用,通过逆向分析去除应用中的谷歌广告。

难度

★★☆☆☆

工具环境

  • 越狱IOS 14.4
  • frida-ios-dump
  • frida
  • frida-trace
  • IDA 7.7
  • reveal

思路分析

移除app内部的广告有很多种方法。

  • IDA分析maco文件,定位广告代码直接移除。
  • frida hook网络请求,拦截广告请求。
  • reveal分析应用的UI,隐藏广告的view。
  • 拦截域名解析请求并重定向。

IDA分析应用广告代码

砸壳后扔进IDA分析,在函数列表搜索广告的关键词adver。

从方法名可以判断createAdvertisementBannerView应该是创建广告视图的方法。

查看交叉引用,分析上层的调用函数。

上层函数中代码中有许多操作包括初始化类、调用方法、存取对象属性和一些内存管理操作(比如objc_retain和objc_release)。

  1. 创建一个AdvertisementIdentifiers对象,并使用多个参数来初始化。
  2. 创建一个AdvertisementBannerViewConfiguration对象。
  3. 获取应用的代理,可能是为了取得根视图控制器。
  4. 通过AdvertisementManager类创建一个广告横幅视图(BannerView)。
  5. 根据某些条件判断,会获取应用的主屏幕尺寸并设置到广告横幅视图(BannerView)上。

frida替换广告加载函数

var baseAddr = Module.findBaseAddress('ThePiano');
console.log("The Piano base address: " + baseAddr);

var targetFunctionAddr = baseAddr.add(0x6E854); 
console.log("Target function address: " + targetFunctionAddr);

const targetFunction = new NativeFunction(targetFunctionAddr, 'void', []);

Interceptor.replace(targetFunctionAddr, new NativeCallback(function () {
    console.log("跳过广告加载的偏移地址 0x6E854");
}, 'void', []));

const targetFunctionAddrRootVC = baseAddr.add(0x864A8); 

Interceptor.attach(targetFunctionAddrRootVC, {
    onEnter: function (args) {
        console.log('进入广告加载函数的调用函数');
    },
    onLeave: function (retval) {
        console.log('退出广告加载函数的调用函数');
    }
});

效果如下:

 frida -U -f com.impalastudios.pianofree -l piano.js

reveal分析广告UI

在设置的reveal中开应用的调试。

然后在mac上连接越狱ipad。

在reveal中隐藏广告的视图。

frida-trace拦截域名解析请求

frida-trace -U -f com.impalastudios.pianofree -i "getaddrinfo"

通过拦截app内的域名解析,将其重定向到127.0.0.1。修改frida-trace的脚本如下:

{
  onEnter(log, args, state) {
    var hostname = Memory.readUtf8String(args[0]);
    // log('Intercepted call to getaddrinfo for ' + hostname);
    // 如果域名中包含google就进行重定向
    if (hostname.includes('google')) {
        log('Redirecting request for ' + hostname + 'to 127.0.0.1');
        args[0] = Memory.allocUtf8String('127.0.0.1');
    }
  },
  onLeave(log, retval, state) {
  }
}

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

目前为止有一条评论

ala 发布于2:52 下午 - 5月 30, 2023

厉害

发表评论