2011-09-19

OLG_OP - 網遊維運工程師

網路遊戲的流行算算到現在也有十多年了,網遊玩家們在組隊打怪推王撿寶時若是遇到lag、斷線、當機、回溯、修不好時很多人的第一個反應是工程師又出包了,也有人說是工程師在機房吃泡麵的時候不小心踢到線了。但是很少玩家真正知道遊戲公司的工程師平常都在幹些什麼?這就以過去幾年所看到的情況來大致描述一下遊戲維運工程師的工作。

在稍具規模網路遊戲公司維運工程部門中通常會有 系統 / 網管 / 資安 /資料庫 工程師 來負責維持服務的正常運作,下面就總稱為 維運工程師 ( Operation Engineer / OP ) 。網遊維運工程師跟開發單位的遊戲程式設計師所扮演的角色不同,遊戲程式設計師主要是負責開發遊戲,遊戲程式寫好以後交給營運單位(代理商)進行維運,一般遊戲內出現Bug漏洞大多數屬於程式開發端的問題,營運單位的工程師們基本上是沒有修復的權限與能力,而維運工程師一般來說也只能針對遊戲營運的後端網路/系統/主機架構進行最佳化;加上每款網遊的系統及網路架構都不同,維運單位只能配合開發單位開出的需求來建構,所以維運工程師負責的工作多又雜,往往幹起事情來還綁手綁腳的。網遊維運工程師的宿命就是遊戲穩定運行時也會有一堆雜事,一但命不好遊戲出了意外狀況就會被操到翻掉,而且維運工程部門屬於花錢單位又不能直接創造獲利,在公司角度的屬於無法開源只能盡量節流的單位。
接下來就以網遊代理商的角度為例來看看一款網路遊戲從開始到結束的過程中,維運工程師們都在幹些什麼:

一、前期評估:
代理前:通常網遊公司決定是否要代理/營運某款遊戲時都是先看遊戲的賣相,前期開發單位提供可供評估的技術資料一般都很少(屬商業機密),開發商也不會在談判階段就把遊戲先天限制跟缺陷告知代理商(甚至原廠自己都不知道),往往給的一些數值(像是一組伺服器可以同時容納多少玩家)都是理論值。維運工程師只能從少得可憐的資料中初步評估需要用到怎樣等級的硬體,要達到公司訂定的目標(同時多少人上線)需要多少台主機,大概會耗用多少頻寬,來試算出一個大概的成本供高層進行決策。
確定代理後:維運工程單位與開發商進行進一步的技術轉移合作,要到此時才能取得比較詳細的技術規格好規劃後端要達到營運目標實際所需的設備及架構。接下來維運工程師就要開始列出清單向硬體廠商採購(或租賃)伺服器、網路設備等,等機器到貨後到機房進行上架佈線工作。順帶一提的是大部分的網遊公司都是將主機代管於網路業者的IDC機房中,只有少數財大氣粗的業者才會自建機房,因為在IDC機房內環境又冷又吵不適合長時間作業,所以維運工程師在把伺服器上架作業系統搞定網路配置好以後就回公司辦公室了,日常管理操作一般都是遠端連線維護;而且稍具規模的IDC機房出入管制非常嚴格,所以基本上不會有在機房吃泡麵踢到電線的情況(但是因為IDC機房機櫃配的電源排插老舊接觸不良導致稍微大力關個機櫃門就會讓機器跳電的情況是真的有發生過)。

