2012年9月5日星期三

改变手机IMEI的方法

  某些移动应用会通过技术手段阻止用户使用,例如被陌陌封号了以后,使用者会注意到,自己的手机再也无法使用陌陌了,即便是再注册一个帐号也无济于事。本文给出一个办法:即通过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

  IMEI
  http://baike.baidu.com/view/90099.htm

  来源:willproven投稿