月光博客 » 互联网络 » 揪出Android手机下乱弹广告的流氓

揪出Android手机下乱弹广告的流氓

  前几天,我的android手机升级了几个软件,这两天手机突然莫名其妙的弹广告,并且根本不知道是哪个应用程序弹出来的。一般地弹广告也是运行某个app,就算是后台弹出,也有地方标志着是这个app弹的广告。而这次这个app也太狠了,自己想赚钱也就算了,还不让用户知道是谁。就想到一定得把它揪出来。 (之前以为是appchina应用汇,就卸载了,结果还弹……然后就是怀疑之前更新的豌豆荚,水果忍者……,不能老用排除法试了) 我能想到的解决方案就是看android运行的系统log日志了。

  一种方法是连接电脑,用adb调试工具查看log,另一种方法是直接在android手机看log日志记录:alogcat

  等手机再弹出广告时,打开alogcat,为了方便查找,清除下刚刚产生的log,然后去通知栏那里点点那个广告,再返回alogcat先暂停记录log,然后慢慢看。TMD,是一个叫com.halfbriakin.utils..之类的activity再放广告,然后关键字*fruitninjaseasons*,居然是水果忍者。

  再想水果忍者的开发者应该不会无耻到这个地步吧?用这样的方式弹广告。就想弄个究竟。查了下,我这个水果忍者是从豌豆荚下的,说的开发商是halfbriakin,而切水果这样的火,他应该不敢这么做吧,查了下,切水果的官网是halfbrick.com。得看看halfbrick跟halfbriakin的关系。是否halfbriakin山寨了了halfbrick,在其之上包装了一层。看样子好像是的,纯属个人猜测。

  继续探个究竟。看源代码,希望试图从中找出其与广告相关的代码跟halfbriakin的关系。从官网下载的com.halfbrick.fruitninjafree进行对比。

  android的apk文件反编译用到的工具:

  android代码反编译工具:dex2jar;java源代码查看工具:jd-gui;android资源文件查看工具,(那些xml文件,打包成apk时被编码过一次,直接看有乱码看不清楚) apktool或者AXMLPrinter2

  下面看看过程:

  1. 反编译得到源代码,直接将apk文件后缀改成rar,用winrar解压即可得到classes.dex,然后通过dex2jar工具就能得到java的源代码。

    apk反编译dex2jar

  2. 然后用jd-gui查看编译后的源代码。看样子好像确实是山寨的,不过可能因为二者版本不一致导致的?我想可能不大。下图左边为网上能下载到的开发商是halfbriakin发布的软件,在什么豌豆荚啊应用汇啊等等能下到,其介绍敢说哦什么Android官方无广告版本正式发布,只能说在放P了。下图右是我到google play下的,官网的免费版本。能看出来开发商是halfbriakin这个版本多了个上面那个包。

    fruitninjafree广告

  3. 怀疑类似一些请求广告的url写在资源xml文件中,因此得解码资源文件。android的xml资源文件解码有两种方法

  用AXMLPrinter2.如下图命令后,打开t.xml文件可以看到AdnroidManifest的内容。

android反编译资源xml文件

 

  用apktool,如图。直接打开各个目录下的xml文件即可看到

android资源文件反编译apktool

   

  结果找了下,好像什么请求广告的url之类没写在string.xml等文件里面。还是看源代码吧。

  查了下,’山寨’版本(暂且这么叫吧)的切水果,除了官方版本的广告外(google ads,意大利的游戏广告企业beintoo,移动广告服务商admob和moblix),还有多余的那个包domob(国内的手机广告服务商多盟),找了下没有找到相关的绑定的ID(也不深究了)。感到奇怪的是,水果忍者发布出来的源码里面出现了好多这种废弃的代码,不知道是程序员懒还是怎么着。自我感觉发布的时候还是把废弃代码给删掉吧,能减轻体重呢。

切水果程序员废弃代码

  另外看“山寨”的源码也有这种废弃的代码:

水果忍着恶心代码恶心广告

  现在就不知道是到底是出自原来的程序员之手呢还是说山寨的过程中,copy了这些代码。

  不管怎么说,如果这个开发商halfbriakin是来自官网也好,不是也罢,这个广告也弹得太恶心了。

  来源:投稿,作者:中南大学软件学院08级学生:唐磊 ,作者blog

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 1
    源氏源氏   说道:
    简单,长按小房子键,第一个在运行的就是广告软件。
    裸奔的兔子 于 2012-6-25 10:16:27 回复
    高。。
    没看见 于 2012-6-25 13:06:28 回复
    我也是:)
    逸小飞 于 2012-6-25 22:18:07 回复
    我刚想回复说 ”没必要这么麻烦 长按home键 调出最近使用的程序就可以了“ 结果就发现有人说了!
    walfred 于 2012-6-26 9:47:00 回复
    这个方式是不行的,一般的广告商提供的程序都是作为后台Service执行的,而且是有一定的时长再发作的。你可以试试先运行一个带广告的程序,再运行一个正常程序,你会发现的这个问题的。
    支持(33反对(19回复
  1. 2
    安卓在线官方   说道:
    纳尼!各位被广告狠狠骚扰的亲~可以狠狠地看看这个了!
    支持(29反对(20回复
  1. 3
    麦田日记   说道:
    用MIUI v4版本的,直接在通知栏弹出的相应广告上长按就知道是哪个应用弹出的。
    支持(26反对(18回复
  1. 4
    楚-尘言   说道:
    我的手机也存在这个问题,现在我根本就找不到到底是什么软件弹出来的,像短信一样可以在信息栏里出现,求解答。
    支持(20反对(13回复
  1. 5
    yulinsoft   说道:
    那不是什么废弃代码,只是反编译失败的结果,用jad命令行工具反编译效果会好些。
    支持(25反对(18回复
  1. 6
    老树随风   说道:
    还有个问题,我自启动明明都去掉了,什么大众点评、安卓市场、百度地图还是会突然自己启动,什么程序让他们启动的呢,太莫名了
    tanglei 于 2012-6-29 15:44:10 回复
    后台有service在跑。
    支持(22反对(15回复
  1. 7
    MyPacific   说道:
    最受不了这些恶意app
    支持(23反对(16回复
  1. 8
    迷失在开心馆   说道:
    开放的安卓,不安全的安卓,慢慢变成360、企鹅、小米的厮杀战场,结果是既不开放也不安全
    支持(24反对(17回复
  1. 9
    吕吕爻   说道:
    金山手机卫士可以检测,360也copy了这个功能~
    支持(20反对(14回复
  1. 10
    一路向南K758   说道:
    以前刷过一个rom,结果过了几个月以后发现手机会莫名其妙自己下载软件并安装运行,特别是刚重启手机后。 奇怪:难道还有潜伏期?
    aa 于 2012-6-25 17:40:58 回复
    正常,我用刷机精灵新刷了个rom,华为n760,一开始很正常,再然后过几天,丫给我装有你短信(这个忘记确切名字了,记得差不多就这样。),我卸载了,以为是自己装了的,过几天又跑出来了,这次不能忍受,找了一下,是一个comandroidsettings.apk,在system/apk底下的,我删除了,担心没根除,装droidwall,不该联网的一律不给联,世界清静多了。
    支持(21反对(15回复
  1. 11
    金山手机卫士   说道:
    金山手机卫士的“通知栏广告检测功能”可以很容易帮你检测到这种广告是哪款软件弹出来的
    支持(21反对(16回复
  1. 12
    柒引力   说道:
    很烦人的。如何排查或防止呢?
    支持(19反对(14回复
  1. 13
    einherjar   说道:
    这个水果我也装了。每天弹广告。想来这几天也就装了那几个软件,一个个停止进程试,才发现是水果
    支持(18反对(13回复
  1. 14
    麦田日记   说道:
    用MIUI v4版本的,直接在通知栏弹出的相应广告上长按就知道是哪个应用弹出的。
    支持(27反对(23回复
  1. 15
    samool   说道:
    通知栏莫明出广告嘛,我也遇到了,可以用“广告侦探”这个软件扫描
    支持(18反对(14回复
  1. 16
    nodexy   说道:
    网易新闻客户端 的推送消息是这样的: 定时自动打开用户的网络,然后请求消息,然后一小段时间后关闭网络。 期间如果用户查看推送的新闻,则网络不关闭。!!!
    支持(17反对(13回复
  1. 17
    vaast   说道:
    也是遇到这个问题,果断卸载刚装的程序。一般是游戏
    支持(16反对(12回复
  1. 18
    65461   说道:
    Android手机觉得还可以啊,呵呵
    支持(18反对(14回复
  1. 19
    海边的自由   说道:
    限制不必要的程序运行。
    支持(17反对(14回复
  1. 20
    吕侯   说道:
    让你用豌豆夹。我只用谷歌市场,从来没有麻烦。
    zhh 于 2012-6-25 12:37:08 回复
    官方应用市场买应用是个痛
    支持(19反对(16回复
  1. 21
    沙隆巴斯   说道:
    一星期前也发现是切水果,但怎么也没想到平时玩的竟然是山寨
    支持(16反对(13回复
  1. 22
    ater0001   说道:
    google市场搜索免费应用notification history, 可以自动跟踪广告记录,谁发的广告一目了然, 还能直接就可以发广告的垃圾应用。
    支持(17反对(14回复
  1. 23
    aaa   说道:
    汗,你反编译的源码不是真实的还原,你说的废弃代码是反编译工具生成的。。。
    log4nettom 于 2012-6-25 11:07:51 回复
    我也是吐槽这个“废弃“代码的。
    Guest1 于 2012-6-25 21:41:06 回复
    是啊,吐槽无力。。。
    3721wan 于 2012-6-26 1:11:45 回复
    这个有很多工具,楼主搞复杂了
    tanglei 于 2012-6-26 19:50:33 回复
    各位,我是原作者,之前没想到过 里面的注释代码是 因为 反编译出错产生的,让大家见笑了。
    这本来就是一个交流过程,忘各位海涵。
    pc954 于 2012-7-23 18:16:13 回复
    wq600.net
    支持(23反对(21回复
  1. 24
    梦梦龙龙   说道:
    不少热门游戏都被第三方修改之后放出在应用市场上,我最近下的一个版本的神庙逃亡也是。
    支持(17反对(15回复
  1. 25
    KT000000   说道:
    用豌豆荚的智商确实比只用google play和amazon appstore的差好大一个档次啊。
    支持(26反对(24回复
  1. 26
    雷恒_Jules   说道:
    那个 log 的程序需要 root 么?
    支持(19反对(17回复
  1. 用碗豆夹下app, 一个字: 该!
    支持(22反对(20回复
  1. 28
    aaaa   说道:
    所谓的“废弃”代码是你的jd-gui生成的,并不是废弃,你可以用DJ Java Decompiler去看
    支持(19反对(17回复
  1. 29
    catbus   说道:
    前几天我也遇到了,在百度应用上下了个推送广告检测器查了下,发现一款手电筒软件,以及这个“推送广告检测器”本身,是弹出广告的元凶。
    支持(19反对(17回复
  1. 30
    JJack126   说道:
    机锋市场下了个逃出神庙就有弹出广告,巨烦,用360可以加以限制,但好像也不能根除
    支持(22反对(21回复
  1. 31
    独角大仙   说道:
    见到救星啦!!!!每次愤怒小鸟的时候上边就广告,都看不好路线!!!
    支持(15反对(14回复
  1. 32
    刘明勇本人   说道:
    以前也有过。后来删除某些软件就好了。
    支持(15反对(14回复
  1. 33
    双鸭山信息通   说道:
    本人现在也在用,但是一些其它的软件都不安装了,就是个电话工具罢了
    支持(20反对(19回复
  1. 34
    williamjay   说道:
    360各种水军留言啊。。擦亮眼睛!
    情商 于 2012-6-29 18:29:18 回复
    这些年360就靠这种营销方式弄到不少小白用户.
    支持(23反对(22回复
  1. 35
    sunny   说道:
    建议原博主唐磊开个交流群什么的!
    tanglei 于 2012-6-29 15:42:07 回复
    呃,什么交流群呢?
    支持(21反对(20回复
  1. 36
    ar锐   说道:
    之前经常遇到~····然后火大了把刚下载的软件都删掉
    支持(18反对(18回复
  1. 37
    余静平SoLoMo   说道:
    最近正深受其烦,太牛氓了。
    支持(19反对(19回复
  1. 38
    无敌山民   说道:
    在android手机在广告上长按,点应用程序信息就可看到是哪个程序弹广告了。免费软件也要吃饭,流氓软件也就多了,弹个广告算客气的!在手机没必要360等软件,只要安装在google play或软件官网的软件,一般安全可靠的!
    支持(16反对(16回复
  1. 39
    Jaycie_S   说道:
    刚刚卸载了豌豆荚2,立刻没事
    支持(21反对(21回复
  1. 40
    lqs   说道:
    自从有了360,世界清静了
    支持(20反对(20回复
  1. 41
    sunny   说道:
    建议原博主唐磊开个交流群什么!
    支持(20反对(20回复
  1. 42
    hqzhon   说道:
    提供一个简单的操作方式,手机连接电脑后使用以下命令,可以查看通知栏的详情
    adb shell dumpsys notification
    支持(6反对(6回复
  1. 43
    华源大药房-健一网   说道:
    遇到这情况最彻底的就是reboot
    支持(13反对(14回复
  1. 44
    Aquamarine   说道:
    那如此说来,还是该文的方法比较通用了?如果还有其他优秀的软件请介绍下。
    tanglei 于 2012-6-29 15:40:04 回复
    只是说了一种解决问题的思路,熟悉下各种工具的使用。呵呵,解决办法就是上官方市场下应用,慎重安装app。
    支持(19反对(20回复
  1. 45
    franklin   说道:
    楼上三个广告贴 -___-
    支持(18反对(19回复
  1. 46
    情商   说道:
    我之前也是这样,后来我发现是在豌豆夹的山寨软件弹的,后来果断删掉,再到google play去重新安装就再也没弹广告了.
    支持(18反对(19回复
  1. 47
    654   说道:
    狗日的360水军 死全家
    支持(20反对(21回复
  1. 48
    ADAM-阿蛋   说道:
    能用play store就用,屌丝豆荚那些源谁能保证冰河木马蠕虫呢
    支持(18反对(20回复
  1. 49
    walfred   说道:
    废弃代码是反编译工具产生的,大概是反编译工具不能反编译被混淆过的代码,另外代码注释掉之后是不会增加代码的体积,是不会参与编译的,无减轻体重一说
    支持(18反对(20回复
  1. 50
    boluo   说道:
    我发现可以用一些流量控制软件,封了这些弹广告的程序上网流量,世界就安静了
    支持(10反对(12回复
  1. 51
    happysoul   说道:
    唉 好吧 帮你扫盲下~ 所谓的注释掉的代码是你的反编译无法解析造成的 看注释你也应该知道啊~ 上面都写了 error了!
    支持(5反对(7回复
  1. 52
    阿越   说道:
    百度应用下载也是水果也是有广告的。
    支持(13反对(16回复
  1. 53
    Fany13   说道:
    miui v4 长按通知广告即可知道弹出该广告的app详细信息,并且可以直接进入卸载
    支持(17反对(20回复
  1. 54
    说怪   说道:
    哎,好经被坏和尚念歪了。
    支持(26反对(29回复
  1. 55
    Rainmore   说道:
    为什么不直接用google play呢?
    支持(16反对(19回复
  1. 56
    小小的石头   说道:
    你可获取root权限、然后禁止切水果的软件联网他不就不出广告了、
    支持(9反对(12回复
  1. 57
    Norman程   说道:
    流氓软件特别多,但手机上绝对不需要360
    支持(23反对(27回复
  1. 58
    主题曲之家   说道:
    最近也发现了这个问题,纠结中
    支持(16反对(20回复
  1. 59
    mylhei   说道:
    唉,android可以在广告上长按,点应用程序信息就可以看到是哪个程序弹广告了。
    支持(14反对(19回复
  1. 60
    咋都不可以呢   说道:
    这就是国内很多商店的赚钱之道,也是屏蔽google服务的目的
    支持(20反对(25回复
  1. 61
    runinwind   说道:
    乱弹广告,这个确实是android下面很讨厌的事,而且好象没有统一的地方去开关
    支持(19反对(24回复
  1. 62
    Aquamarine   说道:
    月光微博中曾提到用AirPush来查询广告来源,不知这个应用在这里是否适用呢,如果可以的话用它来找应该是最快捷的方式了吧。
    williamlong 于 2012-6-25 15:25:26 回复
    那个AirPush能查出来的也不多,比如在豌豆荚下载“小鳄鱼爱洗澡”就有弹出广告,但用AirPush查不出来。
    支持(11反对(16回复
  1. 63
    个人知识管理   说道:
    所有可反编译出源代码并能重新打包的软件,包括.net、java的客户端,都有可能被这样注入或代替程序,是一个非常大的安全问题。实际上,针对dll,也是可以替换的;只是前者更加容易。故C++的dll要搞得复杂些,.net 的客户端最好进行一次性打包成一个exe文件
    支持(17反对(23回复
  1. 64
    biglemo   说道:
    试过360,还是没有用,谁教我非技术小白去掉这些恶心的广告……
    支持(12反对(18回复
  1. 65
    royxxx   说道:
    一般的排除法可以搞定了,
    当广告已经弹出来的时候,就是下手的时候了,
    用进程管理软件,一个个杀,选择你认为可疑的杀,当杀对了,广告就消失了。
    比你的方法大动牛刀方便多了。杀鸡别用牛刀嘛
    支持(7反对(13回复
  1. 66
    BBsss   说道:
    我也深受其害,浪费了很多流量。后来装了360的广告拦截功能,好像没了,再后来重新恢复到官方系统。。
    支持(16反对(23回复
  1. 67
    woshimy   说道:
    电脑报上有个类似的文章,那个作者找出来了,是故意植入的广告
    支持(6反对(13回复
  1. 68
    林栽植   说道:
    android广告多的要死。。装个游戏老推送广告什么的最可恨了!
    支持(16反对(24回复
  1. 69
    IT技术大联盟   说道:
    新版本的360手机安全卫士可以直接禁掉弹出的广告,你可以试一下。
    支持(17反对(25回复
  1. 70
    niao   说道:
    除了这类流氓软件外,国外还有什么类似 保护隐私的软件,比如通讯录,通话记录,位置信息等
    支持(12反对(20回复
  1. 71
    X-Judgment   说道:
    按home键 就知道了 2
    支持(15反对(24回复
  1. 72
    修罗破   说道:
    miui 按住弹出的广告就能看到是哪个软件了
    支持(16反对(25回复
  1. 73
    undefined   说道:
    那一段什么注释实际不是注释。
    要想到编译过程会去掉注释。反编译失败部分会用注释标注。
    那只是JVM的指令码,类似汇编语言的那种。
    所以要是去掉之后,编译可能能通过,但是程序就会有问题的。
    支持(12反对(21回复
  1. 74
    爱发现爱探索   说道:
    这样开发者没得混了,本来就赚不到钱,适量广告就行
    支持(17反对(28回复
  1. 75
    金山手机卫士   说道:
    您好,您可以使用金山手机卫士的通知栏检测功能,扫描到通知栏广告的来源,然后可以考虑卸载或者其他操作。
    支持(17反对(31回复
  1. 76
    hidecloud   说道:
    您好,豌豆荚已经侦测到了这款山寨应用,并扫描出了其中的通知栏广告,给予用户很明显的提示。
    同时,如果您在豌豆荚搜索‘水果忍者’,默认推荐在前面的是无广告的官方版。有通知栏广告的那款已经有很明显的广告标记。
    tutuni 于 2012-6-29 8:32:28 回复
    真是后知后觉啊
    Java 于 2012-7-9 16:22:35 回复
    现在才知道后知后觉啊 之前为什么不严把质量关?非要靠曝光
    支持(19反对(36回复

发表留言