去除Wifi分析仪底部广告
本帖最后由 jackyvan 于 2017-7-2 10:14 编辑首先用 AndroidCrackTool 把apk文件反编译,然后提前其中的dex文件,反编译成jar文件。然后JD打开jar文件,根据反编译的AndroidMainfest.xml找到入口 com.farproc.wifi.analyzer.MyApplication 和 com.farproc.wifi.analyzer.MainScreen 。
用JD查看对应文件代码,发现 MyApplication.class 里没有什么特殊代码,那有很大可能就存在于文件MainScreen里。
用JD查看 MainScreen.class ,首先在最上面的 import 里 发现
import com.google.android.gms.ads.d;
import com.google.android.gms.ads.h;
这两个导入,看来用的是google的广告服务,然后接着往下看,在类的开始的位置 定义了一个 私有变量
private com.google.android.gms.ads.e G;
这个是广告的关键点的可能性非常大,根据这个变量在文件里查找相应的使用过此变量的地方,发现了好几处。
private void M()
{
if (this.O == null)
{
this.O = new com.farproc.wifi.analyzer.a.a(this, this.J, "<script type=\"text/javascript\" src=\"http://ad.leadboltads.net/show_app_ad.js?section_id=977050972\"></script>");
this.O.a(new a.a()
{
public void a(com.farproc.wifi.analyzer.a.a paramAnonymousa)
{
MainScreen.g(MainScreen.this).a(MainScreen.this, "Click");
Settings.a(MainScreen.f(MainScreen.this).c);
paramAnonymousa.c();
MainScreen.a(MainScreen.this, null);
}
});
}
//此处根据判断G是否被实例化来设置起Visibility为显示
if (this.G != null) {
this.G.setVisibility(8);
}
this.O.a();
}
private void O()
{
//此处判断G是否实例化,如果为null则实例化此变量
if (this.G == null)
{
this.G = new com.google.android.gms.ads.e(this);
this.G.setVisibility(8);
this.G.setAdSize(d.g);
this.G.setAdUnitId("ca-app-pub-7095649012086171/4602092489");
this.G.setAdListener(this.Q);
this.J.addView(this.G, new LinearLayout.LayoutParams(-1, -2));
if (this.j.c.getBoolean("test_ad", false)) {
this.G.setBackgroundColor(Settings.a());
}
}
if (!this.R) {
this.M.a(this, "Request");
}
try
{
this.G.a(Settings.a(this, P()));
if (this.O != null) {
this.O.b();
}
return;
}
catch (Throwable localThrowable)
{
for (;;)
{
Log.e("MainScreen", "showGoogleBannerAdView", localThrowable);
}
}
}剩下的还有几处代码,不过都是以判断G是否实例化为前提,所以判断G实例化之后才会显示广告,那如果我们不让其实例化则广告可能就不会显示,所以我们只要在 O() 最开始位置return 让其不实例化G就可以 private void O()
{
return;
....
}我们在反编译apk后得到的smali文件夹中找到对应的MainScreen.smali文件 找到 .method private O()V ,修改如下.method private O()V
.locals 5
iget-object v0, p0, Lcom/farproc/wifi/analyzer/MainScreen;->G:Lcom/google/android/gms/ads/e;
#此处新增一行返回
return-void
if-nez v0, :cond_0
new-instance v0, Lcom/google/android/gms/ads/e;然后用AndroidCrackTool重新打包(把上面反编译apk后得到的目录路径填入源文件处即可),重新打包完再把生成的apk重新签名,安装运行,就发现广告不再显示了。 lialu2009 发表于 2017-7-2 10:48
楼主厉害。工具是群里下载的么?
多谢支持 是mac版的,下载地址 https://github.com/Jermic/Android-Crack-Tool 辛苦了。感谢分享 不错学习下去广告 谢谢楼主分享,分析的很好! 这个不错,很有用处 辛苦了。感谢分享 感谢分享 把去广告后的软件分享下咯{:1_918:}