首页
社区
课程
招聘
[原创]《安卓逆向这档事》番外实战篇1-某电影视全家桶
发表于: 2024-7-13 22:17 20992

[原创]《安卓逆向这档事》番外实战篇1-某电影视全家桶

2024-7-13 22:17
20992

借助已学知识完成样本软件的去除签名校验、去广告与更新、布局优化

1.样本软件
2.jadx-gui
3.MT管理器/NP管理器
4.算法助手
5.开发助手

《安卓逆向这档事》疑难解答-建议征集贴
【吾爱破解安卓逆向入门教程《安卓逆向这档事》三、初识smali,vip终结者】
【【Android逆向】16分钟动画讲解java以及对应的smali代码】
PS:讲得特别好,建议对于smali还不熟悉的朋友可以多看几遍!!!

关键字:initsdk、loadad、initad等

赋值参考第六课52:08

吾爱破解安卓逆向入门教程《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代理、IO重定向
1.核心破解,免签名安装
2.一键去签名工具
[实战破解]白描-动态代{过}{滤}理Hook签名校验
3.手动分析签名校验

【吾爱破解安卓逆向入门教程《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡】
1.修改xml中的属性值

2.上帝模式优化布局

[白嫖大法]某影视邀请协议分析

完成剩余布局的优化并截图回复

百度云
阿里云
哔哩哔哩
教程开源地址
PS:解压密码都是52pj,阿里云由于不能分享压缩包,所以下载exe文件,双击自解压

