转自知乎—如何评价蜻蜓 FM 伪造用户活跃度等数据?

vain

转自知乎—如何评价蜻蜓 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