那些年的大戰

----- 包被刪除了,其實沒用了。

蜻蜓FM涉嫌詐騙投資人和廣告主源代碼剖析


http://p2.qhimg.com/t013a220124c3a7fda9.png

本文主要內容,引用自知乎的這篇文章:如何評價蜻蜓 FM 僞造用戶活躍度等數據

感謝“左莫”、“任正”等熱心正義的網友--左莫,任正的最早的回答猜測已經被蜻蜓FM通過創新工場關係讓知乎刪除了,而且此貼已經鎖定,蜻蜓FM還在不停贊下面無關緊要的垃圾評論。希望大家一起站出來抵制這種造假和疑似詐騙的行爲。

蜻蜓FM是一款音頻app,最近我反編譯了他的源代碼,主要原因是最近有篇文章:

http://p0.qhimg.com/t01f14f86edd72320d2.jpg

不過蜻蜓FM大量的刪帖很多已經死鏈了,太無恥!還活着的鏈接:

蜻蜓造假黑科技新聞

充滿着好奇,黑科技是怎樣做到的呢??

蜻蜓FM是如何提高DAU,欺騙友盟,talkingdata


摘要

看了蜻蜓FM的源代碼,先總結一下它整個的工作原理:

  1. 後臺偷偷啓動進程,開到讓用戶電量飛奔的最大限度,使得神蜻蜓FM在後臺永活,作爲android的我終於頓悟:爲嘛老子的電量老是會這麼快用完。

  2. 永活的蜻蜓FM,會定時地執行“普羅米修斯神邏輯”,就是狂刷每日活躍用戶數,祕密就是:打開用戶看不到的透明界面,即使是用戶在閉屏狀態,這個神界面也會打開。

  3. “普羅米修斯神邏輯”執行時會給我們公正的第三方數據公司,發“用戶打開了蜻蜓FM應用”這條通知,結果,第三方數據統計裏,日活又加一個。

  4. 蜻蜓FM接着將他的日活數據給到投資人,看看俺的1000萬DAU,比QQ音樂還牛逼,砸個幾億吧。

  5. 悲催的投資人,掏出了大筆的鈔票給蜻蜓FM。

作爲一個Android程序員,實在是看不慣這種行爲,順便提醒第三方數據公司和投資人,防止一些像蜻蜓FM這樣無恥的創業公司欺騙大家。

具體步驟

具體聽我細細道來:

首先來看一下我們打開蜻蜓App之後,它在後臺跑的進程的數量: 

http://p2.qhimg.com/t014d136d985c319d69.jpg

5個進程,你沒有看錯是5個進程!!!而且這幾個進程相互守護,無法徹底殺死,十雙筷子喲,牢牢抱成團。到目前爲止,從來沒見過一款應用會起這麼多進程。爲了知道他爲什麼要啓動這麼多進程,我們懷着好奇的心,反編譯了蜻蜓的app。結果發現了一些很奇怪的事情。

第一件事就是,他們的App代碼居然沒有混淆,開發人員真省事,閱讀代碼如同閱讀源碼。在我們閱讀源碼的時候,我們發現了今天的主角,關鍵進程:NotificationService 

http://p5.qhimg.com/t01a484fc723003fde5.jpg


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方法。

http://p7.qhimg.com/t01c9dfa2d01a9d76a0.jpg

而restartThread方法中會啓動一個叫MessageThread的線程

http://p6.qhimg.com/t01d036f61132857349.jpg

第二步: 我們看看神奇的MessageThread做了一些什麼事

http://p2.qhimg.com/t0182bf006ade05b217.jpg

我們發現一個叫"執行普羅米修斯"execPrometheus的方法,智慧之神,看名字就覺得牛逼的一腿!我們再來看看他的實現,它最後調用了一個神奇的方法doPrometheus,當然中間有一些條件判斷,比如多長時間“普羅米修斯”一下,例如:

http://p2.qhimg.com/t01a684d60908fe02fa.jpg

最後我們來看看這個“普羅米修斯”的最後實現方法: 啓動了一個ShieldActivity,當我們閱讀ShieldActivity的源碼驚奇的發現,這個activity居然什麼事都沒做,是個無界面的activity,類似透明窗口,並且2s之後銷燬結束自己。

看ShieldActivity類源代碼

http://p4.qhimg.com/t017407816e3a8de067.jpg