广告关键词 厂商 文档
com.qq.e.ads 腾讯优量汇广告 365K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0K6i4K6u0W2j5h3c8F1k6i4c8Q4x3X3g2I4M7g2)9J5k6h3y4G2L8g2)9J5c8X3c8G2j5#2)9J5c8X3q4F1k6s2u0G2K9h3c8Q4x3V1k6#2L8X3W2G2L8W2)9J5c8Y4g2F1K9h3!0F1i4K6g2X3M7%4m8D9j5i4y4Z5
CSJAD、TTAdSdk、bytedance、pangolin 穿山甲广告 c51K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0M7$3A6H3L8r3q4@1k6X3!0J5L8g2)9J5k6h3y4G2L8g2)9J5c8Y4y4#2M7s2m8G2M7Y4c8U0k6h3&6@1k6i4u0Q4x3V1j5#2x3K6V1#2
ADMob、google.ads 谷歌广告 186K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0K6i4K6u0W2k6$3!0G2k6$3I4W2i4K6u0W2j5$3!0E0i4K6u0r3j5h3c8E0L8$3u0Q4x3V1k6S2L8X3c8J5L8$3W2V1i4K6u0r3j5i4m8H3i4K6u0V1L8%4m8W2L8W2)9K6c8X3S2D9i4K6y4p5P5X3S2Q4x3X3c8U0L8W2)9J5x3$3g2^5N6r3g2F1k6l9`.`.
TorchAd 360广告 436K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6W2j5i4y4&6k6r3!0U0i4K6u0W2M7$3!0X3N6q4)9J5k6e0x3$3x3q4)9J5k6h3y4F1i4K6u0r3k6r3!0U0i4K6y4r3M7s2u0G2K9X3g2U0N6q4)9K6c8o6p5^5y4U0f1^5z5h3k6S2k6h3b7^5y4U0y4T1x3r3p5J5y4r3j5I4y4h3j5&6j5X3y4T1j5h3k6V1y4h3x3%4i4K6t1$3j5h3#2H3i4K6y4n7k6r3!0U0i4K6y4p5x3X3y4T1j5X3u0W2x3e0W2U0y4h3y4T1z5e0m8X3y4h3f1%4j5e0b7I4j5K6M7H3x3K6N6T1x3o6l9J5z5h3q4Q4x3U0k6S2L8i4m8Q4x3@1u0U0L8$3&6X3K9h3N6Q4x3@1c8@1K9i4c8D9k6g2)9#2k6X3#2W2L8Y4g2Q4y4h3k6@1L8$3x3`.
kwad 快手广告 00dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6#2i4K6u0W2K9%4g2S2K9i4y4Z5L8%4g2Q4x3X3g2U0L8$3#2Q4x3V1k6Z5L8$3#2W2i4K6u0r3K9r3g2D9M7q4)9J5c8X3c8W2N6r3q4A6L8q4)9J5c8U0p5K6x3K6c8Q4x3V1j5I4x3K6M7H3i4K6u0r3x3e0x3I4x3l9`.`.
baidu.mobads 百度广告 542K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0U0k6g2)9J5k6i4y4K6M7q4)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3L8i4y4K6M7q4)9J5c8Y4y4V1K9#2)9J5c8V1u0S2K9h3c8#2e0h3!0T1b7h3c8K6i4K6g2X3e0g2y4e0f1q4)9#2k6X3u0V1i4K6g2X3f1@1c8w2i4K6g2X3j5h3&6V1M7X3!0A6k6q4)9#2k6Y4j5#2i4K6u0W2x3g2)9J5k6i4m8V1k6R3`.`.
MimoSdk 米盟广告 348K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1y4g2)9J5k6h3q4Q4x3X3g2E0j5i4u0C8k6i4c8Q4x3X3g2^5K9h3q4G2L8h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8V1q4V1b7$3g2F1N6r3g2J5i4K6u0r3x3r3b7K6j5e0x3$3z5e0f1I4y4X3g2W2x3e0b7$3k6e0S2S2z5h3b7#2j5K6t1&6x3o6V1^5y4e0V1K6z5h3c8S2y4o6j5J5y4r3k6W2x3r3q4Q4x3V1k6m8k6p5y4W2L8Y4c8W2M7U0m8V1x3$3p5K6y4U0V1#2x3e0k6W2k6e0p5@1y4X3f1^5j5e0W2V1y4h3x3J5z5e0l9&6z5o6f1&6x3K6W2V1j5e0b7$3x3U0c8X3k6e0m8S2i4K6u0W2K9s2c8E0L8l9`.`.
sigmob.sdk sigmob广告 149K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4Q4x3X3g2K6K9h3N6E0L8$3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Q4x3U0y4Q4x3V1k6e0K9h3N6E0L8$3u0Q4x3U0g2q4y4q4)9J5y4f1u0p5i4K6t1#2b7V1k6Q4x3U0g2q4y4#2)9J5y4e0V1@1i4K6t1#2b7e0S2Q4x3U0g2q4y4W2)9J5y4e0S2o6i4K6t1#2z5o6N6Q4x3U0g2q4y4g2)9J5y4e0S2p5i4K6t1#2z5e0N6Q4x3V1k6e0c8p5E0Q4x3U0g2q4z5g2)9J5y4e0W2n7i4K6t1#2z5o6k6Q4x3U0g2q4y4W2)9J5y4e0R3^5i4K6t1#2z5e0m8Q4x3U0g2q4z5q4)9J5y4f1q4r3i4K6t1#2b7U0c8Q4x3U0g2q4y4W2)9J5y4e0V1^5i4K6t1#2z5p5g2Q4x3V1k6m8L8X3c8J5L8$3W2V1i4K6u0r3f1@1c8w2i4K6t1#2c8e0k6Q4x3U0f1^5c8g2)9J5y4f1p5#2i4K6t1#2c8e0g2Q4x3U0f1^5y4g2)9J5y4f1p5#2i4K6t1#2c8e0W2Q4x3U0f1^5y4g2)9J5y4e0S2p5i4K6t1#2c8e0N6Q4x3U0g2n7c8q4)9J5y4f1q4q4i4K6u0r3
TradPlus TradPlus聚合广告 f85K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6i4u0$3K9h3y4W2i4K6u0W2j5$3!0U0L8%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8$3y4#2L8h3g2F1N6q4)9J5c8Y4A6Z5i4K6u0r3N6s2u0S2k6s2m8D9N6i4y4S2k6q4)9J5k6h3S2@1L8h3H3`.
通过免广告关键字来实现部分广告的去除
public void O(SaiUserInfo saiUserInfo, boolean z) { 
        g0.i(BaseApp.getInstance(), saiUserInfo);  //获取用户信息
        if (z) { 
            v.c().q(SaiSPKey.appToken, saiUserInfo.getToken());  //获取Token
        
        this.e.set(saiUserInfo); 
        this.h.setValue(saiUserInfo.getPic());  //设置用户头像
        if (saiUserInfo.getLogin_type() == 1) {  //判断登录状态,并设置用户信息
            this.g.set("点击登录"); 
            this.f.set(Boolean.FALSE); 
        else 
            this.g.set(saiUserInfo.getNickname()); 
            this.f.set(Boolean.TRUE); 
        
        ObservableField observableField = this.i; 
        observableField.set("ID:" + saiUserInfo.getUser_id());  //获取用户ID
        ObservableField observableField2 = this.j; 
        observableField2.set(SaiAppUtils.d(saiUserInfo.getInvited_count() + "人"));  //获取用户邀请人数
        if (saiUserInfo.getInvited_count() > 0) { 
            ObservableField observableField3 = this.k; 
            observableField3.set(SaiAppUtils.d(N(saiUserInfo.getInvited_count()) + "天 ")); 
        else 
            this.k.set(SaiAppUtils.d("0天")); 
        
        if (saiUserInfo.getFree_time() * 1000 > System.currentTimeMillis()) {  //获取免广告时间
            this.n.set(0); 
            this.m.set(d.a(Long.valueOf(saiUserInfo.getFree_time() * 1000))); 
            this.l.set("剩余免广告:"); 
            BaseApp.getInstance().setFreeTime(saiUserInfo.getFree_time() * 1000); 
            return
        
        this.l.set("邀请好友获得终身免广告特权"); 
        this.n.set(8); 
        BaseApp.getInstance().setFreeTime(0L); 
    }
public void O(SaiUserInfo saiUserInfo, boolean z) { 
        g0.i(BaseApp.getInstance(), saiUserInfo);  //获取用户信息
        if (z) { 
            v.c().q(SaiSPKey.appToken, saiUserInfo.getToken());  //获取Token
        
        this.e.set(saiUserInfo); 
        this.h.setValue(saiUserInfo.getPic());  //设置用户头像
        if (saiUserInfo.getLogin_type() == 1) {  //判断登录状态,并设置用户信息
            this.g.set("点击登录"); 
            this.f.set(Boolean.FALSE); 
        else 
            this.g.set(saiUserInfo.getNickname()); 
            this.f.set(Boolean.TRUE); 
        
        ObservableField observableField = this.i; 
        observableField.set("ID:" + saiUserInfo.getUser_id());  //获取用户ID
        ObservableField observableField2 = this.j; 
        observableField2.set(SaiAppUtils.d(saiUserInfo.getInvited_count() + "人"));  //获取用户邀请人数
        if (saiUserInfo.getInvited_count() > 0) { 
            ObservableField observableField3 = this.k; 
            observableField3.set(SaiAppUtils.d(N(saiUserInfo.getInvited_count()) + "天 ")); 
        else 
            this.k.set(SaiAppUtils.d("0天")); 
        
        if (saiUserInfo.getFree_time() * 1000 > System.currentTimeMillis()) {  //获取免广告时间
            this.n.set(0); 
            this.m.set(d.a(Long.valueOf(saiUserInfo.getFree_time() * 1000))); 
            this.l.set("剩余免广告:"); 
            BaseApp.getInstance().setFreeTime(saiUserInfo.getFree_time() * 1000); 
            return
        
        this.l.set("邀请好友获得终身免广告特权"); 
        this.n.set(8); 
        BaseApp.getInstance().setFreeTime(0L); 
    }
public void initData() {
        super.initData();
        if (!v.c().b(SaiSPKey.AGREE_PRIVATE, false)) {
            ((SaiSplashViewModel) this.viewModel).b(b.s.c.b.a().c(SaiPrivateEvent.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { // from class: b.l.i.v.d
                @Override // io.reactivex.functions.Consumer
                public final void accept(Object obj) {
                    SaiSplashActivity.this.g((SaiPrivateEvent) obj);
                }
            }));
            a0.a.h(this);
            return;
        }
        try {
            s.a.d();  //广告SDK初始化
        } catch (Exception e2) {
            e0.b("===========>>> " + e2.getMessage());
        }
        int g2 = v.c().g(SaiSPKey.INSTANCE.getLaunchCount(), 0);
        if (g2 != 0) {
            if (!v.c().b("extend_java_aa", false)) {
                v.c().s("extend_java_aa", true);
                g2 = 0;
            }
        } else {
            v.c().s("extend_java_aa", true);
        }
        if (g2 == 0) {
            showLoaddingDialog();
            ((SaiSplashViewModel) this.viewModel).b(b.s.c.b.a().c(SaiAppInitEvent.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { // from class: b.l.i.v.a
                @Override // io.reactivex.functions.Consumer
                public final void accept(Object obj) {
                    SaiSplashActivity.this.i((SaiAppInitEvent) obj);
                }
            }));
        }
        g.a.a(g2);
        int i2 = g2 + 1;
        v.c().m(SaiSPKey.INSTANCE.getLaunchCount(), i2);
        c0 c0Var = c0.a;
        if (c0Var.f3990g == -1) {
            c0Var.f3990g = i2;
        }
        if (g2 != 0) {
            if (NetworkUtils.c()) {
                ((SaiSplashViewModel) this.viewModel).n();
                if (c0Var.l("1")) {
                    showLoaddingDialog();
                    SaiSplashAdActivity.invoke(this);
                    finish();
                } else {
                    n(b.DELAY);
                }
            } else {
                n(b.NONET);
            }
        } else {
            ((SaiSplashViewModel) this.viewModel).n();
        }
        if (i.c(d.f().toString(), c0Var.f3986c).equals(c0Var.j(R.string.app_cudgel))) {
            return;
        }
        e0.b("===========>>> app kill app_cudgel");
        System.exit(0);
    }
public void initData() {
        super.initData();
        if (!v.c().b(SaiSPKey.AGREE_PRIVATE, false)) {
            ((SaiSplashViewModel) this.viewModel).b(b.s.c.b.a().c(SaiPrivateEvent.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { // from class: b.l.i.v.d
                @Override // io.reactivex.functions.Consumer
                public final void accept(Object obj) {
                    SaiSplashActivity.this.g((SaiPrivateEvent) obj);
                }
            }));
            a0.a.h(this);
            return;
        }
        try {
            s.a.d();  //广告SDK初始化
        } catch (Exception e2) {
            e0.b("===========>>> " + e2.getMessage());
        }
        int g2 = v.c().g(SaiSPKey.INSTANCE.getLaunchCount(), 0);
        if (g2 != 0) {
            if (!v.c().b("extend_java_aa", false)) {
                v.c().s("extend_java_aa", true);
                g2 = 0;
            }
        } else {
            v.c().s("extend_java_aa", true);
        }
        if (g2 == 0) {
            showLoaddingDialog();
            ((SaiSplashViewModel) this.viewModel).b(b.s.c.b.a().c(SaiAppInitEvent.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { // from class: b.l.i.v.a
                @Override // io.reactivex.functions.Consumer
                public final void accept(Object obj) {
                    SaiSplashActivity.this.i((SaiAppInitEvent) obj);
                }
            }));
        }
        g.a.a(g2);
        int i2 = g2 + 1;
        v.c().m(SaiSPKey.INSTANCE.getLaunchCount(), i2);
        c0 c0Var = c0.a;
        if (c0Var.f3990g == -1) {
            c0Var.f3990g = i2;
        }
        if (g2 != 0) {
            if (NetworkUtils.c()) {
                ((SaiSplashViewModel) this.viewModel).n();
                if (c0Var.l("1")) {
                    showLoaddingDialog();
                    SaiSplashAdActivity.invoke(this);

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 4
支持
分享
最新回复 (2)
雪    币: 10907
活跃值: (5303)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2024-7-14 12:20
0
雪    币: 4676
活跃值: (5046)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢大佬分享。
2024-7-14 14:32
0
游客
登录 | 注册 方可回帖
返回