某些移動應用會通過技術手段阻止用戶使用,例如被陌陌封號了以后,使用者會注意到,自己的手機再也無法使用陌陌了,即便是再注冊一個帳號也無濟于事。本文給出一個辦法:即通過PDroid修改app所能見到的IMEI,來合法安全地解決這個問題。
產生這種狀況的原因:
1,通過在Android Package的androidmanifest.xml文件中添加Android.permission.READ_PHONE_STATE對象,android應用程序可以通過Android提供的API獲取訪問蜂窩設備的IMEI號碼的權限。
2,在Android手機上,陌陌會索取手機的IMEI號碼,并且把它當作用戶校驗的手段。當你試圖在別的手機上登陸你的陌陌賬戶時,會被拒絕。同樣,陌陌的運營者可以決定阻止帶有特定IMEI的設備登陸。
3,每個手機都有一個獨一無二的IMEI號碼,這意味著IMEI和用戶高度相關,和手機號碼一樣是一個可以精確追蹤到用戶的標記,只要不換手機,無論你使用什么帳號,IMEI都是不變的。
------有一個例外,山寨機的IMEI號碼往往會不符合以上情況
問題出在哪里:
顯然,陌陌是無權封禁設備的。因為它不可以具備追蹤到設備的能力。換個說法,只要用戶希望,用戶就應當能獲得阻斷陌陌追蹤到用戶設備的能力。
IMEI與用戶的高度相關決定了它是用戶的隱私,只有用戶的蜂窩網絡運營商以及一些直接的利益相關者(如負責公共安全的政府部門,廠商在維修設備時)才可以無條件知曉特定IMEI與用戶之間的聯系。除此以外,用戶理應可以自行決定哪些應用程序可以知曉自己設備的串號。
而陌陌將IMEI作為了用戶登陸的必要條件。如果陌陌無法從Android.permission.READ_PHONE_STATE獲得IMEI,它就不會登陸。
所以?
就像越獄蘋果手機那樣,我們需要一個由用戶可行的,剝奪這種(可能是非法的)追蹤到具體設備能力的手段。在罕見的情況下,使用二手設備的用戶不得不通過這樣的方法來繞過自己手機的前一個使用者被封禁,導致自己也不能用陌陌的故障。
簡單地說:
既然形式上陌陌需要一個IMEI,那么就如其所愿,公平地給它一個李鬼IMEI吧。如果陌陌一旦獲得了IMEI,只要內容不為空,它就會允許注冊/登陸
以下介紹的內容無法改變手機本身的IMEI(這個東西是固化在更底層的地方,不是通過修改系統就能做到的),所以沒有法律或安全上的問題;相反的,它會給android用于向app提供IMEI的API做點手腳,讓你可以自行決定,是否向應用程序提供IMEI,或者提供一個自定義/隨機的IMEI。
實踐以前,請檢查一下是不是滿足以下條件:
最重要的:因為接下來介紹的方法是公開的,涉及到的代碼也是開源(PDroid patch的代碼本體以GPLv3授權)的,因此以下的方法以“原樣”提供,沒有任何保證,實踐者需要自行承擔操作帶來的一切后果(比如,包含且不限于設備損壞,被封號等狀況)
1,設備需要滿足的基本條件:
設備的bootloader必須解開(對于HTC設備,需要處于s-off狀態)
僅可在這些系統實行Android 2.3(Gingerbread)/4.0(Ice Cream Sandwitch)/4.1(Jelly Bean)
Android必須允許root權限(意味著你可以通過superuser/superSU/LBE授權管理等為需要的app提供root權限),以使得PDroid patch可以工作,實際上PDroid app本身并不需要root權限。
Android必須deodexed
2,開發環境
對于Android 2.3,你需要:
一個安裝了JDK1.6/1.7的windows環境,
.Net Framework 2.0虛擬機,
設備的recovery環境需要clockwork recovery(TWRP recovery可能不被支持)
對于Android 4.0,你需要:
一個安裝了JDK1.6/1.7的linux、MAC或cygwin環境
或者:
在有足夠java,android開發能力的前提下,你可以按照XDA-developers論壇上給出的源代碼,指示,自行編譯。
3,你需要掌握的知識
會給android手機刷機,某些情況下需要知道怎么解鎖bootloader,以及通過fastboot
安裝linux內核;可能需要知道最基本的linux終端(terminal)的使用方法
4,其它
如果是android 2.3,設備的framework.jar必須沒有改動過
如果是android 4.0/4.1,只有特定的rom種類被支持。支持名單包括(到2012年8月25日為止):CM7,CM9,CM10,AOSP(Jelly Bean以及部分低級版本),AOKP,ParanoidAndroid,以及其它某些未指明的版本。
------CM是Cyanogen Mod的縮寫,AOSP是Android Open Source Project的縮寫,AOKP是Android Open Kang Project的縮寫。
實際操作:
將會做什么?
通過給android系統打一個叫PDroid patcher的權限管理補丁,配合上專用的app(也就是PDroid app)后,可以給陌陌的app提供一個自定義IMEI號碼,從而繞過它的IMEI檢測系統。
具體步驟?
對于Android 2.3
1,下載PDroid作者svyat編譯好的自動補丁制作工具PDroid Patcher
2,在recovery環境中將當前的ROM進行nandroid備份并導出。當然,也可以用全新的刷機包(aroma installer格式的可能不被支持)
3,啟動PDroid Patcher,選擇上一步準備好的備份/刷機包(.zip文件),點擊patch后,軟件會針對當前的.zip制作一對補丁,一個是用于打上PDroid補丁的,另一個是恢復包,用于打完補丁后的還原(在出故障,或不希望繼續使用等場合下)
4,把上一步制作好的兩個補丁復制到設備的SD卡(對于不支持SD卡的設備,則放在/sdcard分區),如果是安裝全新系統,不要忘了刷機包。
5,進入recovery環境,安裝PDroid補丁。新安裝系統的,則先安裝系統后再安裝PDroid補丁。
6,到Google Play Store安裝PDroid app;如手機沒有Gapps,或因眾所周知的原因而無法訪問Play Store時,則可以到作者在XDA-developer的頁面獲取。
7,打開PDroid app,給陌陌指定一個IMEI號碼即可------同樣的,這個IMEI號碼會和你新注冊的陌陌帳號綁定。
對于Android 4.0/4.1
原作者svyat提供的補丁工具只適用于Android 2.3,因此我們需要mateorod的帖子中,適用于4.0/4.1的工具。這個工具只能在Linux、Mac,以及Cygwin環境下運行。所以實踐者可能需要一臺安裝了JDK(OpenJDK和Oracle開發的JDK都可以)的linux電腦/虛擬機,或者按照作者提供的方法自行配置cygwin環境。
1,下載專用的補丁制作工具,解壓至實踐者自行指定的工作目錄
2,在terminal中進入前面所說的工作目錄,以”./autopatcher ROM.zip pdroid”的形式運行,稍等一會,補丁(以及恢復包)就會制作完成。也可以” ./autopatcher ROM.zip pdroid,v6supercharger”的形式運行,這樣補丁就會同時包括pdroid與supercharger V6(一個調整了默認Android系統內存管理的腳本)
接下來的步驟和前面相同。
iOS系統怎么辦:
在iOS系統下(需要越獄),也有類似的應對方法。有一個叫UDIDFaker的工具可以為指定的app更改UDID,也可以用來繞過陌陌(可能是非法) 的限制。
類似的方法也可以用于whatsapp等強制要求IMEI才可工作的app,如果你不希望它們知曉你的IMEI的話。
可能需要的相關XDA-developers內容的地址以及參考:
mateorod --- [Script][8-08][JB] Auto-Patcher
http://forum.xda-developers.com/showthread.php?t=1719408
svyat - [APP] PDroid - The Better Privacy Protection [2012-03-18: Bugfixes in Patch 1.32]
http://forum.xda-developers.com/showthread.php?t=1357056
[App] PDroidAddon Camera and Microphone Permission [Update: v1.2, 2012-08-08]
http://forum.xda-developers.com/showthread.php?t=1794411