好文章先转后看:http://www.miui.com/thread-1700212-1-1.html
25.18 红米手机如何root
http://scz.617.cn/misc/201404041813.txt
Q:
我是移动JHACNBA13.0,如何root?
A: 2014-04-04 18:13
该版本红米后台已经有/system/xbin/su,但权限是0644,没有x权限。想办法给su加x
权限,比如修改卡刷包的"META-INF\com\google\android\updater-script":
#set_perm(0, 0, 0644, "/system/xbin/su");
set_perm(0, 0, 06755, "/system/xbin/su");
该版本红米自带root开关:
安全中心->授权管理->允许应用获取ROOT权限
用的应该是/system/app/LBESEC_MIUI.apk。
但稳定版中自带root开关是灰的,不可选。用IDA反汇编官方卡刷包中的system\xbin\su,
在"Strings window"中看到一个有意思的提示:
"SU is disabled in release version"
查看交叉引用,对其附近的ARM汇编代码反汇编后,伪代码如下,我加了点注释:
--------------------------------------------------------------------------
/*
* 从/system/build.prop中读"ro.build.version.incremental"
*/
property_get( "ro.build.version.incremental", &incremental, &property );
/*
* 从/system/build.prop中读"ro.build.type"
*/
property_get( "ro.build.type", &type, &property );
/*
* 组织正则表达式的模式匹配串"[0-9]+.[0-9]+.[0-9]+"
*/
regcomp( &preg, "[0-9]+.[0-9]+.[0-9]+", 5 );
/*
* 进行模式匹配,返回0表示匹配,非0表示不匹配
*/
regret = regexec( &preg, &incremental, 0, 0, 0 );
/*
* regcomp()分配了动态内存,这里释放它,后面用不上了。
*/
regfree( &preg );
if ( regret && !strcmp( &type, "user" ) )
{
/*
* 翻译成大白话,如果"ro.build.version.incremental"不是形如"数字.数字.数字"
* 并且"ro.build.type"等于"user"的话,/system/xbin/su认为自己处在release
* 版中,不让用!
*/
_android_log_print( 6, 0, "SU is disabled in release version", buf_a );
memset( &buf_b, 0, 0x400 );
/*
* 灰掉"安全中心->授权管理->允许应用获取ROOT权限"
*/
android::String8::String8( &buf_c, "com.lbe.security.miui.su" );
sprintf( &buf_b, "content://%s/disabled", buf_c );
...
}
--------------------------------------------------------------------------
注释把问题都说清楚了。为了让su认为自己不在release版中,有两个办法:
1) ro.build.version.incremental=4.2.1 // 满足"<num>.<num>.<num>"即可
2) ro.build.type=eng // 不是"user"即可,比如"userdebug"
这两种修改方案任选其一就可以了,两处一起改没必要,我个人建议改"type=eng"。
怎么改/system/build.prop呢?这变成鸡生蛋、蛋生鸡的问题了,目前看来比较好的
办法是:
1) 用"SP Flash Tool"线刷"CWM Recovery"
2) 进入"CWM Recovery",配合"adb shell"改/system/build.prop、/system/xbin/su
这种组合不需要降级安装老版本卡刷包,不需要林林总总的一键ROOT工具,程序员可
能比较喜欢。
本文有点标题党了,我是平生第一次折腾智能手机(SP),分享一下程序员视角下的瞎
折腾,边学边分享吧,希望有人喜欢。