二、測試階段:
公司內部測試:此時一般會先有一到兩組的內測伺服器架設完成,同時跟遊戲改版(中文化)一起進行,企劃單位向開發商提出修改需求,開發商修改好後把程式交給維運工程師放到伺服器上運行,接著企劃單位再上去驗收測試,接著針對測試結果提出修改報告給開發商,開發商再修改再傳回來,如此的過程週而復始經過多次之後才會喬出一個大致堪用的版本。此階段維運工程師就是不斷地與原廠交換內部測試時發現的技術問題,同時之前下單採購的伺服器差不多這時也到貨了,工程師們便要到機房開始進行體力勞動(伺服器開箱、設定、組裝、上機櫃機架、佈線整線)。
封閉測試階段:待公司內部測試到大致堪用之後,就會配合行銷宣傳活動對外發放限量帳號開始封閉測試,此時通常也會有一到兩組的封測伺服器對外開放並告知參與封測的玩家在測試結束後會將資料清空,為了要在封測時能取得更廣泛的測試結果一般會要求原廠先將遊戲難度調低好讓參與測試的玩家能在短時間內快速升級。這時候維運工程師就必需隨時盯著封測伺服器的狀況,盡可能的在早期挖掘出各種潛藏的系統問題來要求原廠在正式上線前進行修正;同時也會刻意將主機數量或相關系統設定參數縮減來進行壓力測試以取得伺服器最高承載的實際數值。EX:假設原廠宣稱一組伺服器可以承載3000個玩家同時上線,根據經驗通常在封測階段實測下來能到原廠理論值的八成就該偷笑了,一般來說大概到了八成(2400)就會開始lag,而撐上九成(2700)就嚴重降低遊戲品質,這時候維運工程單位就有了一個日後擴充加開伺服器的評估資料標準,通常在理想情況的允許範圍以不發生lag的數值作為安全上限。同時在封測期間維運工程師也會需要規劃建立起一套維運狀態即時監控的系統來隨時掌握主機及網路的運作狀態,以便在發生異常時能夠即時找出問題點盡快排除,若有餘力的話維運工程師也會進行網路/系統的最佳化調整。此時工程部門也要依據測試得到的經驗來整理出一份緊急狀況處裡的SOP(標準作業程序)以因應日後可能發生的各種突發狀況,包含異常狀況查找排除、災難回復及資料備份復原等等的作業守則。一般來說在封測時因為事務繁雜又有上線時間壓力所以這階段對於維運工程師來說是最操的。
公開測試階段:當決策單位評估封測時的修正達到可接受的穩定狀態後,便會將封測資料清空開始進行公開測試。基本上現在遊戲營運商的公開測試就等同正式上線完全開放用戶進入了,維運工程單位就要配合PM行銷宣傳計畫及實際進入的玩家數量來逐步加開伺服器,當然這時所需的機器大部分都是事先就準備好了,要是一個不小心爆紅超出預期的話還得緊急追加伺服器,那又是一陣兵荒馬亂了。另外因為公測後就不刪檔了,所以維運工程師們只能祈禱遊戲中的嚴重bug都在封測時修完了(實際上當然是不可能的),也要隨時監看運作狀態,並彙整出營運資料及遊戲數值分析供PM作為後續行銷決策的評估參考。

三、營運階段:
當一款網路遊戲進入營運階段就代表後端運作相對穩定,此時維運工程師主要工作就是持續監控運作狀態,異常狀況緊急排除,全天24小時待命,配合原廠進行修正及改版,每次改版前的測試及準備,新版客戶端程式發布,例行停機維護,資料備份及回復,客訴查詢...等等。
其中最讓維運工程師頭痛的就是突發異常狀況的處裡,因為網路遊戲都是全年無休不間斷運行的,所以得24小時待命以備不時之需,而且隨時都有可能發生意外,凌晨當機或是硬體壞掉三更半夜衝去機房處裡都還是小事;要是突然爆出洗錢洗裝備之類的bug,由於營運端只能蒐集證據資料反饋給開發原廠進行修改,若影響層面大到嚴重破壞整體遊戲平衡時,甚至可能需要立即停機避免災難擴大並評估是否需要將資料回溯,當然回溯是殺傷力最大也是公司跟玩家都最不願意見到的,所以最可能的結果就是苦命的工程師要在成千上萬筆的遊戲資料庫跟遊戲歷程log紀錄中找出有問題的帳號進行個別處裡,若是此時原廠在後續支援上不夠積極的話就真的是個惡夢了。
除此之外還有像是盜帳號,遊戲寶物失竊的客訴處理,過去原廠在初期開發時通常不太會考慮到這方面的需求,此時維運工程師往往就得自己搞出一套遊戲歷程log查詢跟資料分析的系統來應付那些層出不窮的客訴問題,在協助處裡客訴的過程中常常是花了大把時間交叉比對物品交易紀錄與對話紀錄後發現被謊報或者只是朋友之間共用帳號沒喬好帳號,在不然就是被異常IP登入盜用,要是查到最後是這類有案可考的結果其實都還好,就怕是在幾千萬筆遊戲歷程中都查不出異常時往往就代表遊戲中可能隱藏了某個嚴重的漏洞,那就是惡夢的開始了。
至於平時例行停機跟改版時工程師都在幹些什麼,又是另一個故事了。