那這個打開的activity什麼要做這個事呢?讓你觸目驚心,高DAU和啓動次數的神話誕生了:

http://p6.qhimg.com/t011803e781a1ab5f33.jpg

爲了僞造DAU,欺騙umeng,talkingdata,艾瑞等知名第三方數據公司,增加虛擬活躍用戶,他們智慧到了神的地步。自啓動無窗口的透明activity界面調第三方數據公司的API。 爲了證實這點,我還專門寫了一個demo,在後臺啓動一個透明界面,發現umeng確實會把它算爲活躍用戶。今天我才發現,原來App還能這樣提高自己的活躍用戶,投資人的錢是這麼好騙,這招確實高明,實在無言以對。

對源代碼感興趣的:

看普羅米修斯實現源代碼

蜻蜓FM是如何提高廣告展示量和點擊量欺騙秒針,DoubleClick


摘要

繼續閱讀蜻蜓FM的源代碼,會看到宙斯類,真有點扛不住,蜻蜓FM你太逆天了,你要創造整個世界啊!不多說了,直接上菜。 既發現蜻蜓牛逼的提升日活普羅米修斯Prometheus—智慧之神後,我們發現蜻蜓又一個牛逼閃閃的服務Zeus(宙斯,牛逼的上帝,無所不能)。蜻蜓你能讓我的小心臟平定一會兒嗎,又是上演好萊塢大片的節奏。

宙斯是蜻蜓FM用來欺騙廣告主和第三方廣告數據監測公司(秒針,admaster,doubleclick等)的系統:

  1. 在用戶的手機上會頻頻打開非常耗內存和電量的組件,webview—瀏覽器,將它設置到最小化,用戶肉眼看不到。

  2. 在看不到的webview—瀏覽器裏,蜻蜓FM偷偷的打開了廣告主廣告圖片

  3. 蜻蜓FM偷偷的用戶程序點擊了這個廣告圖片

  4. 將打開和點擊的事件發給了第三方廣告數據監測公司

  5. 廣告主掏腰包的時候,根據第三方數據,廣告的展示量,點擊數量被刷的好的離譜,連連稱讚蜻蜓FM數據一級棒,點擊率,轉化率高,1千萬花的值,下次我還找你合作哦,QQ音樂的合約免談了

  6. 蜻蜓FM老闆,銷售,產品,技術,投資人拿到1千萬後,笑的合不攏嘴,發獎金吧,還等什麼呢,這錢不就跟撿到的一樣麼?不知道你們這樣詐騙合作方,是否睡得心安理得呢?

不揭露實在不行了,我們來看看裏面到底幹了什麼?

步驟

看zeus類源代碼

http://p8.qhimg.com/t01cb4926df91bf0e7f.jpg

Zeus類裏面主要新建了一個WebView(瀏覽器)對象,好像這並沒有什麼問題,但是你仔細觀察發現,這個神奇的Zeus類,它並沒有把webview對象添加到任何可見化界面上,比如常見的Activity/Fragment等。 那它爲什麼要在後臺內存中放一個webview呢?要知道android的webview本身實現的並不好,存在大量的bug,開發過android的程序員大概都知道這點。這東西,耗電,耗內存。 繼續分析,我發現兩個關鍵函數setZeusUrl()和startZeus(),兩個函數的實現如下:

http://p0.qhimg.com/t01916f5ded2db817b9.jpg

http://p4.qhimg.com/t01c5c3bc248f07fd04.jpg

看到這個我都驚呆了,原來偉大的宙斯是用來在後臺偷偷的打開網頁鏈接的。打開的網頁鏈接用戶還是看不到的。

那他爲什麼要這麼做呢,對蜻蜓FM又有什麼好處呢?

http://p0.qhimg.com/t01330880dd4e65a9d4.jpg

蜻蜓FM用一個看不見的瀏覽器打開廣告主的網站,接着用程序模擬用戶行爲點擊。廣告的展示率和點擊率,頓時提高了一個數量級,原來廣告商的錢也這麼好騙! 看到這裏,我真是佩服蜻蜓FM的老闆,銷售,產品,程序員,你們確實很聰明,我怎麼就沒想到呢?聰明的人賺錢真的很容易,違法麼,不知道,我們改天都投遞簡歷到蜻蜓吧,漲姿勢。

