安卓逆向——学习记录(2)

本文全部内容均来源于吾爱破解论坛——参考链接:『逆向资源区』 (52pojie.cn)

参考教程:《安卓逆向这档事》系列 0基础 新手入门 视频动画教程——b站有相应视频学习

该博客仅用于学习记录,帮助有相同问题的兄弟姐妹,不作盈利目的,如果涉及版权,立马删除。


基础知识

1.广告类型

启动广告     弹窗&更新广告   横幅广告

2.安卓四大组件

组件描述
Activity(活动)在应用中的一个Activity可以用来表示一个界面,意思可以理解为“活动”,即一个活动开始,代表 Activity组件启动,活动结束,代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动,Activity的生命周期交给系统统一管理。
Service(服务)Service它可以在后台执行长时间运行操作而没有用户界面的应用组件,不依赖任何用户界面,例如后台播放音乐,后台下载文件等。
Broadcast Receiver(广播接收器)一个用于接收广播信息,并做出对应处理的组件。比如我们常见的系统广播:通知时区改变、电量低、用户改变了语言选项等。
Content Provider(内容提供者)作为应用程序之间唯一的共享数据的途径,Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。Android内置的许多数据都是使用Content Provider形式,供开发者调用的(如视频,音频,图片,通讯录等)

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

修改方法:
1.修改加载时间
2.Acitivity切换定位,修改Intent的Activity类名

1.修改加载时间

使用MT管理器的左侧栏里的activity提取,捕捉到应用的弹窗广告类名

选择类名搜索dex文件,找到对应Java代码

将const-wide/16 v2, 0xbb8里的0xbb8改为0。

保存并编译,重新安装

2.activitiy的切换(不推荐)

第三个类的名称是没有广告的界面,这一步就是将第一个活动的类替换成无广告类去首先加载。

        <!---声明实现应用部分可视化界面的 Activity,必须使用 AndroidManifest 中的 <activity> 元素表示所有 Activity。系统不会识别和运行任何未进行声明的Activity。----->
        <activity  
            android:label="@string/app_name"  
            android:name="com.zj.wuaipojie.ui.MainActivity"  
            android:exported="true">  <!--当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动-->
            <!---指明这个activity可以以什么样的意图(intent)启动--->
            <intent-filter>  
                <!--表示activity作为一个什么动作启动,android.intent.action.MAIN表示作为主activity启动--->
                <action  
                    android:name="android.intent.action.MAIN" />  
                <!--这是action元素的额外类别信息,android.intent.category.LAUNCHER表示这个activity为当前应用程序优先级最高的Activity-->
                <category  
                    android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>                 
 <!--表明这个类作为启动的界面-->
        </activity>  
        <activity  
            android:name="com.zj.wuaipojie.ui.ChallengeFirst" />
        <activity  
            android:name="com.zj.wuaipojie.ui.ChallengeFifth"  
            android:exported="true" />  
        <activity  
            android:name="com.zj.wuaipojie.ui.ChallengeFourth"  
            android:exported="true" />  
        <activity  
            android:name="com.zj.wuaipojie.ui.ChallengeThird"  
            android:exported="false" />  
        <activity  
            android:name="com.zj.wuaipojie.ui.ChallengeSecond"  
            android:exported="false" />  
        <activity  
            android:name="com.zj.wuaipojie.ui.AdActivity" />  

将android:name="com.zj.wuaipojie.ui.MainActivity"  改为android:name="com.zj.wuaipojie.ui.ChallengeThird"

3. activity更准确的切换

定位到具体的代码去修改

        switch (position) {  
            case 0:  
                Intent intent = new Intent();  
                intent.setClass(it.getContext(), ChallengeFirst.class);  
                it.getContext().startActivity(intent);  
                return;  
            case 1:  
                Intent intent2 = new Intent();  
                intent2.setClass(it.getContext(), ChallengeSecond.class);  
                it.getContext().startActivity(intent2);  
                return;  
            case 2:  
                Intent intent3 = new Intent();  //new一个Intent,
                intent3.setClass(it.getContext(), AdActivity.class);  //传入要切换的Acitivity的类名
                it.getContext().startActivity(intent3);  //启动对应的Activity
                return;  
            case 3:  
                Intent intent4 = new Intent();  
                intent4.setClass(it.getContext(), ChallengeFourth.class);  
                it.getContext().startActivity(intent4);  
                return; 
            default:  
                return;  
        }

将第三关的AdActivity切换成对应的类名,让其没有广告。

3.Activity生命周期

一般来说,弹窗的代码都写在onCreate()里。

4.弹窗定位&堆栈分析

修改方法:

1.修改xml中的versiocode(更新弹窗)——会自动检阅版本号是否更新

2.Hook弹窗(推荐算法助手开启弹窗定位)

  • 使用算法助手,选择弹窗定位(返回键可取消)
  • 使用屏蔽关键字弹窗,将关键字屏蔽掉

3.修改dex弹窗代码(学会如何定位弹窗在哪个代码里面)

从算法助手的日志找到调用的弹窗代码,在dex文件里去搜索这段代码(方法名)

把带有show方法的代码给删掉or注释掉

4.抓包修改响应体(也可以路由器拦截)

5.布局优化

取消横幅广告(开发助手)

1.开发者助手抓布局
2.MT管理器xml搜索定位
3.修改xml代码

复制这个View Id(Hex)

搜索资源ID

解决方法:

1.把高度和宽度改为0;

2.用这段代码把布局隐藏起来。(如果这个图片是在代码里动态加载的话你删掉会报错的,因为找不到要显示动态加载图片的布局了)

android:visibility="gone"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值