四、衰退階段:
網路遊戲的生命週期一般的情況都是在剛上線過陣子被炒熱後玩家人數最多,接下來隨著競爭出現、改版進度過慢或是系統出過大包等原因造成玩家數量會逐漸減少,此時在營運成本考量下就會開始被要求進行一些節流工作;像是縮減分流或是合併伺服器都是常見手段,這就牽涉到遊戲後端架構的問題,若只是縮減分流一般就還好,改改設定撤掉伺服器就搞定;比較麻煩的是伺服器合併,因為開發商在開發遊戲時通常不會考慮到這個部份,這就需要營運單位提出進行合併計畫後拜託原廠在不破壞既有資料結構跟遊戲平衡的前提下生出相關工具來作資料整合處裡,這在技術面就需要維運工程單位跟原廠不斷溝通協調,而且往往合併之後出現意外異常狀況的機率不低,然後工程師們就又陷入了 發現bug->回報->修正->測試->上線->發現新bug 的惡夢循環中。

五、打完收工:
當遊戲上線人數少到不足以支撐支出或是與原廠合約結束決定不續約時就會有關閉遊戲伺服器的情況發生,這時維運工程師就等決策單位下決定後安排時間去機房把伺服器撤掉,撤下來的機器設備就看其他遊戲是否用的上或是當作備援機待命。一般來說都會依成本考量將硬體資源運用最佳化,也就是把好一點的新機器給熱門遊戲用,較次等的機器就交給步入衰退階段的老遊戲使用,所以有時會發現進到沒什麼人玩的遊戲伺服器還會lag,那就有可能是用了其他遊戲退下來的老機器在扛。當然這個硬體資源重新調整的動作對維運工程師來說也是很累的,因為這樣喬來喬去對機櫃配置跟網路架構等的改動幅度不會小,而且通常只能搶時間抓停機的空隙來調整。

上面描述的只是一個大概,實際上還有不少沒提到的事情,像是在資安防護上與駭客的攻防更是刺激,不過那塊太黑暗了也不能說太多。而隨著這幾年網遊生命週期縮短及獲利萎縮的情況下,網遊公司都會精簡人力,這樣一來維運工程師都得身兼數職且幾乎沒有什麼喘息的機會,常常是這邊剛忙完封測那邊就要撤機器,這邊公測跑一半就接著得評估下款新遊戲,甚至是同時兩三款遊戲一起推出。要是一個運氣不好遊戲出了意外狀況,不管最終查出來是誰的錯,玩家們第一個問候的往往都是維運工程師的媽媽 ╮( ╯_╰ )╭ ... 。
所以基本上從事網遊維運工程師這份工作需要的是無止境的熱情配上大顆的心臟新鮮的肝跟堅強的意志,最後在這邊給仍堅守在此崗位上的網遊維運工程師們鼓勵一下,各位辛苦了!

2011-08-22

2011-08-21 COSCUP 2011 小記

這是 2011-08-20 & 21 兩天參加COSCUP大拜拜的個人簡單筆記,趁著還沒忘掉趕緊記下來。
(其實已經忘了很多 囧rz...,而且session分散在四個會議廳所以同一時間只能選一個聽,大會的合作媒體應該會有比較完整的報導)
這次會眾的討論主力幾乎都落在irc上面,SNS(Plurk/Twitter)上相對少了些,而影片是熱心朋友在YouTube上分享的。(晚點不知道會不會有主辦方放的正式現場錄影跟slides分享?)

2011-08-20
09:10 - 09:30 Opening / 開幕式
第一天我08:50到的時候只找的到最後一排的位置,正式開始時整個國際會議廳已經人滿為患了,後面站著一堆人非常熱鬧。這是我第一次到中央研究院人文社會科學館國際會議廳參加活動,場地很好,每個座位上都有電源跟網路插座,自己帶網線來用有線網路就很穩。
"參與COSCUP的主要目的,40%是聽演講,60%則是為了交朋友"

09:30 - 10:30 Keynote: in the DIY Classroom
介紹 Arduino http://www.arduino.cc/

很有意思的開源軟硬體平台

11:00 - 11:30 使用 Arduino 開放平台建置智慧型插座
介紹利用Arduino平台來製作智慧型插座,並且有可能發展為智慧電網就不用挨家挨戶抄電錶了。

11:30 - 12:00 羊逃成熟時-以Arduino開發的互動設計商品
利用Arduino製作的數位互動小玩具,講者說互動藝術賺不到錢 =_=

