如下文章來源於公衆號「程序員求職之路」android
O泡時間到!程序員
短短5個字開啓了今年大學生集體「社會性死亡」的篇章。面試
一款披着「半次元」logo、打開便自動播放O泡果奶魔性廣告、調用手機最大音量且沒法關閉的APP在一個月前迅速點燃全網。安全
一時間各大院校的課堂「充滿了快活的空氣」。app
所謂外行看熱鬧,內行看門道。函數
讓大學生焦頭爛額的粉紅色軟件在程序員眼裏又是什麼水準呢?oop
通常貨色!不過如此!ui
事實上,以專業的眼光看,製做這樣一個惡搞軟件實在不難。lua
開發過Android的程序員知道,這其實並無太多技術含量可言,根據上述的三言兩語相信你也能復刻一個出來:spa
1. 建立一個頁面,可是空空如也沒有任何內容。
2. 設置代碼讓程序在極短期內重複將音量調至最大。要多短?至少是你按不過它的程度吧。
3. 取消返回操做。
4. 隱藏虛擬按鍵,再次阻斷你返回主界面的路徑。
5. 最後添加上最惡毒的部分,循環播放O泡果奶的廣告。
若是你對此饒有興致並手擼了一份代碼,如今咱們就把原軟件反編譯後的參考答案拿出來供你比較。
-- main.lua -- require("import") import("android.app.*") import("android.os.*") import("android.widget.*") import("android.view.*") import("android.view.View") import("android.content.Context") import("android.media.MediaPlayer") import("android.media.AudioManager") -- 音量控制模塊 import("com.androlua.Ticker") -- Ticker:定時觸發器 activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI) --音量調大 activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE) m = MediaPlayer() --播放器 m.reset() m.setDataSource(activity.getLuaDir() .. "/mc.mp3") -- 引用包裏的「O泡果奶」 m.prepare() m.start() m.setLooping(true) ti = Ticker() --計時器計時觸發 ti.Period = 10 -- 間隔爲10ms function ti.onTick() -- 設置ticker要觸發的函數 activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI) -- 和上面如出一轍 activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE) -- 隱藏navbar等 end ti.start() -- 開啓ticker,每10ms執行一次上面的函數 function onKeyDown(A0_0, A1_1) -- 監聽按鍵,不調用外部方法的話就至關於劫持下來了 if string.find(tostring(A1_1), "KEYCODE_BACK") ~= nil then -- 若是按鍵是返回鍵 activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI) -- 設置音量爲最大 end -- 至關於把返回鍵變成了音量最大鍵 return true end
做者多是出於避開安全掃描的考慮採用了Lua腳本而很是規的Java編寫程序。
在合計34行的代碼中,除去開頭一堆import,關鍵內容在20行左右。
仔細查看內容也能發現其並無網傳的如洪水猛獸般恐怖,真的就是一個惡搞軟件。
隨着時間推移,這件事到今天也是逐漸淡出人們的視野……
可是!
當你把注意力往更早的地方移時,你會看到一個遠比軟件恐怖的現象:
歷史給網民的教訓就是人們從未在歷史中吸收過任何教訓。
事實上在去年的9月27日,一款叫作「送給最好的TA」的軟件已經用一樣的手法上演過一模一樣的把戲,甚至在今天對比兩款軟件的代碼都沒有太大差異。
那一次的影響更爲惡劣,但人們仍是在同一個地方跌倒了。
最後引用專業人士的建議做爲結尾,但願此次,在對付流氓軟件上能夠多個心。
1. 不安裝來路不明的軟件,即便是熟人發來的。
2. 不要root!不要對沒有絕對把握的事情盲目自信。常在河邊走哪有不溼鞋,確實是話糙理不糙。
3. 剋制住本身無處安放的好奇心。
更多內容也請關注
程序員求職之路
一個爲程序員量身定作的求職公衆號
給你貼心有效的大廠面試真題
面試乾貨、職業發展乾貨、簡歷模版