吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4276|回复: 85
收起左侧

[Android 原创] 新手小白抖*逆向学习探索(去抖*广告)

  [复制链接]
zl6821 发表于 2024-8-14 11:28
本帖最后由 zl6821 于 2024-8-14 12:06 编辑

新手小白抖*逆向学习探索(去广告)

1、apk基础信息

image-20240814092327915.png

2、软件分析

image-20240814093651611.png image-20240814091707907.png image-20240814091822012.png

分析1.开始软件会有一个选择线路的过程,紧接着开屏广告5s倒计时(多次实验一直5s)一直到显示进入,点击进入就可以进到程序主界面。

方案1.既然5s是固定的,那后台肯定会有个5s这样子的一个变量,将他修改为0s,不就完成。

方案2.点击“进入”才能启动页面,如果在广告启动的程序中直接插入点击后的function代码,也可以达到直接进入主界面跳过广告。

3、开干!

3.1先验证下有没有签名的问题?小白弄不了各种签名骚操作,别改完代码,最后有签名校验,那就白弄了。

3.1.1先用mt,重新签名。发现软件可以正常运行。

image-20240814093243552.png

3.1.2用mtactive记录器定位开屏广告所在的active类。

image-20240814093455208.png image-20240814093529068.png

软件在加载后会有一个选择路线的类:com.niming.weipa.widget.u

然后是开屏广告类:com.niming.weipa.ui.splash.SplashActivity

为了去掉广告,这次将对SplashActivity进行手术改造。

3.1.3 为了方便操作,使用jadex进行反编译代码分析,在mt进行修改,生成打包。

image-20240814100031507.png