12:00 - 12:30 RepRap 3D Printer
介紹RepRap 3D印表機。
這東西跟CNC車床剛好相反,CNC是切削而RepRap是堆疊,可惜目前只能處裡塑膠部件,而且如果構型是下小上大的話會有支撐上的問題,講者舉了個例子是作人頭模型鼻子會變成鷹勾鼻,因為融化的塑膠在凝固之前會受重力影響下垂。

12:30 - 14:00 午餐
吃完便當後閒著蛋疼的走出中研院去找便利商店買飲料,結果在中午大太陽底下來回走了2KM >_<

14:00 - 15:00 Keynote: Intel - Multiplying Opportunities for your Apps
工商服務時間,介紹Intel的一些blah blah blah... 感謝鑽石級贊助賜我點心飲料午餐還有水壺一個。

15:30 - 16:00 MeeTo: Android meets MeeGo ( on NOOK Color )
"平板是所有geek的夢想" ,熱血的把Android跟MeeGo摻在一起作成撒尿牛丸 MeeTo

16:00 - 16:30 Wayland and EGL
介紹 Wayland http://wayland.freedesktop.org/ 這個有可能在顯示部份取代 X 的display server

16:30 - 17:00 開放電腦計畫
非常非常熱血的陳老師介紹他正在推廣的一個教育計畫。前言很長一度讓大家誤以為簡報只有一張或是遙控器壞了。
"第一次用vi的時候 進的去出不來"

17:00 - 17:30 Liquid Galaxy
介紹Google的Liquid Galaxy多螢幕合併顯示技術。
"在美國有一間G開頭的小公司工作"

17:30 - 18:00 Lightning Talk
印象最深刻的就是下面這位來自香港的講者講嵌入式開發的辛酸 XD

18:15 - 21:00 BoF, Birds of a Feather
旁聽了由gasolin主持的 Android App Inventor Show BoF 成果發表 http://showinventor.appspot.com/main/gallery
其中有位女孩(opop)做的 台灣夜市列表 有點意思,她說她沒寫過程式,用了App Inventor之後就可以把她的一些想法實現出來。

第一天的COSCUP下來有兩個感想:1.年輕的肉體肝真是好 2.很多小朋友的梗我都不懂了 -_-

2011-08-21
這天報到組的妹妹全穿上北么小綠綠制服了
09:30 - 10:30 Keynote: 0xlab 開放原始碼作為新事業:台灣本土經驗談
帥氣的 Jserv 介紹他的0xlab以及心路歷程...手上拿著Wii Remote作簡報遙控器。
這場講得很棒,如果能有錄影檔出現的話我肯定會再看一次。
"生命有限酒無限 酒量就是工作量"
"跟廠商自我介紹時我就開始敲終端機 git log | grep 0xlab,然後就介紹完了"

2011-09-08 update:


11:00 - 12:00 HTML5 and Friends: intelligence client side
Demo了不少HTML5的應用,包含講者用的HTML5簡報工具 DZSlides http://paulrouget.com/dzslides/
http://madebyevan.com/webgl-water/ 這個webgl效果很炫

12:00 - 12:30 Yahoo: 無名小站的行動應用服務 (Mobile service)與實作經驗分享
介紹無名正妹行動應用。

14:00 - 15:00 HTC Keynote: Open Source at HTC: Beyond Android
HTC工商服務時間,感謝鑽石級贊助賜我點心飲料午餐...現場問有HTC手機的舉手,舉手的人多到嚇到我了,感覺上有超過六成。之後的QA被打臉打很大 -_-"

15:30 - 16:00 PIXNET: Web Development on Cloud Platform
此時第一會議廳人滿為患晚到的只能卡到牆角......
介紹了PIXNET使用雲端的狀況,還有一億八千多萬張相片為了要作人臉偵測丟到AWS上去跑只花了台幣二十多萬。

16:00 - 16:30 New Stage ,New Game -- 浅谈 HTML5游戏 在 移动平台的应用
這位盛大創新院的講者展示了不少有意思的應用。
一開場用iPad倒水進電腦開的HTML5的頁面上就成功吸引大家注意了,還有很多HTML5在移動平台上的應用。很不錯的一場分享。
"對普通使用者來說遊戲只需要: 1.能玩 2.好玩"

