记一次给饮水机软件去广告

记一次给饮水机软件去广告

Target: 慧生活 798(com.cloudora.android 1.0.132)

起因是这个学期回来之后小程序版的广告已经多到好似流氓软件,各种贴片与开屏广告实在让人忍无可忍
然而支付宝小程序无法直接修改,经过一番搜索发现竟然有 app 版本,于是下载准备动手

初步分析

打开软件,上来就是一个开屏广告糊脸,然后还是传感拆弹摇一摇广告
进入主界面,下方加了个贴片广告,最中间有个自家的看广告领优惠券的宣传

接下来看看如何去除
通过 activity 记录很容易发现,先是加载了 io.dcloud.PandoraEntry,然活再是 PandoraEntryActivity

软件没有加壳,可以直接分析
然后发现

public class PandoraEntryActivity extends WebAppActivity    // class@001b01 from classes2.dex
{public void PandoraEntryActivity(){super();
    }
}

事实上是初始化了 WebAppActivity
看到这里有经验的就能发现端倪了,应该是网页打包的软件,事实上这个软件是 Uniapp 写的,不过我们这里先继续看

去除 Splash

这里我直接看名字猜功能,很快就能发现
记一次给饮水机软件去广告
我试了一下,直接给他 return-void 就可以了,再次打开就已经没有 splash 了

去除贴片广告

而进入主界面之后饮水机列表下方的贴片却不是通过 Android 接口渲染的。这里就要提到刚才发现的 Uniapp 了
这类软件是将网页资源本地储存,然后通过 Webview 渲染的。那说明这个广告应该是存在网页资源中

对于 uniapp,网上有不少资料,这个样本没有进行加密,资源都明文存在

assets\apps__UNI__E988A7D\www

这个目录里面

定位广告

对于网页调试,最好的就是用 DevTools 了。但是在使用之前,我们得先给这个 Webview 开启 Debuggable
这里使用 Frida 去 hook Webview

Java.perform(function() {var Webview = Java.use("android.webkit.WebView")
    Webview.loadUrl.overload("java.lang.String").implementation = function(url) {console.log("\n[+]Loading URL from", url);
        this.setWebContentsDebuggingEnabled(true);
        this.loadUrl.overload("java.lang.String").call(this, url);
    }
});

这之后开启 adb,然后打开

chrome://inspect/#devices

就可以看到 app 的 html 了

经过一番查找,我们发现了 ad 的位置
记一次给饮水机软件去广告

要去除也很简单,直接找到 view.css

记一次给饮水机软件去广告
将这个控件大小改 0 就可以

成品

直接发了, 成品

正文完
 0
评论(没有评论)