Android逆向技巧——去除开屏广告

  相信不少网友都有相似的经历:很多app刚开始用的时候很清爽,没啥广告;等用了一段时间后厂家就开始大量上广告的了,我个人觉得这是典型的利用大数据杀熟:厂家看到用户的月活、日活都挺高的,说明用户对自己的app已经产生依赖,此时可以开始“杀猪吃肉”了!开屏广告是我最讨厌的一种:点开app就被逼着看,而且非会员一般要5秒后才能跳过,不想被逼着看广告的就花钱充会员;怎么才能不花钱去掉app的开屏广告了?

  先简单回顾一下windows下PE文件的执行原理:PE文件的文件头有个字段叫AddressOfEntryPoint,会标记程序代码的入口。用户双击exe后,windows操作系统会解析这个字段,找到标记的程序入口,然后跳转到这里去执行代码;为了避开程序自身的CRC检测,很多外挂都选择了入口点注入这种方式,原因很简单:入口点这里程序自己的代码都还没开始执行了,这时的exe就像一只待宰羔羊,任凭外挂干任何事都无法反抗!同理:android也有类似的入口点,用户双击app后,android也会跳转到app标记的入口点去执行,那么这个入口点(注意:严格讲这应该是入口界面,和入口点不是一个概念)在哪了?----- AndroidMainfest.xml文件有两个标签页,如下:

<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>

  凡是看到这两个标签一起出现的就是app的入口activity了,用户点开app肯定会从这里指定的入口开始执行。这里以某云笔记为例,其原始入口如下:

<activity android:launchMode="singleTop" android:name="com.xxxx.note.activity2.SplashActivity" android:screenOrientation="portrait" android:theme="@style/FullScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

  所以这里实锤:开屏广告就是从这里开始看的!所以现在的需求就编变成了绕过这个广告Activity,直接到我们期望的Activity!这又该怎么操作了?这里先找到我们期望的activity,如下:我期望打开app就能直接开到笔记的列表,而不是开屏广告,所以这里可以先在打开期望的界面,然后用“adb shell dumpsys activity top”查看这个页面的activity:

  我期望的activity是“activity2.MainActivity”,所以在android killer打开这个apl,在AndroidMainfest.xml中找到这个activity,

<activity android:configChanges="keyboardHidden|orientation" android:exported="true" android:launchMode="singleTop" android:name="com.xxxx.note.activity2.MainActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden"/>

  接下来的工作就好走了,先找到LAUNCHER的activity,把上面那两个标签剪切,复制到我们期望的activity下面即可,如下:

<activity android:configChanges="keyboardHidden|orientation" android:exported="true" android:launchMode="singleTop" android:name="com.xxxx.note.activity2.MainActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden">
        <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

然后重新用android killer编译打包,再安装新的apk即可!

总结:这里本质是通过配置文件,改变app的入口activity!

以上就是Android逆向技巧——去除开屏广告的详细内容,更多关于Android去除开屏广告的资料请关注我们其它相关文章!

时间: 2021-04-17

Android逆向之dex2oat的实现解析

目录 简介 dex2oat介绍 为什么要使用dex2oat进行转换 dex2oat代码 1.dex2oat类定义 2.OpenDexFiles函数定义 3.dex2oat入口函数定义 总结 简介 在Android系统5.0及以上系统开始逐渐丢弃Dalvik虚拟机,由于ART虚拟机对内存分配和回收都做了算法优化,降低了内存碎片化程度,回收时间也得以缩短,所有android系统5.0及以上都在主推ART虚拟机.在ART虚拟机中ART则会将Dex通过dex2oat工具编译得到一个ELF文件,它是一个可

非常详细的android so库逆向调试教程

目录 前言 应用环境准备 创建默认的native application 修改stringFromJNI方法,便于调试 修改androidManifest文件 修改CMakeLists.txt 编译运行,获取so hook环境准备 使用ida pro进行hook adb与手机的准备 ida pro的工作准备 使用ida pro进行调试 进行调试 结束 前言 好久没有写博客了,最近的精力全放在逆向上面.目前也只是略懂皮毛. android java层的逆向比较简单,主要就是脱壳 .反编译源码,通过

Android 逆向学习详解及实例

断断续续的总算的把android开发和逆向的这两本书看完了,虽然没有java,和android开发的基础,但总体感觉起来还是比较能接收的,毕竟都是触类旁通的.当然要深入的话还需要对这门语言的细节特性和奇技淫巧进行挖掘. 这里推荐2本书,个人觉得对android开发入门和android逆向入门比较好的教材: <google android 开发入门与实战> <android 软件安全与逆向分析> 1. 我对android逆向的认识 因为之前有一些windows逆向的基础,在看andr

详解dex优化对Arouter查找路径的影响

