安卓逆向学习笔记(四)去广告弹窗 📅 2026/8/19 11:49:04 一、课程目标1.了解安卓四大组件、Activity生命周期2.弹窗定位、去更新3.广告分析与布局优化二、工具1.教程Demo(更新)2.MT管理器/NP管理器3.算法助手4.雷电模拟器5.开发助手三、课程内容1.广告类型启动广告 弹窗更新广告 横幅广告2.安卓四大组件组件描述Activity(活动)在应用中的一个Activity可以用来表示一个界面意思可以理解为“活动”即一个活动开始代表 Activity组件启动活动结束代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动Activity的生命周期交给系统统一管理。Service(服务)Service它可以在后台执行长时间运行操作而没有用户界面的应用组件不依赖任何用户界面例如后台播放音乐后台下载文件等。Broadcast Receiver(广播接收器)一个用于接收广播信息并做出对应处理的组件。比如我们常见的系统广播通知时区改变、电量低、用户改变了语言选项等。Content Provider(内容提供者)作为应用程序之间唯一的共享数据的途径Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。Android内置的许多数据都是使用Content Provider形式供开发者调用的如视频音频图片通讯录等1.activity的切换!---声明实现应用部分可视化界面的 Activity必须使用 AndroidManifest 中的 activity 元素表示所有 Activity。系统不会识别和运行任何未进行声明的Activity。-----activityandroid:labelstring/app_nameandroid:namecom.zj.wuaipojie.ui.MainActivityandroid:exportedtrue!--当前Activity是否可以被另一个Application的组件启动true允许被启动false不允许被启动--!---指明这个activity可以以什么样的意图(intent)启动---intent-filter!--表示activity作为一个什么动作启动android.intent.action.MAIN表示作为主activity启动---actionandroid:nameandroid.intent.action.MAIN/!--这是action元素的额外类别信息android.intent.category.LAUNCHER表示这个activity为当前应用程序优先级最高的Activity--categoryandroid:nameandroid.intent.category.LAUNCHER//intent-filter/activityactivityandroid:namecom.zj.wuaipojie.ui.ChallengeFirst/activityandroid:namecom.zj.wuaipojie.ui.ChallengeFifthandroid:exportedtrue/activityandroid:namecom.zj.wuaipojie.ui.ChallengeFourthandroid:exportedtrue/activityandroid:namecom.zj.wuaipojie.ui.ChallengeThirdandroid:exportedfalse/activityandroid:namecom.zj.wuaipojie.ui.ChallengeSecondandroid:exportedfalse/activityandroid:namecom.zj.wuaipojie.ui.AdActivity/启动广告流程启动Activity-广告Activity-主页Activity修改方法1.修改加载时间打开第三关有一个3秒的广告三秒后会跳转打开mt管理器的activity记录启动服务下次广告打开时会有记录回到mt管理器复制类名在dex文件中搜索打开此处选择np管理器的转为java分析代码广告会加载3000ms3000对应的16进制数字是0xbb8直接搜索定位改为0效果去除了刚刚的3秒广告相当于广告执行了0msmt管理器的activity记录依旧能够抓到2.Acitivity切换定位修改Intent的Activity类名1修改xml文件之前使用mt管理器的activity记录时可以发现mainactivity主界面在ad前加载所以打开xml文件把主界面直接改为第三关的类名效果同上2修改dex将类名对应的smali代码负复制搜索代码选择下方使用的代码块上方是原本的实现我们需要修改调用的地方将广告对应的代码改为ChallengeThird改完后效果同上这是np转java的代码代码分析switch(position){case0:IntentintentnewIntent();intent.setClass(it.getContext(),ChallengeFirst.class);it.getContext().startActivity(intent);return;case1:Intentintent2newIntent();intent2.setClass(it.getContext(),ChallengeSecond.class);it.getContext().startActivity(intent2);return;case2:Intentintent3newIntent();//new一个Intentintent3.setClass(it.getContext(),AdActivity.class);//传入要切换的Acitivity的类名it.getContext().startActivity(intent3);//启动对应的Activityreturn;case3:Intentintent4newIntent();intent4.setClass(it.getContext(),ChallengeFourth.class);it.getContext().startActivity(intent4);return;default:return;}3.Activity生命周期函数名称描述onCreate()一个Activity启动后第一个被调用的函数常用来在此方法中进行Activity的一些初始化操作。例如创建View绑定数据注册监听加载参数等。onStart()当Activity显示在屏幕上时此方法被调用但此时还无法进行与用户的交互操作。onResume()这个方法在onStart()之后调用也就是在Activity准备好与用户进行交互的时候调用此时的Activity一定位于Activity栈顶处于运行状态。onPause()这个方法是在系统准备去启动或者恢复另外一个Activity的时候调用通常在这个方法中执行一些释放资源的方法以及保存一些关键数据。onStop()这个方法是在Activity完全不可见的时候调用的。onDestroy()这个方法在Activity销毁之前调用之后Activity的状态为销毁状态。onRestart()当Activity从停止stop状态恢进入start状态时调用状态。4.弹窗定位堆栈分析修改方法1.修改xml中的versiocode去除更新弹窗可以尝试修改versioncode为22.Hook弹窗(推荐算法助手开启弹窗定位)在去掉以上弹窗后还有一号和二号弹窗一号可以简单的返回去掉但是二号劫持了返回键无法返回关闭此时需要安装以下工具安装算法助手prohttps://www.jb51.net/softs/1014024.html点击激活启用后右下角启动打开右边的总开关并进入下拉找到弹窗定位先关闭需要去除广告的app再右上角启动此时我们就可以使用返回去掉二号广告了如果使用算法助手的关键词屏蔽可以自动关闭一号和二号广告3.修改dex弹窗代码一号二号弹窗可以修改dex去掉去到算法助手右上角日志找到想要去掉的广告定位oncreate方法复制下来搜索到选择最后一个在这个方法中就实现了弹窗搜索show使用#注释对应代码4.抓包修改响应体(也可以路由器拦截)5.布局优化1.开发者助手抓布局2.MT管理器xml搜索定位3.修改xml代码复制代码 隐藏代码 android:visibilitygone方法1之前使用的开发者助手有时无法定位图片去掉横幅广告可以用开发助手需要的功能如下点击后给到对应权限即可查看横幅广告定位广告图片复制idxml搜索资源id16进制定位图片把宽和高改为0dp效果方法2添加一行代码作用是隐藏图片见上文四、课后小作业定位并去除作业demo首页中的弹窗https://wwl.lanzoub.com/iVKJk0f0pi7g主要参考https://www.52pojie.cn/thread-1706691-1-1.html