Pages

Sunday, February 26, 2012

Galaxy Note (2.3.6) 成功 Root


由于手上的N7000是欧版,ROM比较干净,自带Google Map/Market等谷歌服务,因此相比行货,root的需求不是那么强烈。不过root仍然是迟早的事情,最重要的一个需求就是伪装运营商。用CMCC的sim卡登录市场,就是一个悲剧,啥都装不了,搜不了。另外系统自带的OTA系统更新功能,需要先向三星注册,如果运营商是CMCC,直接失败。(传说中三月份放出ICS升级,三月之前搞定注册是必须的)

其实在入手N7000前,就已经在论坛下到了root程序了。但是考虑到root权限实在是大,对这种论坛上的东西不太放心,怕夹带私活,加上对神秘的root过程一直不太明白,就没急着去运行,而是分析了一下这堆东西。看明白了真不复杂,其核心就是一个可执行程序,利用了2.2/2.3系统中的一个名为zergRush的漏洞,达到获取root权限的目的。脚本的大致过程是:
  1. 用adb将zergrush push到/data/local/tmp目录
  2. 为zergush增加可执行权限,并执行
  3. zergush将自己复制为boosh,并通过漏洞以root权限执行 boosh
  4. boosh设置系统属性ro.kernel.qemu=1
  5. 重启adb,当adb发现 ro.kernel.qemu 属性为1时,以root权限运行
  6. PC端脚本重新连接上adb时,已经是root权限了
  7. 将busybox push到 /data/local/tmp,通过busybox的mount功能,将/system remount为可写
  8. 将busybox安装到/system/xbin
  9. 将superuser版本的su安装到/system/bin,设置权限为04755
  10. 安装superuser.apk
由于本人不是安全专业,对缓冲区溢出的原理和试用一窍不通,对作者和分析者只能膜拜了。zergRush的漏洞原理可参考http://blog.claudxiao.net/2011/10/zergrush/

Root的过程弄清楚了,但是对root包中这几个可执行文件心里可没底。好在发现zergRush竟然是开源的,代码可以直接在github中下载。那么就完全可以使用自己编译的zergrush程序了。而busybox也可以自己编译。至于supserUser.apk和su,虽然免费,但是不开源。最后分析了一下,装这两个程序,主要是为后续需要root权限的apk程序使用。而我所知道的需要SuperUser的程序,主要是用Root Explorer和Market Enabler。前者是收费的,还需要破解,更加危险。其实有了root权限,adb shell+busybox差不多可以替代了,就不需要装了。而Market Enabler,其实功能就是设置几个系统属性,甚至可以用adb shell的setprop来替代。因此大不了superuser.apk我不装了。

分析下来,难的还是编译zergrush,费了不少周折。一开始去研究NDK,还找了本书学习了半天。最后发现路子不对。unix staff需要编译AOSP项目。传说中编译AOSP需要16G内存,25G+6G空间。经过数天的折腾,终于成功编译成功AOSP的模拟器target。之后编译zergrush和busybox就容易了。

zergRush:
源码在 https://github.com/revolutionary/zergRush
在AOSP项目的development下建一个子目录zergrush,将zergRush.c复制进去,建一个Android.mk文件,在当前目录执行mm,可顺利编译出zergrush

busybox:
偷了一把懒,直接用了CyanogenMod版本的busybox,自带Android.mk
源码在 https://github.com/CyanogenMod/android_external_busybox
和上面一样,在development下建一个busybox目录,直接mm,成功编译出busybox。

我的root过程(当时忘记记录了,有些细节可能不太对):

  1. adb push zergrush /data/local/tmp
  2. adb shell chmod +x zergrush
  3. ./zergrush
  4. adb push busybox /data/local/tmp
  5. # busybox mount -o remount,rw /system
  6. # dd if=/data/local/tmp/busybox of=/system/xbin/busybox
  7. # chmod 04711 busybox
  8. adb push su /system/bin
  9. # chmod 04755 su

伪装T Mobile的脚本,在root权限的adb shell中执行:

setprop gsm.sim.operator.numeric "310260"
setprop gsm.operator.numeric "310260"
setprop gsm.sim.operator.iso-country "us"
setprop gsm.operator.iso-country "us"
setprop gsm.sim.operator.alpha "T-Mobile"
setprop gsm.operator.alpha "T-Mobile"

出自:http://android.modaco.com/topic/304693-market-enabler-workaround/



顺便说一下我手上系统的版本:
Android version
2.3.6
build number
GINGERBREAD.XXKKA

Sunday, February 19, 2012

新玩具-Galaxy Note / N7000


这台大牛入手可谓费劲周折。从下单到收货,一共折腾了11天。加上出差在外,两个星期才真正摸到机器。

先来说一下曲折的入手过程。首先是决定购买。关注大牛很久,只知道优点是屏幕大,缺点是屏幕太大。但是到底又多大,一直没谱。乃至决定买了,仍然没有概念。最后领导决定,先去实体店考察一下。先去了苏宁,一下被震住了,果然太大。营业员也说了,这个大的太夸张了(明摆了不想做生意?)。跑出来想想不对再看看吧,又不好意思跑回去,只好跑到对面五星又摸了摸,适应了些,但是还是太大,遂决心放弃。但是回到家,还是想买,特别是几天做地铁上下班,总觉得手上缺个大屏幕手机,于是学习网友的方案,用纸板裁了一个1:1模型,又比划了半天,最终下定决心出手。

Note的行货价5999,亚马逊能优惠到5000出头,淘宝水货在3900左右,但是考虑到淘宝上的手机水实在太深,而且几次在淘宝购买水货都不顺利(疑心太重),遂决定尝试Expansys(中文名磐石环球数码城,相当山寨)。很早就听说Expansys了,但是没买过东西。网上评价毁誉参半,但就我个人感觉仍然比淘宝靠谱些。Expansys当时价格在4300左右,白色机器还要贵好像80左右,加上运费120HKD,比行货便宜有限。不过好处是可以买到原装车载支架,这东西淘宝都相当稀少,且价格贵50%,不知真假。另外Expansys还可以买到谷歌三儿子9250。理论上国行不会有亲儿子买,这也是准备尝试Expansys的原因。

Expansys的购买过程也很戏剧性。2号下单,包括白色Note一台,原厂车载支架一个,运费120 HK$,选择了信用卡支付。结果订单卡住了,需要我提供证明收货地址的材料,真见鬼了,一时还真提供不了。只好打电话给客户。客户电话还是个手机,来电通显示广东某地(肿么这么像骗子电话呢?)。国内客服似乎将情况转给了香港的同事,和他扯了几封电邮后,决定撤单,重新用网银下单。撤单倒是很快,虽然没扣我钱,我的信用卡信息可都告诉他们了,该死。当时已经是星期五晚上了,我还是忍不住重新下单了,结果悲剧发生了,网站跳转到银联后,卡在招行的页面专业版支付不再跳转页面了。钱已经扣了,但是没有跳回Expansys的网页,订单也没生成。已经过了客服时间,第二天是周末,也没人上班。只能干等。第二天收到一封订单确认信,总算有了订单号,但是订单内容为空。显然是一个异常订单。无人处理,继续干等。熬到星期一早晨,在出差的路上开始与客服交涉。客服倒是很爽快,说帮我修复这个订单。我提出网站上的价格已经降价了100元,希望能以次价格计算,客服也答应了。很快收到确认邮件。订单内容正常了,但是价格比原来少了400。仔细和官网价格核对了一遍,对不上。又过了一个小时,网站打出白色Note星期一特价,这价格才对上。原来是提前一个小时享受到了今天的特价。而且后来看,的确只是星期一一天。还算幸运。之后就是等待收货。一直到星期五,货才到顺丰手里。系统自动发邮件通知顺丰单号。之间星期四又和客服联系了一次,说正在通关,估计Expansys的货真是从海关正规进来的。货到了顺丰手里就快了,次日送到。就是前面折腾太久,心急的同学一定要慎重选择Expansys。

