吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11572|回复: 31
收起左侧

[Android 原创] 兰台的Android破解绿化教程-01-通用的去除启动页广告方法(适应度98%)

  [复制链接]
moyu2 发表于 2019-3-6 16:48
通用的去除启动页广告方法(适应度98%)
by瀚海兰台
###未经许可,谢绝任何形式转载###
第一例:
以微博为例:
1.解压安装包,反编译

2.打开AndroidManifest.xml

搜索"android.intent.category.LAUNCHER"

定位启动页活动类:


<activity
            android:theme="@7f0b0052"
            android:name="com.sina.weibo.SplashActivity"
            android:screenOrientation="portrait"
            android:alwaysRetainTaskState="true">
            <intent-filter>
                <action
                    android:name="android.intent.action.MAIN" />
                <category
                    android:name="android.intent.category.LAUNCHER" />
  


。。。。。。。。。。。。。省略
        </activity>

3.发现启动页活动类:
com.sina.weibo.SplashActivity

4.顺着路径进去寻找进入

SplashActivity类:

5.jadx反编译一下:

package com.sina.weibo;

省略。。。。。。。。。。。。。。。
import com.weibo.mobileads.controller.WeiboAdTracking;
import com.weibo.mobileads.util.AdUtil;
import com.weibo.mobileads.util.AdUtil.SaveDBType;
import com.weibo.mobileads.util.LogUtils;
import com.weibo.mobileads.view.FlashAd;      
import com.weibo.mobileads.view.FlashAd.Orientation;


发现了这个导入包:import com.weibo.mobileads.view.FlashAd;

顾名思义很明显对吧!

6.然后全局搜索:"FlashAd"

发现如下成员变量:

public class SplashActivity extends Activity {
//无关省却;
    private FlashAd f = null;
        
        然后全局搜索 "this.f"     查看调用:
        

private void d() {
     // 省略 .............................
           
           

           
        } else if (this.g && this.h) {
            if (StaticInfo.a()) {
                intent = new Intent().setClass(getApplicationContext(), MainTabActivity.class);
            } else {
                intent = new Intent().setClass(getApplicationContext(), VisitorMainTabActivity.class);
            }
                        
                        
                        
以下代码删去即可                        
/*
                        
            if (this.f != null) {
                this.f.show(this, intent);                //细心的朋友可能注意到了,没错删去这一行即可
                return;
            }
                        
*/
                        
            startActivity(intent);
            finish();
                        
                        
                        
                        
                        
                        
        } else {
                        
                        
                        
        //省略:

                 ..................
                  
                  
                    
                  
    }



7.具体到smali中就是:


    .line 368
    :goto_c6
    iget-object v10, p0, Lcom/sina/weibo/SplashActivity;->f:Lcom/weibo/mobileads/view/FlashAd;

    if-eqz v10, :cond_e0

#注释掉下面这俩即可


    .line 369
  #  iget-object v10, p0, Lcom/sina/weibo/SplashActivity;->f:Lcom/weibo/mobileads/view/FlashAd;

  #  invoke-virtual {v10, p0, v2}, Lcom/weibo/mobileads/view/FlashAd;->show(Landroid/app/Activity;Landroid/content/Intent;)V




    goto :goto_5e


第二个例子:
智友app启动页广告:

1.按照相同的方法找到:
com.zhiyoo.ui.MainActivity



//省略
import com.baidu.mobstat.StatService;
import com.bytedance.sdk.openadsdk.AdSlot.Builder;
import com.zhiyoo.app.PushService;
import com.zhiyoo.ui.VoteRefreshActivity.a;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import org.json.JSONObject;


2.发现了导入包:

mport com.bytedance.sdk.openadsdk.AdSlot.Builder;

3.全局搜素"Builder"

发下了如下方法:

    private void y() {
        asg.a(getApplicationContext()).createAdNative(this).loadSplashAd(new Builder().setCodeId(this.z.bo()).setSupportDeepLink(true).setImageAcceptedSize(asn.b, asn.a).build(), new 4(this), 2000);
    }
}


4.可以看到防伪码权限是private

5.于是 smali中全局搜索"y()V" 查看方法调用:

于是我们注销掉即可,如下:

method static synthetic d(Lcom/zhiyoo/ui/MainActivity;)V
    .registers 1

    .prologue
        
        
#         invoke-virtual {p0}, Lcom/zhiyoo/ui/MainActivity;->y()V
         
         
         
    return-void
.end method


总结:
1.启动页广告,顾名思义肯定实在启动页活动加载展示
2.找到启动页活动类,分析导入包,类,一般很明显分析出广告包
3.根据导入的广告类查看如何调用,然后分析如何产生即可

后记:
1.为什么不直接跳过启动活动?
启动页是加载资源的,贸然跳过会出现问题&&非正规手段&&黑屏,反应迟钝问题
2.如何分析广告包:
需要简单的Java基本知识即可

第一篇教程,关注不丢失

52pojie.jpg

5201.png

免费评分

参与人数 14吾爱币 +23 热心值 +13 收起 理由
52pojie2 + 1 + 1 谢谢@Thanks!
yxid + 1 我很赞同!
jasonj + 1 + 1 我很赞同!
anysuy + 1 + 1 我很赞同!
a48602 + 1 + 1 谢谢@Thanks!
szk123 + 1 + 1 谢谢@Thanks!
luoawai123 + 1 + 1 用心讨论,共获提升!
tail88 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
愚无尽 + 1 + 1 支持原创。多点图片更容易看吧。
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qtfreet00 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yuanjie221 + 2 + 1 已经处理,感谢您对吾爱破解论坛的支持!
龍、貓 + 2 + 1 谢谢@Thanks!
如果爱忘了 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

CrazyNut 发表于 2019-3-6 17:07
大佬用代码编辑器贴代码搞上来吧
 楼主| moyu2 发表于 2019-3-7 00:17
a48602 发表于 2019-3-6 23:00
小白不太懂,第一個及第二個範例的 import 列應該會有好多個.
大大是如何知道是 import com.weibo.mobilea ...

FlashAd就是闪屏广告啊,当然你也可以阻断其他的广告包,只要最终能达到去除效果即可
 楼主| moyu2 发表于 2019-3-6 16:53
作者补充:
在smali语句前面加上   #   即可注释掉这句话,作用相当于删去
 楼主| moyu2 发表于 2019-3-6 16:54
作者补充-02:
同学们可以继续查看启动页广告所在类其他方法,也能达到相同目的(自己要学会思考),本文仅起抛砖引玉作用
如果爱忘了 发表于 2019-3-6 17:28 来自手机
感谢楼主分享通用思路,小白学习了
letu 发表于 2019-3-6 17:32 来自手机
谢谢分享,
chang1582 发表于 2019-3-6 17:46
谢谢分享
voice 发表于 2019-3-6 17:49
排版看的眼疼,不过还是谢谢楼主分享技术
丶那年如此年少o 发表于 2019-3-6 18:21
我以前是在AndroidManifest.xml找到action.MAIN,替换成启动页后activity
 楼主| moyu2 发表于 2019-3-6 19:25
丶那年如此年少o 发表于 2019-3-6 18:21
我以前是在AndroidManifest.xml找到action.MAIN,替换成启动页后activity

本文最后已经说了,这个方法根本不对
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表