目录 一.前言 1.1 APK的编译和打包流程 1.2 dex文件的应用场景 二.dex到vdex.odex 2.1 ART预优化 2.2 ART的运行方式 2.3 vdex.odex的作用 2.4 vdex.odex与classes.dex关系 三.Arouter是什么 四.踩坑 4.1 现象 4.2 解决方案 五.总结 一.前言 疑问:dex文件是什么?dex文件优化又是什么? dex文件优化会给项目带来什么问题,怎么解决这些问题? 1.1 APK的编译和打包流程 1.通过aapt打包资源文

详解oracle中通过触发器记录每个语句影响总行数

详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响.有测试人员反应,原来抽过的数,偶尔就无缘无故的找不到了,有时又会出来重复行.这个问题产生肯定是抽数逻辑问题以及并行的问题了!但他们提了一个简单的需求:想知道什么时候数据被删除了,什么时候插入了,我需要监控"表的每一次变更"! 技术选择: 第一就想到触发器,这样能在不涉及业务系统的代码情况

详解Linux命令与文件查找

一.执行文件名查找 which(查找'执行文件')  //根据PATH环境变量所规范的路径查询 which [-a] command         //其中参数-a是指列出找到所有命令,而非只显示找到的第一个 例如:which ifconfig 二.文件名的查找 1.whereis(寻找特定文件) whereis [-bmsu] filename/directoryname -b :只找二进制的文件 -m :只找在说明文件manual路径下的文件 -s :只找source源文件 -u :查找不

详解Linux中两个查找命令locate和find教程

Linux中有很多查找命令,今天主要讲解locate,find两个命令. 1.locate locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库. (

详解angular中通过$location获取路径(参数)的写法

我最近在研究angular中通过$location获取路径(参数)的写法,在网上搜索了很多的资料,正好今天有时间,就整理一下! 以下获取与修改的 URL 以  ( http://172.16.0.88:8100/#/homePage?id=10&a=100  ) 为例 [一]获取 (不修改URL) //获取当前完整的url路径 var absurl = $locationabsUrl(); //http://88:8100/#/homePage?id=10&a=100 // 获取当前url

详解Vue.js中引入图片路径的几种方式

vue --version 3.6.3 记录总结一下的Vue中引入图片路径的几种书写方式 vue中静态资源的引入机制 Vue.js关于静态资源的官方文档 静态资源可以通过两种方式进行处理: 在 JavaScript 被导入或在 template/CSS 中通过相对路径(以 . 开头)被引用.这类引用会被 webpack 处理. 诸如 <img src="..."> . background: url(...) 和 CSS @import 的资源 例如, url(./imag

详解在Python中以绝对路径或者相对路径导入文件的方法

1.在Python中以相对路径或者绝对路径来导入文件或者模块的方法 今天在调试代码的时候,程序一直提示没有该模块,一直很纳闷,因为我导入文件一直是用绝对路径进行导入的.按道理来讲是不会出现模块找不到的情况的. 最后仔细分析了整个代码的目录结构,才发现了问题. 下面依次来说明一下今天的情况 先看导入的代码: 在demo--mnist.py文件中执行以下两种导入操作 # 第一处 from gcforest.gcforest import GCForest from gcforest.utils.co

详解基于iview-ui的导航栏路径(面包屑)配置

起因 上家公司的后台管理系统都是刷表刷出来的,所用很久很久没写后台管理系统了.换了工作后总算要开始捣腾router了,很久没用都快忘光了,所以把一些通用的模块记录一下,也分享给需要的朋友们. 经过 //router.js let routes = [ { path: '/', redirect: '/admin', }, { path: '/login', name: 'login', meta: {title: '登录'}, component: () => import('./compone

java 二分法详解几种实现方法

java 二分法详解几种方法 二分查找(java实现) 二分查找 算法思想:又叫折半查找,要求待查找的序列有序.每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程.直到查找到了为止,否则序列中没有待查的关键字. 实现: 1.非递归代码 public static int biSearch(int []array,int a){ int lo=0; int hi=array.length

Webpack path与publicPath的区别详解

前言 在webpack模块化开发的过程中,发现webpack.config.js配置文件的输出路径总有一个path与publicPath,不解其意. module.exports = { output: { path: path.resolve("./examples/dist"), filename: "app.js", publicPath: "What should I put here?" } } 正文 官方解释 publicPath:

正则表达式的优化全面详解( 三江小渡)

就像之前写的mysql全面优化详解一样,就是因为这样工具应用十分广泛,所以对这样的工具全面的进行优化策略总结是非常划算的,因为无论你是PHP.Perl.Python.C++.C#.Java等等语言的程序员,你都是有非常大可能用上Mysql.正则表达式这样的工具的. 先说一下你可能不知道的一点关于正则表达式的知识,这对我们将来的优化是有用的. 大家常见的grep(global regular expression print)算是现在的正则的起源吧(从神经学家提出正则概念到数学家建立模型到被IBM