3.1.4 通过读秒,找到关键程序Y1,开始逐句分析,看不懂没事有GPT

    public final void Y1(final AdBean adBean, SystemInfoBean systemInfoBean) {
        //i2获得了资源ID窗口
        int i2 = com.niming.weipa.R.id.iv_ADImg;
        //设置了i2为资源的动画,设置为渐入效果
        ObjectAnimator fadeOut = ObjectAnimator.ofFloat((ImageView) g1(i2), "alpha", androidx.core.widget.e.G0, 1.0f);
        //检查对象是否为空,防止报错,无关紧要
        Intrinsics.checkNotNullExpressionValue(fadeOut, "ofFloat(iv_ADImg, \"alpha\", 0f, 1f)");
        //设置动画持续时间为1秒
        fadeOut.setDuration(1000L);
        //开始动画
        fadeOut.start();
        //将广告图片加载入上面的动画中
        com.niming.framework.image.a.l(this).s(adBean.content).I().u1((ImageView) g1(i2));
        //设置点击监听
        ((ImageView) g1(i2)).setOnClickListener(new View.OnClickListener() { 
            //设置点击触发函数
            public final void onClick(View view) {
                SplashActivity.Z1(SplashActivity.this, adBean, view);
            }
        });
        //获得广告时长
        int i3 = com.niming.weipa.R.id.tv_adTime;
        //设置窗口可见
        ((TextView) g1(i3)).setVisibility(0);
        //将广告时长和“秒”两个字符串合在一起,放到窗口
        ((TextView) g1(i3)).setText(Intrinsics.stringPlus(systemInfoBean.ad_show_time, " 秒"));
        //设置点击监听
        ((TextView) g1(i3)).setOnClickListener(new View.OnClickListener() {
            //设置点击事件
            public final void onClick(View view) {
                SplashActivity.U1(SplashActivity.this, view);
            }
        });

3.1.5 根据上面的代码,能够知道关键代码就是,直接删除对应的smali,然后重新编译打包安装。

        //开始动画
        fadeOut.start();
        //将广告图片加载入上面的动画中
        com.niming.framework.image.a.l(this).s(adBean.content).I().u1((ImageView) g1(i2));

根据长得像原则,以下smali代码就是对应的这两句,删除-编译-打包-安装。

image-20240814102147732.png

3.1.6运行后发现,广告已经没了,但是还是要倒计时。接下来用方案2,自动跳转,来解决这个问题

image-20240814102417042.png

        ((TextView) g1(i3)).setText(Intrinsics.stringPlus(systemInfoBean.ad_show_time, " 秒"));
        //设置点击监听
        ((TextView) g1(i3)).setOnClickListener(new View.OnClickListener() {
            //设置点击事件
            public final void onClick(View view) {
                SplashActivity.U1(SplashActivity.this, view);
            }
        });

分析上述代码,这个倒计数是可以点击的,我们跟踪下U1函数。

  public static /* synthetic */ void U1(SplashActivity splashActivity, View view) {
        a2(splashActivity, view);
    }

发现U1就是个皮包商,怎么拿的,怎么送出去,这里有大大可以说下,这就是代码混淆么?接下来继续跟踪到a2

    public static final void a2(SplashActivity this$0, View it) {
        Intrinsics.checkNotNullParameter(this$0, "this$0");
        if (TextUtils.equals(((TextView) this$0.g1(com.niming.weipa.R.id.tv_adTime)).getText().toString(), "进入")) {
            this$0.Q1();
        }
    }

这下就很清楚了,倒计时的点击了以后,先是判断显示的是不是“进入两个字”,如果是就执行 Q1函数;在跟踪一次。

    public final void Q1() {
        h1(this.o1);
        P1();
    }

真相大白了,Q1里面的这两个就是跳转到程序,那就把程这两行直接插进主程序。(java幻想展示),请教大佬有没有能够直接修改java,不用修改smali的工具。

 public final void Y1(final AdBean adBean, SystemInfoBean systemInfoBean) {
............
        //获得广告时长
        int i3 = com.niming.weipa.R.id.tv_adTime;
        //设置窗口可见
        ((TextView) g1(i3)).setVisibility(0);
        //将广告时长和“秒”两个字符串合在一起,放到窗口
        ((TextView) g1(i3)).setText(Intrinsics.stringPlus(systemInfoBean.ad_show_time, " 秒"));

        //设置点击监听
        ((TextView) g1(i3)).setOnClickListener(new View.OnClickListener() {
            //设置点击事件
            public final void onClick(View view) {
                SplashActivity.U1(SplashActivity.this, view);
            }
              //插入代码到监听的外侧
         h1(this.o1);
         P1();
         .........
        });

锁定smali,把这段东西插到主函数Y1里(一定把line 什么的删除)通过setonclick就可以定位到应该插到哪里,有的兄弟可能会疑问,问什么插到这里,因为要顺着作者的逻辑,设置了监听以后,才有可能点击,为的就是免点击直接触发跳过。有兴趣朋友可以试下,如果放到设置监听前,程序就会崩溃。

image-20240814104927431.png image-20240814111237436.png

3.1.7 保存修改-反编译-签名-打包-安装

通过以上步骤完美跳过广告,

4、下一阶段!去除内部广告

image-20240814111701084.png

5、环境及工具

5.1 jadex

5.2 MT管理器

5.3 Pixel5(root)手机一台

5.4 Anlink手机投屏工具

[/md]

免费评分

参与人数 20吾爱币 +27 热心值 +18 收起 理由
junjia215 + 1 + 1 用心讨论,共获提升!
fi5hjump + 1 + 1 用心讨论,共获提升!
allspark + 1 + 1 用心讨论,共获提升!
zpbooks + 1 + 1 用心讨论,共获提升!
afrend + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lgg + 1 + 1 谢谢@Thanks!
JaneEyre001 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
521105 + 1 我很赞同!
Augsummer + 1 + 1 我很赞同!
T4DNA + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
开心熊猫741 + 1 + 1 我以为是音没想到是阴...
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fsjz + 1 + 1 我很赞同!
Qiaoyuexuan + 1 + 1 谢谢@Thanks!
vmoranv + 1 热心回复!
lenxueyan + 1 + 1 我很赞同!
Arrears + 1 + 1 用心讨论,共获提升!
dwn6905 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
debug_cat + 2 + 1 热心回复!
杨辣子 + 1 + 1 牛逼!!!

查看全部评分

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

虞美人草 发表于 2024-8-14 16:04
抖阴?6,名字不错
debug_cat 发表于 2024-8-14 16:12
传说中的yang哥 发表于 2024-8-14 16:22
marsliu1 发表于 2024-8-14 16:29
坐等后续。
 楼主| zl6821 发表于 2024-8-14 16:32

可以用 已经在用了 清爽版
 楼主| zl6821 发表于 2024-8-14 16:33
debug_cat 发表于 2024-8-14 16:12
重打包之后功能都正常?期待后续。

已经在用 清爽版
 楼主| zl6821 发表于 2024-8-14 16:34
虞美人草 发表于 2024-8-14 16:04
抖阴?6,名字不错

道友好,同道中人,一眼看出
beichen1031 发表于 2024-8-14 16:55
道友,肾重啊
 楼主| zl6821 发表于 2024-8-14 17:36
PLMOKNB 发表于 2024-8-14 17:34
楼主直接发个破解好的软件链接吧

不敢发,发了就进去了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 11:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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