吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3941|回复: 42
收起左侧

[Android 分享] 学破解第214天,《恭喜你获得广告&弹窗静默卡》学习

  [复制链接]
小菜鸟一枚 发表于 2025-2-18 21:19

前言:

  坛友们,年轻就是资本,和我一起逆天改命吧,我的学习过程全部记录及学习资源:https://www.52pojie.cn/thread-2006536-1-1.html

立帖为证!--------记录学习的点点滴滴

0x1 恭喜你获得广告&弹窗静默卡

  1.开始第三关,点击后,出现等一个等待XX秒的弹窗。

https://s21.ax1x.com/2025/02/16/pEKRA0g.png

  2.点开np管理器左上角菜单,打开activity记录功能,似乎一直崩溃,那就用开发助手的记录功能,看到com.zj.wuaipojie.ui.AdActivity,长按复制。

https://s21.ax1x.com/2025/02/16/pEKRZkj.png

  3.再去np管理器,查看dex文件,搜索这个类,进去后点右上角三个点,将它转为java代码。

public final class AdActivity extends AppCompatActivity {
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(2131427363);
        loadAd();
    }

    private final void jump() {
        startActivity(new Intent((Context) this, ChallengeThird.class));
        finish();
    }

    private final void loadAd() {
        new Handler().postDelayed(new ExternalSyntheticLambda0(this), 3000);
    }

    /* renamed from: loadAd$lambda-0 */
    private static final void m0loadAd$lambda-0(AdActivity adActivity) {
        adActivity.jump();
    }
}

  4.再结合这个表,可以看到先执行loadAd函数,然后等待3秒钟,然后执行新建一个new ExternalSyntheticLambda0类,执行jump函数,在jump函数里面跳转到ChallengeThird.class,再通过startActivity切换页面。

函数名称 描述
onCreate() 一个Activity启动后第一个被调用的函数,常用来在此方法中进行Activity的一些初始化操作。例如创建View,绑定数据,注册监听,加载参数等。
onStart() 当Activity显示在屏幕上时,此方法被调用但此时还无法进行与用户的交互操作。
onResume() 这个方法在onStart()之后调用,也就是在Activity准备好与用户进行交互的时候调用,此时的Activity一定位于Activity栈顶,处于运行状态。
onPause() 这个方法是在系统准备去启动或者恢复另外一个Activity的时候调用,通常在这个方法中执行一些释放资源的方法,以及保存一些关键数据。
onStop() 这个方法是在Activity完全不可见的时候调用的。
onDestroy() 这个方法在Activity销毁之前调用,之后Activity的状态为销毁状态。
onRestart() 当Activity从停止stop状态恢进入start状态时调用状态。

  5.那么最微小的改动就是不破坏程序流程,将等待时间减少,返回到Smali代码,搜索bb8可以看到这个代码,改成0x1,然后退出保存,重新安装apk。

const-wide/16 v2, 0xbb8  //对应10进制3000

invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z

  6.点击第三关,可以看到快速到了一号广告。

https://s21.ax1x.com/2025/02/16/pEKRmhn.png

  7.打开算法助手,勾选需要hook的应用,单击进去,勾选弹窗定位,然后发现算法助手提示模块未激活。

https://s21.ax1x.com/2025/02/16/pEKRMcV.png

  8.才发现前面安装算法助手的时候,没有勾选系统框架,安装的时候顶部有一个提示Xposed模块尚未激活,点进去启用模块,勾选要hook的应用,然后点齿轮图标设置,再重复第7步,就可以进入横幅广告了。

https://s21.ax1x.com/2025/02/16/pEKRrHe.png

  9.也可以通过算法助手的关键词屏蔽弹窗,多个关键词用英文逗号分隔。

  10.我们再去日志查看,可以看到dialog弹窗,一号弹窗和二号弹窗信息,点进去可以看到调用堆栈信息,第一个是Xposed模块,第三个调用了onCreate函数。

返回结果类型:void
返回结果值:void

调用堆栈:
        at de.robv.android.xposed.XposedBridge$AdditionalHookInfo.callback(Unknown Source:147)
        at LSPHooker_.show(Unknown Source:8)
        at com.zj.wuaipojie.ui.ChallengeThird.onCreate(ChallengeThird.kt:53)

https://s21.ax1x.com/2025/02/16/pEKf6SI.png

  11.使用np管理器打开dex文件,搜索这个函数,类型选择方法名。

https://s21.ax1x.com/2025/02/16/pEKf2Of.png

  12.show函数就是弹窗代码,搜索一下show函数,找到两个调用,前面加个#号,给他注释掉。

  .line 38
    invoke-virtual {p1}, Landroidx/appcompat/app/AlertDialog$Builder;->show()Landroidx/appcompat/app/AlertDialog;

 .line 53
    invoke-virtual {p1}, Lcom/zj/wuaipojie/util/CommonDialog;->show()V

  13.我们再打开开发助手,点击布局查看,再点击放大镜就出现框框了,点击横幅的框框,可以看到一个ad image的控件点进去,有一个view id,长按复制后面的数值0x7f0801ca。