悲催的DoubleClick等廣告數據監測公司都被這位親密的夥伴矇在鼓裏,要阻止這樣的流氓公司,廣告主紛紛站起來說臣妾做不到啊,臣妾不給你上了! DoubleClick是美國一家網絡廣告服務商,主要從事網絡廣告管理軟件開發與廣告服務,對網絡廣告活動進行集中策劃、執行、監控和追蹤。

http://p0.qhimg.com/t01a41e824839783362.jpg

隨時宙斯源碼閱讀的進一步深入,我越來越不敢相信自己的眼睛,我們再來看看他們給第三方廣告公司(比如秒針、AdMaster之類)發送數據的類ThirdTracker,同樣有驚人的發現。 ThirdTracker裏面有給各大第三方廣告公司發送數據的代碼邏輯,如下:

http://p2.qhimg.com/t01f088b99ee1778edd.jpg

從上圖一看,各大第三方廣告數據公司齊聚宙斯系統,我們和騙神蜻蜓FM一起創造世界吧。

我們再來看看這些廣告是怎麼被蜻蜓FM觸發啓動的:

http://p1.qhimg.com/t01efa4f6d1c1f01d87.jpg

這個方法的調用者爲RootNode類的onClockTime方法(鬧鐘 吐槽:這位開發兄弟,你能不能不起這麼直白的名字,你老闆的內褲都被你暴露了),但從這個方法的名字來看,就感覺這個類有問題,是不是每間隔一段時間,後臺偷偷給廣告商發送數據呢?

http://p8.qhimg.com/t01afa3267efac61828.jpg

onClockTime調用者爲ClockManager的dispatchClockEvent方法,如下:

http://p0.qhimg.com/t01850adc64c2e03e0a.jpg

那dispatchClockEvent方法又是誰調用的呢?大家捂好小心臟,見證奇蹟的時刻到了,宙斯也是永活的:

http://p3.qhimg.com/t01967b42275003f2b7.jpg

宙斯真是名副其實,從富有的廣告主那裏拿到了錢,做成了完美的盈利模式。報表給投資人一看,完美!蜻蜓FM你就是明天的BAT啊!你是宙斯,你創造了中國互聯網未來的“神話”,廣告主和投資人就任你欺騙,任你玩,你要把中國移動互聯網做成什麼樣的模式!

蜻蜓線上最新版apk v5.0.1反編譯源碼教程

apk不會造假的,google簽名的,造假得破解google簽名

第一步

首先我們直接用一個解壓apk(開發過android應該知道apk其實就是個壓縮文件),解壓之後拷貝出裏面classes.dex文件待用。

第二步

*下載dex2jar工具,最新版下載鏈接dex2jar下載

*解壓之後,打開cmd,進入解壓目錄,運行命令:

d2j-dex2jar.bat classes.dex(上一步解壓的) jarpath(反編譯dex後的文件目錄)

example:

d2j-dex2jar.bat c:\user\qting\classes.dex c:\user\qting\ 

*反編譯之後,會得到一個classes-dex2jar.jar文件,待用。

第三步

*下載JD-GUI(反編譯jar神器),最新版下載鏈接JD-GUI下載
*解壓之後,雙擊打開,直接把上一步得到的的classes-dex2jar.jar文件直接拖入JD-GUI裏面,你就可以隨意查看蜻蜓的源碼了。


常見問題

1. 蜻蜓FM這麼刷廣告,爲什麼監測不到?

蜻蜓FM通過自啓動的方式增加了UV,先刷了DAU,使得DAU幾乎就是裝機量。廣告也是一樣。UV增加,PV/UV比並沒有顯示異常。而且他增加了很多隨機參數,並控制好比率,所有的一切高明之處就是想模仿真人的行爲。

2. 進程多,自啓動的傷害性

所有自啓動首先都是耍流氓。不過android自啓動確實是很正常的事情,很多時候用得好都是爲了服務於用戶體驗。其實這個並不怎麼耗電,只有打開webview的操作纔是耗電的。

Summary

蜻蜓FM的Android程序員難道你們的節操都碎了麼??沒有節操的你們確實很文藝--普羅米修斯,宙斯,還有阿波羅,你們是神一樣的團隊! 史上最牛逼造假App蜻蜓FM神一般的數據造假手段,讓投資人和廣告主欲哭無淚,讓中國整個互聯網都漲姿勢了。


from: http://bobao.360.cn/learning/detail/2257.html


發佈了42 篇原創文章 · 獲贊 44 · 訪問量 85萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章