由于当时出差,是领导收的货。收到的货,封条都被开了。不知道是哪个环节开的,但是很不爽。欣慰的是,三码合一。应该是从海关正规进来的(料想Expansys不至于去印个假的包装标签)。但是一个很严重的问题是,拿到的机器是欧版的!先不说淘宝上欧版比港行便宜,关键是没有中文语言。对于用惯了英文系统的我来说无所谓,但是领导用就没法用了。好在这手机太大了,领导是绝无可能用这个机器的。


再说一下Note的型号。拿到手的是N7000,之前一直以为欧版是N7000,港版是i9220,后来发现不是这么回事,应该除了国行,都是N7000。放狗搜了一下,比较靠谱的说法是,Note原来的代号是i9220,后来三星改变了注意,9xxx是手机系列,觉得应该给Note弄个新的系列,遂改名N7000。至于为何国行仍叫9220就不得而知了。(估摸着是已经去工信部备案去了,不想再重来一遍)

到目前为止,使用时间不多,才几天。说说一点感受:

  1. 还是那句话:优点是屏幕大,缺点是屏幕太大。
  2. Super AMOLED,网上说的都是真的。色彩艳丽,对比度高,很讨好人,但同时偏色严重。全黑时有黑斑。理论上,OLED全黑是不发光,但是在全黑环境观察了,感觉还是有发光,可能对OLED原理理解有误。
  3. PenTile确实存在。老婆拿到手,第一印象是:你这手机分辨率不行。欲哭无泪啊,这可是1280x800,ppi接近300啊。要说分辨率的确高,网页缩小到最小,小字都清晰可见。但是颗粒感也确实存在。这是不争的事实。
  4. 按键设计不合理。要多脑残的设计师才会把电源放到右侧啊,但是三星的设计师的确做到了。最下面的唯一物理按键手感不错,但是左右两个虚拟按键比较容易误碰,很不爽。
  5. GPS真强。可能是以前没用过好东西。Note的GPS可以在室内定位。不知道是不是Glonass比较强的缘故。

Wednesday, February 15, 2012

有点搞明白谷歌市场的逻辑了

行货Android手机是很杯具的事情,价格高不说,完全不会带有谷歌服务,没有GMail,没有Google账户集成,没有官方市场。还好民间有所谓GMS加刷包,虽然不完美,但是总算能装上Market啥的。

但是即时装上了Market,仍然是一个杯具。在Android Market的账户中,CARRIER写的是China Mobile,在市场中搜索的很多程序都无法安装,如谷歌地图,显示为不兼容,无法安装。而在手机端的Market App上,直接连搜索都搜索不到。

无奈之下,一度想去网上买个美国的sim卡,淘宝上很多,都是给水果激活用的,找了个卖家问了问,说不保证能用,估计也没人这么干,于是作罢。遂改为寻求软件方案:MarketEnabler。官方市场就有,免费的,但是需要root。原来不想折腾root的,国货夹带的垃圾软件我都忍了,就是为了这个软件才root的。用MarketEnabler伪装为T-Mobile,终于可以在手机端Market上搜索到原来搜索不到的应用了,谷歌地图也装上了。但是仍然不完美,在WEB端,仍然显示着China Mobile,搜到的软件仍然不兼容。只能在客户端凑合用。连MAKER和MODEL都能修改(为了获得50G Dropbox空间,将手机制造商改为了Sony,网页上的MAKER神奇的跟着改了),就是CARRIER改不了,非常之困惑。

直到最近两天,才有了新的发现,先在客户端用MarketEnabler伪装,再关联谷歌帐号,在新的帐号下,CARRIER不再是China Mobile了,WEB端直接可以推送了,这意味着可以不再使用MarketEnabler了,直接在网页上推送就行了。因为免费版MarketEnabler不能保存状态,经常切换挺烦的。另外一个杯具的事实是即时伪装成了国外运营商,仍然有国内的app无法兼容,因此,保持两个不同运营商的谷歌帐号是必须的。

顺便说一下,貌似MarketEnabler也就主要是修改了系统属性gsm.sim.operator.numeric的值。自己整一个应该也不难,毕竟有个root权限的第三方程序存在与手机中,还是挺不爽的。