apk去登录广告简单分析:

 

工具:

Android killer 1.3

DDMS  (版本未知)

      夜神模拟器

   

在游戏登录和注册页面,我们可以看到登录界面中被别人插播了广告,本文的目的就是将其去掉。

 

 

思路分析:

1.如果该广告是读取资源中的图片加载到对话框(或者其他控件)的话,我们只需要替换一张新的图片进去,重新打包签名即可。

2.如果不是加载的本地资源,那么就是从网络传输过来的一个图片,然后加载

 

过程:

拖到android killer进行反编译:

 

在资源文件中一番查找过后,在res/drawable-hdpi-v4 文件夹中查看到跟log一样的图片

  

尝试第一种方法,新建一个空白的图片在资源管理器里进行替换:

 

使用android killer重打包:

 

apk拖到模拟器进行安装,接着运行:(注意:安装apk前需要卸载原有的apk,如不卸载原有的apk,该包名已存在,不能覆盖安装)

 

Log还存在,说明这个log应该是通过网络传输进行动态替换的,既然是动态替换,那么首先要确定的是该图片是加载在什么控件上面的,这样才能够准确的找到加载的图片的函数;

 

这个时候,我们就可以借助DDMS中的 Dump View Hierarchy for UI Automator(以下简称Dump UI) 功能去得到布局的属性,如下图: 在虚拟机打开改程序的登录界面,使用ddms点击dumpUI 获取到布局属性(如下图),得到图片是设置在imageView上面的,并且资源idiv_logo ,

 

接着到android killer 进行搜索,搜索到两处引用了该id的地方:

  

双击到关键代码处,使用jd-jui查看源码:

 

查看源码关键代码分析出handleMessage函数大概功能为:

    由外部传消息进来,进行判断并执行:

        消息1:设置本地资源文件中的图片为背景(drawable/ct

        消息0:获取一个网络的图片

        消息(其他):设置paramAnonymousMessage.obj为背景

 

大概加载的过程就是,先获取网络图片,然后getInternetPicture函数再发送(其他)消息(case没有定义2,所以2为其他消息)到handleMessage函数设置背景

 

getInternetPicture函数:

发送网络请求,获取图片资源;

通过发送消息的方法设置控件背景(广告图片)

 

查看另一点关键点,其中代码跟与上面基本一致,可判断为注册页面的加载代码,这里不再做重复性的解释。

 

getInternetPicture函数:

 

 

分析至此,我们已经大概明白了广告图片的一个加载流程了,接下来把广告去掉

思路:修改smali代码将getInternetPicture和函数直接RET,获取不到网络图片,这样加载的就是我们本地的“ct”图片为背景了

 

LoginView处添加smali代码:

      

RegisterView处添加RET代码

  

使用android killer重打包:

 

拖到模拟器中运行确认结果:

登录界面:

 

注册界面:

 

Ok,测试成功,广告成功被干掉了!!

笔者还有点想说的是:在中间使用Dumu UI工具查看到布局信息的时候,其实我们还可以在布局XML文件中修改该控件的大小,以达到隐藏的作用,不过那样子后面的控件位置就会发生问题,如果没有这个方面的要求,修改XML文件更加神速

 

 

 

 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





猜你喜欢

转载自www.cnblogs.com/ddms/p/9034720.html