Skip to content

Latest commit

 

History

History
86 lines (66 loc) · 3.1 KB

201404041813.txt.md

File metadata and controls

86 lines (66 loc) · 3.1 KB

25.18 红米手机如何root

http://scz.617.cn/android/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 // 满足".."即可
  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),分享一下程序员视角下的瞎 折腾,边学边分享吧,希望有人喜欢。