16:30 - 17:00 Porting android to brand-new CPU architecture
因為從R1回到R0時已經講一半了,加上精神不濟。。。就。。。
"能不能作到最好還要問有沒有時間作到最好"
"老板說,你到底是幹還是不幹 ~~~~~~ 幹!"
"我們台灣人一向勤儉,IC裡面有個殘廢的GPU也是很正常的事情"

17:00 - 17:30 Android Open Accessory API and ADK
被irc上的討論吸引了所以沒專心聽 =_=" (Orz 懺悔中....)

17:30 - 18:00 Lightning Talk
有讓我留下印象的有三段
  1. 原來會場三樓攤位自由索取的Linuxpilot雜誌是香港出的
  2. 4free 建構全台灣免費無線網路徵求高手,不過我資質駑鈍聽不懂他到底要怎麼作。
  3. registrano被COSCUP報名打爆的報告
18:00 - 18:15 Closing / 閉幕式
這段有頒獎給COSCUP Mobile Device APP參賽者,最後工作人員上台,好多人啊~
主辦單位統計下來今年的COSCUP兩天不重複參與人數高達一千兩百多人。

後記:
COSCUP這兩天中午都在四樓陽台跟一位孫大哥一起聊天吃便當,最後閉幕時看到他上台才驚訝的發現原來他是有參加 COSCUP Mobile Device APP 比賽 iOS應用的參賽者 tomjpsun ,我真是有眼不識泰山啊~ =_=|||

最後感謝主辦單位工作人員的付出,我只當聽眾兩天下來都覺得累了,更別說那些忙裡忙外的工作人員跟上台分享的講者~辛苦你們了!

jeffhung 整理出來的 IRC LOG  https://gist.github.com/1160862 裡面有很多梗,有參加的朋友應該比較能看得懂。 ^^

2011-06-20

2011-06-20 Acer Liquid E 2.2.2 modified Official ROM

上一篇 中有提到我原本使用的是ACER 台灣的 Official 2.2 ROM Acer_LiquidE_4.003.18_AAP_FET,不過用了一陣子下來發現這版本的ROM吃電吃很兇,之後就開始轉向尋找其他版本的ROM回來測試,在逛了一圈 http://android.modaco.com/category/418/acer-liquid-liquid-modaco-com/ 之後發現,國外愛好者自製修改的第三方rom多多少少都有些硬體匹配上的問題,雖然後續一直有在修正,但是三天兩頭刷機打補釘也是很累人的一件事;加上國外出的rom都沒有包進中文輸入法,在原本內建的XT9中文輸入用習慣之後要轉換又多了一些麻煩,所以還是自己來進行客製化修改會比較符合個人需求。

在實際測試過後決定使用在ACER 義大利網站上能抓到最新的4.008.08.EMEA.VFIT 版本回來自己改,這個ROM是 Android 2.2.2 的,因為是ACER官方出的所以在硬體驅動相容性上不會有太大的問題,而且這個版本在電量消耗上也有所改善。
主要修改方向是加入XT9中文輸入,把 /system/app/ 裡面用不到的 apk拿掉,一些過期有新版的 apk 直接 update進去,然後把原廠的 kernel小幅修改為可調超頻/降電壓 跟包入tun後重做 boot.img。

原廠kernel的動態CPU頻率及電壓為4段
245,760 KHz:1,000 mV
384,000 KHz:1,075 mV
576,000 KHz:1,150 mV
768,000 KHz:1,250 mV

修改後的動態CPU頻率及電壓為7段(可用SetCpu進行調整)
245,760 KHz:900 mV
384,000 KHz:1,000 mV
576,000 KHz:1,050 mV
768,000 KHz:1,150 mV
806,400 KHz:1,200 mV
844,800 KHz:1,225 mV
883,200 KHz:1,250 mV

(我是以穩定運作為優先所以不想超頻太多,要再往上超勢必要加電壓,這會增加發熱量及電力消耗,而且系統也可能不穩定)

經過修改後待機耗電量明顯減少。
左邊是原本的 4.003.18_AAP_FET ,待機時平均一小時耗掉4%的電量;
而右邊則是修改後的4.008.08.EMEA.VFIT,待機平均一小時耗1%。

比較之下待機耗電量有非常大的改善。

另外修改了開機畫面,initlogo.rle是用下面這張轉出來的。


同時整合修改了國外製作的仿電腦開機動畫 bootanimation 放在 /system/media/bootanimation.zip


系統資訊如下:


主要系統改動如下:
1.依據 此討論串 的說明用 2.1的 libsensor 取代替換來修正接近感應器(Proximity Sensor)的bug
/system/lib/libms3c_yamaha.so
/system/lib/libsensor_yamaha.so
/system/lib/hw/sensors.salsa.so

2.替換中文的Setting.apk & 加入AcerAGps.apk (原本的4.008.08.EMEA.VFIT裡面沒有AGps設定)

3.將中文 2.2 ROM內的 xt9 輸入法 & 蒙恬手寫輸入法 整入。
/system/app/XT9IME_FET.apk
/system/usr/xt9
/system/app/HandWritingIME.apk
/system/lib/libpphwrsdk.so

4.原本Flash Player 10.1 升級至最新安全性修正後的 10.3.185.24
/system/app/AdobeFlashPlayer.apk
/system/lib/libflashplayer.so
/system/lib/libstagefright_froyo.so
/system/lib/libstagefright_honeycomb.so
/system/lib/libysshared.so

5.更換Liquid Metal Camera.apk 來修正相機EXIF日期錯誤問題 (原本LiquidE的Camera.apk有bug拍出來的相片EXIF全都是 2002:12:08 12:00:00)

6.Google Map改為最新版 5.6.0
/system/app/Maps.apk

7. 因為 Acer Liquid E 2.2的mtd切的有點浪費,/system 切了200M 但是移掉一些用不到的apk之後閒置空間過多,所以把一些常用的工具軟體如 SetCPU / LiquidSetting / SuperUser / OpenVPN Setting / SMS Backup+ / GScript Lite / Evernote / Dropbox / eBuddy / Perfect Viewer / AutoRotate Switch ...etc. 直接塞到 /system/app 裡面,以節省 /data/app的空間。

8.已裝入 Superuser.apk / su / busybox

9. /system & /data 分區使用量如下 ( /data 為wipe後第一次開機完成以後的大小 )
/dev/block/mtdblock4 200.0M 162.7M 37.3M 81% /system
/dev/block/mtdblock3 200.0M 61.8M 138.2M 31% /data

10. Browser.apk 預設瀏覽器加入中文語系/修改預設首頁(原本ROM裡面的首頁是 my.360.com )後重包。
( 這個動作是我拿來練手的,沒有太大意義 )

因為主要是配合我個人需求的,所以並沒有完全去做太多中文化的修改動作。

