重学安卓逆向:获得广告&弹窗静默卡
2024-1-23 00:0:0 Author: www.giantbranch.cn(查看原文) 阅读量:0 收藏

安卓应用程序的基本组成部分由四大组件构成,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供器)。这些组件共同协作,实现了安卓应用的各种功能。以下是对这四大组件的详细解释:

  1. Activity(活动):

    • 定义: Activity是安卓应用中用户与应用进行交互的界面单元。每个Activity都代表了应用中的一个屏幕界面,用户可以在不同的Activity之间进行切换。
    • 生命周期: Activity具有生命周期,包括创建(onCreate)、启动(onStart)、恢复(onResume)、暂停(onPause)、停止(onStop)、销毁(onDestroy)等阶段。这些生命周期方法允许开发者管理Activity的状态和响应用户交互。
  2. Service(服务):

    • 定义: Service是在后台执行操作而没有用户界面的组件。Service通常用于执行长时间运行的任务,如下载文件、播放音乐等,而不受Activity的影响。
    • 生命周期: Service同样具有生命周期,包括创建(onCreate)、启动(onStartCommand)、停止(onStop)等。Service通常通过startService()或bindService()方法启动,并在完成任务后调用stopService()或unbindService()停止。
  3. BroadcastReceiver(广播接收器):

    • 定义: BroadcastReceiver是一种用于接收系统或其他应用发送的广播消息的组件。广播可以是系统事件、应用间通信或应用内部事件的通知。
    • 注册方式: BroadcastReceiver可以在清单文件中声明,也可以通过代码动态注册。当广播事件匹配注册的条件时,系统会调用BroadcastReceiver的onReceive()方法。
    • 用途: 广播接收器可以用于响应一些系统级别的事件,例如设备启动、网络状态变化、电池低电量等,也可以用于应用之间的通信。
  4. ContentProvider(内容提供器):

    • 定义: ContentProvider用于管理应用程序的数据,提供数据的访问接口。它允许应用程序共享数据给其他应用,也可以访问其他应用程序的数据。
    • URI: ContentProvider通过URI(Uniform Resource Identifier)标识数据,客户端通过ContentResolver访问ContentProvider提供的数据。ContentProvider的常见实现是在数据库上提供数据访问接口。
    • 用途: ContentProvider常用于存储和共享数据,例如联系人信息、媒体文件、数据库等。

这四大组件共同构建了安卓应用的架构,使得应用能够灵活、高效地处理用户交互、后台任务、数据管理以及与其他应用的通信。理解和熟练使用这些组件是安卓应用开发的基础。

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

广告类型:

  1. 启动广告
  2. 弹窗&更新广告
  3. 横幅广告

启动广告流程:
启动Activity->广告Activity->主页Activity

修改方法:
1.修改加载时间(修改为0)
2.Acitivity切换定位,修改Intent的Activity类名(直接跳到主页Activity)

定位Activity修改加载时间步骤,:

  1. 打开MT管理器的Activity记录
  2. 之后打开目标APP
  3. 即可记录到可疑的广告Activity,回到MT管理器的Activity记录即可复制Activity的类名
  4. 之后通过MT管理器打开apk的dex,搜索Activity的类名
  5. 点进去,可以查看代码逻辑,看到广告的时间
  6. 将广告的时间修改为0x0

修改Acitivity的跳转

  1. 再上面搜的基础上,在搜索Activity的类名的结果,长按赋值 com/XX/那一串,因为这个再smail中是这样表示的
  2. 将这个作为关键字搜索代码(当然要排除AD Activity)
  3. 看看逻辑,一般将AD Activity的替换为目标即可
    例子:将Lcom/zj/wuaipojie/ui/AdActivity替换为Lcom/zj/wuaipojie/ui/ChallengeThird

修改方法:
1.修改AndroidManifest.xml中的android:versionCode,去掉更新广告
2.Hook弹窗(推荐算法助手开启弹窗定位)
3.修改dex弹窗代码(通过算法助手的log找到调用栈,之后MT管理器搜索方法名,将show方法注释)
4.抓包修改响应体(也可以路由器拦截)

算法助手

  1. 通过弹窗定位
  2. 屏蔽关键字弹窗

开发助手(不是开发者助手)

1.开发者助手抓布局(点击放大镜按钮,选择横幅,复制资源id0xXXXXXXXX
2.MT管理器xml搜索,选择资源id,反编译,文件内搜索资源id
3.修改xml代码(宽度和高度改为 0)

1
android:visibility="gone"
  1. 开发者助手抓布局(点击放大镜按钮,选择横幅,复制资源id0xXXXXXXXX
  2. MT管理器xml搜索,选择资源id,反编译,文件内搜索资源id
  3. 复制图片的src id
  4. MT管理器打开resource.arsc,普通的Arsc编辑器,ID定位资源,

假如你看不到评论,可能是你访问Disqus被墙了,请使用代理访问


文章来源: https://www.giantbranch.cn/2024/01/23/%E9%87%8D%E5%AD%A6%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91%EF%BC%9A%E8%8E%B7%E5%BE%97%E5%B9%BF%E5%91%8A&%E5%BC%B9%E7%AA%97%E9%9D%99%E9%BB%98%E5%8D%A1/
如有侵权请联系:admin#unsafe.sh