转自知乎—如何评价蜻蜓 FM 伪造用户活跃度等数据?
转自知乎—如何评价蜻蜓 FM 伪造用户活跃度等数据?
本文链接:
http://www.zhihu.com/question/37248269?from=singlemessage&isappinstalled=0
左莫
汪天一、知乎用户、知乎用户 等人赞同
扒开一看,真的惊呆啦,蜻蜓fm造假能力,神级啊啊啊啊啊,我我我...要挺住,这手段,是把人玩残、玩死的节奏呵
先总结一下:
1、只要你手机装了蜻蜓,它就会在后台偷偷启动进程,让你手机电量狂泻,供养“神蜻蜓”在后台永活,android小弟我终于顿悟:为嘛老子的电量老辣么快玩完。
2、永活的“神蜻蜓”,为它的造假程序起了一个亮瞎眼的名字“普罗米修斯”,这神程序会自动刷每日活跃用户数,玩残第三方统计监测。关键秘密:打开用户看不到的透明界面,即使是用户在闭屏状态,照样能打开并向我们公正的第三方数据公司,发“用户打开了蜻蜓FM应用”这条通知,结果,在第三方数据统计里,日活又加一个。
3、蜻蜓FM接着将他的日活数据秀给投资人,看看俺的1000万DAU,比QQ音乐还牛逼,来来来,用钱砸我吧
4、悲催的投资人,掏出了大笔的钞票给一个神级的诈骗犯。
Android小弟我,真是惊呆了,蜻蜓fm都啥人呵,搞出这个普罗米修斯大神诈骗程序?
扒皮细节如下:
打开蜻蜓App,我发现它在后台跑的进程的数量异常多:
https://pic1.zhimg.com/c22f283d43fa1ba192030b97883744b0_b.png[/IMG]
5个进程,你没有看错就是这么多!!!而且这几个进程相互守护,无法彻底全杀死,就好比十双筷子,牢牢抱成团。到目前为止,从来没见过一款应用会起这么多进程。为了知道他为什么要启动这么多进程,我反编译了蜻蜓的app,由于蜻蜓的代码居然没有混淆(程序员都忙着造“神”去了),结果我很快就见到了“神”。
关键进程:NotificationService
https://pic4.zhimg.com/40731596fbd94c85369ddb631943ebc3_b.png[/IMG]
manifest.xml里面注册为:
<service android:name=".NotificationService" android:process=":notification">
<intent-filter>
<action android:name="fm.qingting.qtradio.NotificationService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
当然他也是个小强进程,无法彻底杀死!
通过反编译发现:
第一步:
NotificationService 会在onCreate方法里面调用MessageManager类的restartThread方法。
https://pic1.zhimg.com/3dde5e8b801b304cb6f9aa27567b1e90_b.png[/IMG]
而restartThread方法中会启动一个叫MessageThread的线程
https://pic3.zhimg.com/a301263ebf6b74568af237a90cae8336_b.png[/IMG]
第二步:
看看神奇的MessageThread做了一些什么事
https://pic3.zhimg.com/f39e0fa5da38dea2ccf7daa1d43bd21e_b.png[/IMG]
注意:发现一个叫"执行普罗米修斯"execPrometheus的方法,普罗米修斯,智慧之神,看名字就觉得牛逼!再来看看他的实现,它最后调用了一个神奇的方法doPrometheus,当然中间有一些条件判断,比如多长时间“普罗米修斯”一下,例如:
https://pic3.zhimg.com/d296f9bc9cdf2919da0a5ad5d35b4a3a_b.png[/IMG]
最后咱来看看这个“普罗米修斯”的最后实现方法:
https://pic4.zhimg.com/03070562d8201f37c38a2aa63b7338bf_b.png[/IMG]
启动了一个ShieldActivity,当我阅读ShieldActivity的源码惊奇的发现,这个activity居然什么事都没做,是个无界面的activity,类似透明窗口,并且2s之后销毁结束自己。
那这个打开的activity什么要做这个事呢?让人触目惊心,高DAU(就是投资人追着数钱的日活)和启动次数的神话诞生了:
https://pic3.zhimg.com/eec01fcac115e166b42b974876ea0c96_b.png[/IMG]
为了伪造DAU,欺骗umeng,talkingdata,艾瑞等知名第三方数据公司,增加虚拟活跃用户,蜻蜓真是智慧到了神的地步。自启动无窗口的透明activity界面调第三方数据公司的API。
为了彻底搞明白功用,我还写了一个demo,在后台启动一个透明界面,发现umeng确实会把它算为活跃用户。惊才绝艳呵,原来蜻蜓fm是这样造出来的活跃用户,这真是玩残投资人的绝招呐!
感兴趣的小盆友,自己下载蜻蜓FM的apk反编译代码看看吧。
代码链接:
https://github.com/cryfish2015/QingTingCheat?from=singlemessage&isappinstalled=0