移动开发者的小噩梦Google广告沦陷--android反编译实战

来源:互联网 发布:javascript调用数据库 编辑:程序博客网 时间:2024/06/06 02:46

前言

    好多同学都在问Android反编译是不是特别高大上,我只能说在好多年前,打包党赚钱是很暴力...可惜出生的有点晚没赶上。    下面让我们来实际来说一下android反编译的实例吧    这次牺牲品是Google的AdMob广告平台,为何我会用它来讲解呢,TMD因为我一玩游戏弹出来广告给我弄死了,一看就是这个比昂的广告平台的广告,再一个原因是Google为何在我大天朝给开发者那么少的收入。    最终实现:无论开发者做任何事情,这个款游戏的Google广告只为你所有    Google的AdMob大家应该都不陌生吧,算了我还是介绍一下吧,让不知道的同学们也了解一下。

    ......当你从某个应用市场上下载了一个看起来不错的游戏安装到你亲爱的手机上,当你打开游戏进入到游戏中,duang的一下,游戏下方或者上面有一个横幅广告,玩耍到最激情的时候,我了个曹,被一个大插屏广告弄死了,发现在左下角有个被圆圈,圈起来的小叹号点击一下,卧槽~出现Google一条信息那这个横幅广告百分之八九十那就是Google的AdMob了。    什么?具体什么样,让我上图?--! 我就呵呵了,发灰内的桑想,这个世界更精彩。    不废话了,开始进入正题!

正题

    下面把我们需要的东西都准备齐全,然后就开始讲解    1、一个AdMob的账号    这个需要首先注册一个google账号,然后www.google.cn/ads/admob/ 打开次网址,按照顺序注册即可,最后进入画面(可能有时会需要翻越长城)    2、需要一个内嵌AdMob广告的APK安装包    这个随便去一个应用市场上下载个免费游戏,差不多都能碰到,这个我就不分享来   xxx.apk    3、工具:ApkTool    ApkTool的用法我这里就不详细说明了,网上这个玩意点教程实在是太多太多了,等以后心情好了,我会在这里给补上具体操作方法的。    这里你需要稍微了解一下smali的基本语法会对你有很大的帮助    下面我们开始具体操作:    我用Mac环境操作的Windows大体一致    2、我先把需要反编译的APK放到桌面    ![这里写图片描述](http://img.blog.csdn.net/20150329234606376)    下面打开“终端” 在终端中输入以下命令`apktool d 路径 -o 路径` 回车    ![这里写图片描述](http://img.blog.csdn.net/20150329234705547)    这里已经反编译完成,xxx.apk 下面多了一个xxx的文件夹    我们打开此文件夹    ![这里写图片描述](http://img.blog.csdn.net/20150329234918444)    点击打开smali文件夹,依次点开的路径smali/com/google/ads这个路径只是其中一种,之前实验的时候还碰到过别的情况,smali/com/google/android/gms/ads总之~~只要找到以下两个文件就OK。    AdView.smali    InterstitialAd.smali    AdView是横幅广告    InterstitialAd是插屏广告    首先我来说一下怎么修改,用记事本先打开AdView文件,因为各种版本SDK导致里面格式有些相差很大,有些是用构造方法直接传递参数,还有一部分是通过set方法来设置参数,这里我就用其中一种set方式来演示一下,用构造方法的其实一样,找准参数,修改赋值就好。    首先我们先找到setAdUnitId这个方法    ![这里写图片描述](http://img.blog.csdn.net/20150330002112368)    看到这句话        .param p1, "adUnitId"    # Ljava/lang/String;    他告诉你,卧槽,adUniteId就是p1这个比昂的,好的继续往下看    此时你又看到来这句        invoke-virtual {v0, p1}, Lcom/google/android/gms/internal/bh;->setAdUnitId(Ljava/lang/String;)V        你想到了什么?没错,就是它了,我们在这句之前把p1赋上值,是不是就可以写死在sdk里面了。        好的,下面教大家一个smali的语法,学会此句天下我有            const-string p1, "aaaaa"        这句话的意思就是把后面的aaaaa字符串赋值给p1,那把aaaaa替换成横幅的ID是不是就可以了呢,是的!可以了,下面就替换上            const-string p1, "ca-app-pub-840517000506527/9838000092"        好的,任务完成        保存AdView现在不管开发者在代码中如何修改横幅的ID,现在它是属于你的了        剩下插屏的修改方法我就不一一演示了,大致相同同学们可以试着去修改一下

总结

        我们之前修改的原理是,直接修改AdMob的SDK,从而跳过开发者编写代码,这样无论开发者怎样修改,都不会改到SDK里面,只是导入SDK调用相关API。        闲来无聊制作一个傻瓜式修改广告神器,只需输入apk路径,AdMob的Id即可修改成功,修改成功率为百分之八十左右,因怕流传出来引发一阵腥风血雨,如想进一步交流请留言

声明

        此教程只是个人闲来无聊研究一下,仅供android开发人员,相互交流学习,禁止进行非法用途        转载请声明出处---来自heycoolmen
0 0
原创粉丝点击