有興趣的LiquidE機友可以抓回去刷刷玩玩試試,如果你熟悉Linux相關權限及檔案操作,對Android的系統結構及APK修改重包也有一定認識的話,那麼DIY拼裝出一個符合自己需求的系統來玩玩也是不錯的。
我改的ROM下載位置: MEGAUPLOAD載點 or DROPBOX載點
 (第一次丟的位置 http://goo.gl/hkrmF 不給力,下載會斷 ><" 所以還是放 MEGAUPLOAD跟Dropbox好了 )
檔名:4.008.08-FIX-20110620.7z
解開後是 nandroid 的備份格式 (懶得另外處裡打包 update.zip ,就用wipe過後的 nandroid備份比較省事)
解開後整個 4.008.08-FIX-20110620 目錄放到 /sdcard/nandroid/ 目錄下然後進到 malezRecovery
選 Backup/Restore-> Nandroid restore (selected) -> recovery -> 4.008.08-FIX-20110620
接著刷進去就好了。
警告1這個restore動作會洗掉原本所有的資料,在restore之前請先自行備份。
警告2因為LiquidE 2.1 跟 2.2 的 mtd partition大小不同,此nandroid備份僅適用2.2之後的分區。

2011-05-30

2011-05-30 Acer Liquid E/2.2/OpenVPN/tun

前幾天從Y!購物中心入手了一隻便宜出清的Acer Liquid E (NT$5,999)



雖然是老規格的手機了,不過Acer原廠有提供Android 2.2的ROM可以升級,所以NT$5999這個價錢C/P值超高。

入手後先升上原廠的 2.2 ROM ,再上兩個原廠的2.2的Patch
最後的官方版本是 Acer_LiquidE_4.003.18_AAP_FET

基本上用了幾天下來這版本效能還算OK,就先將就著用,接下來就是要開始折騰了 XD

升上2.2以後接著就是root,Liquid E 要root很簡單,直接用z4root就能一鍵無腦root,也不用去管什麼recovery版本。
取得root權限後先清掉 /system/app/ 裡面的一些遠傳客製軟體,再把一些原本系統內含有但是有新版本的apk塞進去,用這個 超級管理器 處裡也很方便。把原本的Twitter/Facebook/Google Maps/街景這些apk裝上新的再把他搬進 /system/app/ 就好了。

該刪的刪可搬的搬處裡完以後的512的ROM清出了一些空間,算是堪用吧。


接下來因為我有openvpn連線的需求,上網查了下OpenVPN的android版本資料。
首先要有tun.ko這個 kernel module才能跑OpenVpn,但是Acer原廠的2.2ROM裡面沒有這玩意,暫時又不想去找其他第三方的ROM來刷,那就自己來吧。

先去Acer那抓Kernel Source回來(抓 2011/02/08 這隻,檔名是 App. Guide_Acer_1.0_A_A.zip );再抓 Android NDK 回來 ( android-ndk-r5b-linux-x86.tar.bz2 )。
抓完後各自解開,先把Kernel Source處裡一下( App. Guide_Acer_1.0_A_A.zip 解開的目錄名是 kernel source code_Acer_1.0_A22F_LiquidE,這裡面空格在我這邊make的時候會出鎚,我是把目錄名改成 Acer_1.0_A22F_LiquidE ,我這邊的環境路徑為 ~/Work/Acer_1.0_A22F_LiquidE/ )
然後Android NDK 解到~/Work/android-ndk-r5b/

接著進到Kernel Source目錄內,
cd  ~/Work/Acer_1.0_A22F_LiquidE/
先抓出Acer原廠編譯時的config參數 (位置在 arch/arm/configs/acer-q8k-a1-dvt_defconfig )
cp arch/arm/configs/acer-q8k-a1-dvt_defconfig   .config

修改 .config
把裡面的
# CONFIG_TUN is not set
改成
CONFIG_TUN=m

之後存檔。

設定環境變數開始編譯
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=$PATH:~/Work/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/

make modules

編出來我要的 tun.ko 位置在 ~/Work/Acer_1.0_A22F_LiquidE/drivers/net/tun.ko
(編好的 tun.ko 我放在 http://messlab.co.cc/DL/tun.ko -這是專門給 Acer_LiquidE_4.003.18_AAP_FET 用的)

再把tun.ko丟到手機的 /system/lib/modules/ 底下


加載測試無誤


最後就是處裡OpenVpn的部份,直接去
http://code.google.com/p/android-openvpn-installer/

http://code.google.com/p/android-openvpn-settings/
抓 OpenVPN-Installer-0.2.3.apk & OpenVPN-Settings-0.4.7.apk 回來安裝設定一下就好了

搞定收工!

玩開放的Android好處就是要~自己動手,豐衣足食~ XDD

2011-06-20 update: Acer Liquid E 2.2.2 modified Official ROM

2011-05-19

2011-05-19 Facebook Like hijacking with Blogspot

今天 (2011-05-19) 在Facebook上面出現了一種新的惡意分享連結,


由於連結網址是位於Google的Blogspot.com 上面的,很容易讓人失去戒心點擊下去!一旦點了連結後會連到下面這個頁面



基本上看到這畫面只要是之前有關注過FB惡意分享連結的朋友應該都很眼熟,也不會再去點任何的按鈕或選項了。(但是這次當你看到這頁面時已經來不及了!)
此次情況更加惡劣,就算不做任何動作,只要Facebook處於登入狀態,也會自動觸發數個 like 的行為!





大致追了一下過程(沒有很仔細去分析原始碼)

當連到標的網址後可以看到他在該blogspot的blog頁面head的部份就插入了REFRESH 
(好奇發問:這在Blogspot是合法的嗎?怎麼做的?)(經過實際測試,Blogspot真的可以這樣幹!)



接下來跳轉到第二個Blogspot上的blog網址同樣的在head的部份就塞了個外部的Javascript
(好奇再發問:這在Blogspot是也是合法的嗎?怎麼做的?)(經過實際測試,Blogspot真的可以這樣幹!)
然後在頁面底下塞了7個長寬為0的iframe

http://offeradvertising.biz/gwjs.php?pub=122005&gateid=MTg3NjA2
(這隻JS我懶得去解去追了,留待有興趣的高手們慢慢研究吧)


接著是那7個iframe對 doubledd.info 的 request,內容都是POST到 http://www.facebook.com/ajax/connect/external_node_connect.php?__a=1 的Form



再來一個眼熟的iframe


從經過編碼的Javascript基本上就可以判斷有問題了!


接下來就是對兩個blogspot網址跟五個Facebook粉絲頁觸發Facebook Like的動作。

The Hottest & Funniest Golf Course Video - LOL
Get a Free Meal hurry!
I Love my Mom  專頁url http://www.facebook.com/pages/I-Love-my-Mom/200225093354009
Happy-Club  專頁url http://www.facebook.com/pages/Happy-Club/183772875005110
I Love Music  專頁url http://www.facebook.com/pages/I-Love-Music/146573855415349
I-Love-my-Family  專頁url http://www.facebook.com/pages/I-Love-my-Family/149990811738505
I-Love-Money  專頁url http://www.facebook.com/pages/I-Love-Money/228827590465565



最後就是用Facebook的Like發布塗鴉牆行為進行病毒式散布~
所以可以在極短的時間內取得最大戰果。



就算是Facebook跟WOT合作來對抗惡意連結,也很難在第一時間擋下!
等Facebook或是Blogspot發現處裡時已經來不及了。

這次的情況比較特殊的是利用了Google的Blogspot來作為散布的中轉媒介而且搭配的如此天衣無縫,而且自動觸發按讚的動作,很容易讓人中計!

看來日後的自保之道唯有不要輕易去點Facebook上別人按讚後所貼出的連結才是。

如果很不幸的點過了這個惡意分享連結,那最好盡快到Facebook個人檔案頁面中把這幾條按讚的分享訊息刪掉,以免更多朋友受害。
如下圖:



至於這惡意連結到底是怎麼做的,更進一步細節如何?就有待專業的資安高手來解答了!

2011-05-20 
update 1:
經過實際測試,Blogspot真的可以在head內塞meta http-equiv="REFRESH" 跟加載外部 JavaScript,不需要什麼高深的hack,我還真是lag+孤陋寡聞;看來以後遇到Blogspot的url也不能輕易信任隨便亂點了。
update 2:
目前Facebook已經把相關連結的like分享貼文都移除了,不過根本性的問題還是存在。透過Facebook按讚貼文進行的病毒式散布速度在被相關單位發現處裡之前就可以輕易打下幾十萬的Facebook User~ 這次連讚都自動按下去進行發布了,不知道下一次又會變出什麼樣的把戲。

2011-04-13

2011-04-13 不管再怎麼拙劣的MSN釣魚網頁,還是有人會被騙

今晚打開一個許久未登入的MSN帳號,馬上就收到一條由好幾年沒聊過的聯絡人發來的離線訊息:
http://msn。wertmyloveblog。com
^^來看看我的寫真集喔^^^^
=========
(請千萬不要傻傻的連過去還輸入帳號密碼)
因為現在透過MSN詐騙早就不是新聞了,看到這個訊息馬上就覺得有問題。


在做了可能的防範後就連到該網址瞧瞧
(後來證明我是多心了,沒有木馬沒有惡意程式碼,完全就是個簡陋的釣魚頁面)

哇咧,長得還真像!可是 左上方的 title 居然是 Untitled Document XDD

看一下原始碼

這頁面是把輸入的帳號密碼資料post到 msn.wertmyloveblog.com/cn/add.asp 去


然後response回來就是一段Javascript把頁面跳到一個空的404.html去

用工具查一下該站點的相關資訊,主機是放在美國


查一下該domain的whois http://whois.domaintools.com/wertmyloveblog.com


從Domain Whois中的QQ號 4 0 2 5 5 8 8 8 3 一看

這傢伙絲毫不隱藏真是夠囂張的了。
而且用相關資料(QQ號/電話)一搜才發現它早就是累犯了!

老實說這手法非常非常拙劣,可是就是會有人中招。
(起碼發過來的那個聯絡人就中標了)
裝再強的防火牆再棒的防毒軟體還是沒用的,像這種自己把MSN帳號交出去的怨不得別人!
這年頭騙子太多 傻子明顯不夠用了~
千萬不要看到登入頁面就乖乖的輸入帳號密碼,多想幾秒鐘,你可以不用害朋友被詐騙!

延伸閱讀:
Google搜尋相關問題-網上釣魚攻擊
维基百科 - 釣魚式攻擊
資安之我見 (What I see): MSN-Phishing on Christmas Eve