https://s21.ax1x.com/2025/02/16/pEKhSh9.png

  14.再np管理器打开apk包,右上角xml搜索,搜索类型:资源id,找到xml文件进去在搜索,发现搜索不到,往下拉看到了ad image,没看到0x7f0801ca,我们可以点右上角关闭id转名称就可以。

<ImageView
           android:id="@id/third_ad_image"
           android:background="@mipmap/third_ad"
           android:layout_width="wrap_content"  //wrap_content适应屏幕宽度
           android:layout_height="150.0dip"     //高度
           android:layout_marginTop="100.0dip"/>

https://s21.ax1x.com/2025/02/16/pEKhknK.png

  15.我们把高度和宽度全部改为0,就从视觉上感受不到横幅广告了,还可以在上面的布局代码里面添加下面一句代码,就是从代码层面不显示了。

android:visibility="gone"

0x2 作业

  1.安装作业apk观察一下,可以看到一个明显的弹窗。

https://s21.ax1x.com/2025/02/16/pEKhYNQ.png

  2.通过开发助手-布局查看,定位弹窗ID,0x102000b,再去np管理器搜索,进来后搜索102000b,定位到目标,添加一句不显示弹窗的代码,然后重新安装发现还是有弹窗。

https://s21.ax1x.com/2025/02/16/pEKhU9s.png

  3.然后用算法助手屏蔽弹窗,似乎还是去不掉,换成开发助手记录一下:com.zj.wuaipojie.ui.MainActivity,通过命令dumpsys activity activities命令也是这个,进去代码也看不懂,看不到相关字符串,搜索一下搜到了相关信息转为java代码。

public class ֏ {
    /* renamed from: ؠ */
    public static void m0(Activity activity) {
        Builder builder = new Builder(activity);
        builder.setTitle("提示");
        builder.setMessage("定位这个弹窗并去除哦");
        builder.setPositiveButton("前往论坛", null);
        builder.setCancelable("false".equals("true"));
        builder.show();
    }

    /* renamed from: ހ */
    public static void m1(Activity activity) {
        Builder builder = new Builder(activity);
        builder.setTitle("提示");
        builder.setMessage("定位这个弹窗并去除哦");
        builder.setPositiveButton("前往论坛", new 1(activity, ""));
        builder.setCancelable("false".equals("true"));
        builder.show();
    }

    /* renamed from: ށ */
    public static void m2(Activity activity) {
        Builder builder = new Builder(activity);
        builder.setTitle("提示");
        builder.setMessage("定位这个弹窗并去除哦");
        builder.setPositiveButton("前往论坛", new 1(activity, "https://www.52pojie.cn/"));
        builder.setCancelable("false".equals("true"));
        builder.show();
    }

  4.可以看到里面有三个show方法,说明弹窗就在这里了,通过java代码可以看到是三个静态函数,不管调用哪个都必须通过类名实现,搜索一下这个类,定位到调用处,只有一处,那么把它注释掉看看,成功。

.method protected onCreate(Landroid/os/Bundle;)V
    .registers 9

    invoke-static/range {p0 .. p0}, Lnp/֏;->ށ(Landroid/app/Activity;)V

  5.还原apk,这次不改调用处,通过定位字符串的方法定位到这个类,直接把三个show注释掉看看。

   invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog;

   invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog;

   invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog;

  6.通过改函数内部和函数调用处都可以成功去掉弹窗。

https://s21.ax1x.com/2025/02/16/pEK4Jr6.png

0x3 参考文档

  1.《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡

免费评分

参与人数 12吾爱币 +17 热心值 +10 收起 理由
HaHaWa + 1 + 1 我很赞同!
Tori97 + 1 谢谢@Thanks!
linqiu431 + 1 热心回复!
soenluzy + 1 + 1 学习下
503514256 + 1 + 1 热心回复!
xiaoze1993 + 1 + 1 谢谢@Thanks!
FJFJ + 1 + 1 我很赞同!
moko + 1 加油加油
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
GuizhenYesou + 1 + 1 谢谢@Thanks!
奋斗的路程 + 1 + 1 热心回复!
lj0822 + 1 + 1 我很赞同!

查看全部评分

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

iSleepAllDay 发表于 2025-2-19 19:47
太棒了,读完了很有收获,先留个脚印在这里,日后再来模仿操作一遍,此外想问问这些对tb这些购物软件的弹窗有效不
sktao 发表于 2025-2-18 21:43
这个是大多数软件还是全部算法
要能破解大多数弹窗也就能满足我的需要了
hgxnxxgw 发表于 2025-2-18 22:59
qiuyu2019 发表于 2025-2-19 00:20
学习学习,感谢分享!
9yueying 发表于 2025-2-19 08:14
打卡学习
AUei 发表于 2025-2-19 08:40
学习学习,感谢分享!
94e8v061 发表于 2025-2-19 08:47
打卡学习,感谢分享。
Knm 发表于 2025-2-19 08:50
学习了   我赶紧试一下先
lduml 发表于 2025-2-19 08:51
打卡学习
younger4862 发表于 2025-2-19 09:06
利害,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-22 05:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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