2011年1月21日 星期五

Android 應用的盜版與山寨 - 盜版市集

The pirate Android market and shanzhai apps - pirate market

Android 盜版應用的崛起

Android 的盜版應用遲早一定會出現的,這是軟體世界裡不變的真理,而且不管你如何保護都沒有用。就像防盜市場一樣,沒有開不了的鎖,有的只是時間快慢問題而已。

熟悉門路的人都知道,在通訊行買 iPhone,不僅幫你的手機越獄,還附上一片大補帖,裡面裝滿可以免費使用的 iPhone 付費應用。Android 應用當然也無法免除這被盜版的命運,再加上 Android 應用的開發使用的是 Java 語言,要反組譯這 Java 所編譯出來的 .class 或是 .jar 檔,更是易如反掌。自已 google 一下 java decompiler,這類的 java 反組譯工具早就滿天飛。而且反組譯所產生出來的 Java 源碼,還都宛如原著。

雖然 Android 會再將 .class 轉譯成 .dex,不過這 .dex 的格式既然是公開的,自然要再將他解開,也不是件難事。smali, Dedexer, dex2jar, android-apktool 等都有這樣的本事。雖然你可以用 Proguard 這類的工具,延長別人看懂你程式所要花費的時間。不過,相信我,只要能還原出原始碼,就一定可以被破解。加再多的防盜措施,只是找你自己與使用者的麻煩。因此,盜版 Android 應用的出現,是早晚的事。

透過 iPhone 的 App Store 或是 Android 的 Android Market 這類的創新營運模式,將手機應用的傳銷成本,幾乎降為 zero。這麼好的創新模式,盜版者當然得將這招學下來,所以專為散佈盜版應用的 Market,自然也就孕育而生。Applanet 大概是最有名的一個。

我試玩了一下,Applanet 本身就像是一個 Android Market,第一印象是這 Applanet 應用,寫的還真不錯,有一定的水準。我的免費應用,多數帶有廣告,自然歡迎盜版市場一起幫忙散佈,付費應用可就不行。找了一下,果然 Applanet 上有我的付費應用。經過分析之後,我發覺目前的破解方法多是直接改你的程式,繞過你原本程式中檢查是否合法的那個點,再將 apk 重新簽名發佈。

對於不想付錢買應用的人,有免費的付費應用可用,當然是 why not,不過對於真的使用這類破解應用的使用者,這問題可就嚴重了。你怎麼知道破解者不會在程式中植入木馬?在個人電腦上,被植入木馬,除非偷走你的電子銀行密碼,一般來說,還不會有太大的金錢損失。手機上的木馬遠比個人電腦來得可怕許多。偷抓你的聯絡人資料和私密相片,傳遞上網;或是盜發垃圾簡訊等等,一般人平常根本無從察覺,直到你收到帳單的那一刻,才體會甚麼叫做因小而失大。而目前的手機防毒軟體,也多是騙錢的,根本起不了防治作用,你別想靠他幫你抓毒。由於手機付費應用來的相對地低廉,通常都是不到一杯咖啡的價格,再加上手機上有許多的隱私資料。因此,我覺得這盜版市集是否會對開發者收益部分造成大比例的威脅,還需要一段時間的觀察。

常有人問我,該如何保護應用,避免被盜版等問題。我的回答都是,只要做好基本的保護 Proguard + LVL,其他就順其自然了。因為我說過,只要能還原出原碼,這樣的程式就一定可以被破解。除了做好基本保護之外,另外一個重要的事,開發者一定要立足台灣,放眼全球。有機會的話,不要做只給小區域人使用的應用,一定要做給全球手機用戶使用的應用。Android Market 的出現,解決了傳統沒效率的軟體銷售經銷問題。現在你的應用,瞬間可以透過 Market 上架到全球用戶的面前 (消費者有沒有看到的你商品,這是下一件事),為甚麼你還不願跨出台灣?一旦你的應用是面對全球的,這因盜版市場所造成的營收損失,比例上自然也會下降。與其每天想如何保護程式,還不如多花點時間在增強你程式的功能與品質。這樣才會有正向的循環,不是嗎?

這有一篇 如何破解應用的教學。我分享這資訊,並不是要你破解別人的程式,而是因為要學會保護你的應用之前,首先你得先知道別人是如何破解應用。再說一次,沒有破解不了的程式,只是破解所要花的時間多少而已。

7 則留言:

東港漁郎 提到...

老師的話真的是;「如雷貫耳」,一語驚醒「鬱卒人」,舉雙手雙腳贊同! ^__^

dcex 提到...

It's not so simple to "decompile" all source code...but cracker may inject code to skip protection via dex decompiler.

匿名 提到...

老師您好~請問有沒有利用手機的IEMI碼運用在防盜呢?

YNYang 提到...

不只applanet,中國也非常多這類"黑市"。
如"N多市場",他是將正版付費軟體破解後(有的順便漢化),再上架免費下載。也成如老師所說,有的真的有問題,藏入一些背景程序。
另外在官方market上,也不時會見到複製版的仿軟體,這點也是上架沒有審核的缺點。儘管他是盜版的,但評價仍極高-因為複製好用的正版軟體。

匿名 提到...

其實iphone的盜版並沒有想像中的嚴重,在iphone上面使用者付費的精神還是居多...是android較為嚴重,所以這也是為什麼有些應用程式到android就變免錢(憤怒鳥就是一個明顯的例子),這也是開發商意識到真正在android上收費來當公司的收入來源,是一個自尋死路的事情

John Wang 提到...

有一點我同意, 不要考慮太多,因為沒有辦法避免。看看那些大的軟件公司,有哪一個可以防止盜版。但我知道,在美國絕大多數的用戶都不會去用盜版。把那些盜版的就當作免費替你做廣告好了。

Gpc 提到...

剛好路過看到,分享一下:

其實真正的問題是,dex的反組譯門檻是很低的,而且這種低是出奇的,因為dalvik本身使用的byte code,我個人覺得是蠻高階的語言.跟真正的組合語言比起來等級差太多了.有點類似.net的那種託管代碼,逆向後看起來還是很友善.我身邊的朋友稍微學一下,在半天之內就可以輕鬆上網處理掉所有dex的東西,要加code,要刪code都可以.

目前看起來最後的希望就剩下native C了,雖然ARM CODE還是可以爆,但以門檻來說我覺得是有相當大的差距.應該這麼說大部分會解dex的,幾乎都不會懂ARM reverse,反之亦同.

張貼留言