奇妙的代码世界(一)

看到别人写的一些自己想知道的东西,顿时感到很有兴趣也很强大,固然做一个牛人有很多小粉丝是无比崇高的,可去往牛人的路上也不能少了自己~加油!

我来解释一下什么是ROOT以及原理

是不是要ROOT,是一个“大是大非”的问题,本文简单介绍一下什么是ROOT,ROOT的原理又是什么。
一,什么是ROOT?
在操作系统中,一般会把用户分成两种,一是管理员,二是用户。
这里的管理员,指的是可以修改操作系统中的一切,并切可以进行任何甚至毁灭性操作的角色;
比如,windows下的管理员可以删除记事本程序,但普通用户就不可以了。。。

早期的XP基本上这两个概念不明显,也是XP容易受到攻击的原因之一。
在Linux类的系统中,包括我们KF使用的android系统 ,都是有非常严格的控制的,理论上,管理员帐号是不允许被直接使用的。
在我们的KF以及绝大多数的Linux系统中,管理员帐号有一个相同的名字: root
而在windows系列中,为了表示windows没抄linux ,管理员帐号叫: Administrator
所以,我们所说的“ROOT操作” , 其实是“得到root用户权限,或者是使用root用户登录”的简称。
“今天你root了吗?” 如果在windows下,就相当于“今天你Administrator了吗”

所以说,其实root首先是个名词,但我们利用它动词的那一面把它可爱的动词化了。。


二,为什么要ROOT?

首先,我们知道,win7用不用administrator用户的区别可能是就那权限提示框了。
KF也是一样的,在KF中,root = 普通用户 + 高级权限
所以说,ROOT带来了更高的权限,但对系统本身,没有任何影响。
不过,Amazon不希望用户得到最高的权限,于是人为的做了限制,但是它无法限制我们的机器,只能限制服务:
ROOT的用户不能使用amazon的视频服务,别的限制目前还没有发现。

ROOT会带来哪些好处?
1. 可以替换一些底层的应用,如不喜欢amazon的”书架“外观, 或者想用google的服务;
2. 可以替换底层的引导程序,安装其他ROM,也就是刷机;
3. 可以把一些电影放到某特定目录,因为sdcard这个文件夹是动态加载的,拨了线之后,这个文件夹在有的应用中可能是空的,就找不到了。

三, ROOT的原理是什么?
既然Amazon对我们的KF做了限制,那我们又如何可以提升权限,ROOT成功呢?
其实ROOT本身,就是一种黑客形为,某牛人,看了KF的源代码,找到了漏洞,写出了一个exploit(漏洞利用),仅23Kb。
简单介绍一下exploit,这是一种可以让某操作系统抽疯,在最底层完全不进行判断的执行某种命令的程序,
可以确定的是,当前所有的操作系统都有exploit ,可能属xp的最多,可以说,没有操作系统不可以被入侵,只不过这些exploit掌握在极少数人手里,而且,一般不会做成低级的病毒。
而整个的ROOT脚本,就是围绕这个exploit进行的。。。。
这里简单解释一下我们的”一键ROOT脚本“(其实在这个脚本中,都有解释的。。)
adb 是google推出的android SDK中的调试工具,灰常强大。
首先,adb shell 是可以连接到KF的终端Shell 的

四,一键ROOT脚本做了什么:

adb shell "cd /data/local/tmp/; rm *" 
不登录adb shell ,而是直接执行命令 ,如我们要删除sdcard上的xx.oo文件: adb shell "rm /sdcard/xx.oo"

adb push files\zergRush /data/local/tmp/.
传一个文件上去, 如我们要把c盘的a.rmvb传到KF的/sdcard目录去: adb push c:\a.rmvb /sdcard/

adb wait-for-device
等待设备重新连接,一般用于执行过程中需要重启的情况

adb install files\recovery.apk
安装file\recovery.apk ,如我们要安装c盘下的gfan.apk : adb install c:\gfan.apk

reboot
重启设备

其实,整个一键ROOT程序就是这五个命令组成,分三个阶段,
1. 传zergRush 上去,执行一下,让KF系统抽疯;
2. 趁着KF抽疯,安装busybox、 Superuser.apk 、recovery.apk
3. 重启系统,让系统恢复正常,但已经解封了管理员用户: root

看到这里,我相信大家由于修改文件导致开机不能的”成砖问题“, 应该有实力修复了。。。
虽然KF开不了机了,但adb shell 还是可以登录上去的,这样,我们可以把zergRush 先传上去执行,
让系统抽疯后,把原来修改的文件改回来就可以了。。。(关于修砖,有时间再聊聊我的体会)

二  讨论砖机

在别的地方看到的,转过来大家学习讨论一下 呵呵  
一, 如何才能成砖?
如果把成砖相像成中毒,修砖类比为解毒,那修砖的第一步,就是了解中毒的机理,然后“对症下药”,当然,本文最后,也给出了近乎万斤油的解法。

提到成砖的原因,正常使用的人是几乎永远不会成砖的,而成砖很可能由下面的操作造成:

1. 安装输入法失败,主要发生在 settings.db 文件权限不正确;
2. 刷机过程中的操作出错;
3. 使用了fastboot;

二, 为什么会成砖?

就像中毒一样,成砖也是有轻有重的。

输入法安装失败:是因为安卓的操作系统源于linux,对权限控制非常严格,系统启动阶段,是使用system用户来启动的。
而我们把文件传上去之后,system用户其实没权限访问我们的文件。
导致system用户不能读取settings.db,一起卡在开机LOGO;

刷机过程操作出错:其实最危险的操作,往往是最容易的,刷机本身其实并不容易出错,这个过程出错,大不了一直开机就出个菜单让刷机。

fastboot使用后无法还原:fastboot 是用户可使用的最底层的修改工具,目前所有的操作都可以不用fastboot来完成,强烈建议不要使用fastboot进行刷机等操作。。。
fastboot的特点是,功能强大,但几乎每一个修改,都会导致系统的底层变化,也就是说,如果你不知道自己在做什么,不要使用fastboot.

三,如何修砖?

第一步,要坚信,amazon的工程师面对一台成砖的机器,拥有的软件和工具基本上与我们拥有的相同,至少在修砖这个事情上是的,所以,请相信我们折腾出来的:无砖不能修。

第二步, 先下载一些可能需要的程序和包

1. 调试工具:
windows下: fastboot.exe adb.exe usb_driver
linux/mac: fastboot adb-linux/adb-mac

2. 系统的引导程序及强制提升权限的expolit
boot.img
updaterecovery.img
stockrecovery.img
zergRush

3. 一颗勇于学习和探索的心。

(上面所有的文件附件中会有打包下载,包括windows/linux/mac版)

第三步,分以下情况来操作

1. 输入法安装失败的:(一直卡在开机LOGO无法进入系统)
1) 把KF连到电脑上, 装好驱动,确保adb shell可以使用
2) 临时再次提升权限后,修复settings.db的权限:
adb zergRush /data/local/tmp/.
adb shell "chmod 777 /data/local/tmp/zergRush"
adb shell "./data/local/tmp/zergRush"
adb wait-for-device
adb shell "chown system.sytem /data/data/com.android.providers.settings/databases/settings.db"
adb shell "chmod 660 /data/data/com.android.providers.settings/databases/settings.db"
adb reboot
3) 机器重启就会发现,一切OK了

2. 刷机过程出错之一:一直出现那个美丽的刷机菜单。
1) 把KF连到电脑上, 装好驱动,确保adb shell可以使用
2)直接把原装的引导程序刷回去,以正确引导:
adb push stockrecovery.img /sbin/
adb shell "dd if=/sbin/stockrecovery.img of=/dev/block/platform/mmci-omap-hs.1/by-name/recovery"
adb reboot
3) 机器重启就会发现,一切OK了

3. fastboot操作出错,或者上面两种方法无效:
这种情形下有时adb shell已经不能用了,所以需要尝试多种方法,请依次试用:
方法一,清空用户数据,修复引导模式:
fastboot -i 0x1949 -w 
fastboot -i 0x1949 oem idme bootmode 0x4000
fastbooot -i 0x1949 reboot

方法二,重新写入引导镜像,修复引导模式:
fastboot -i 0x1949 boot boot.img
fastboot -i 0x1949 -w 
fastboot -i 0x1949 oem idme bootmode 0x4000
fastbooot -i 0x1949 reboot

方法三,最终方法,完全重刷官方系统,修复所有砖

时间: 2024-09-30 14:43:29

奇妙的代码世界(一)的相关文章

代码世界1

代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1代码世界1

代码世界

代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界 代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代码世界代

步入代码世界

大家好,我刚刚进入这个平台,也是希望能在这里多学习关于这个行业的知识.首先学习的是计算机的发展与领域,在这个日新月异的时代,计算机已经成为一种网络潮流,从原来的大型主机,pc机到现在的笔记本,超极本,我们这个世界需要更多的创新与技术.时代正在一步步进步,20世纪80年代的cs到20世纪90年代的bs慢慢进步,从原来的,火狐,谷歌,IE,欧朋,到现在的数不清的浏览器,带来更多的新颖,与方便网络中必备的一个就是HTTP协议,有了这个协议,才能进行浏览器与服务器的通讯,以及网页的分类,web应用程序的

代码世界中的Lambda

" λ "像一个双手插兜儿,独自行走的人,有"失意.无奈.孤独"的感觉.λ 读作Lambda,是物理上的波长符号,放射学的衰变常数,线性代数中的特征值--在程序和代码的世界里,它代表了函数表达式,系统架构,以及云计算架构. 代码中的Lambda Lambda表达式基于数学中的λ演算得名,可以看作是匿名函数,可以代替表达式,函数,闭包等,也支持类型推论,可以远离匿名内部类. 为什么使用Lambda呢? 1)代码更紧凑 2)拥有函数式编程中修改方法的能力 3)有利于多核

奇妙JS代码系列(二)call,apply,bind用处整理

延续系列一:链接,此次主要整理JS里面很常见的三个函数call,apply,bind的妙用.(apply和call差不多,只是参数的区别)(下面有些这三个可能只是辅助,但是只要用到,我就在这里整理) 1.类型检测 上一篇最后一个已经讲到,Object.prototype.toString.call().犹豫上一篇说了,这里就不多说了. 2.解参,等同于ES6中的...扩展运算符 es6中提出了一种很方便解构字符串数组的运算符,这提供了一种简便机制,可以将任何部署了 Iterator 接口的数据结

奇妙JS代码系列(三)一道有趣的题(创建一个长度为x数组)

原题描述: 不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标 这个问题的一些变种例如给一个长度length和value,返回长度为length值全为value的数组等. 误区 最容易掉入陷阱的: var arr = new Array(100); arr = arr.map(function(item, index) { return index; }); 如果你的答案是这个,恭喜你成功掉入出题人的坑了. 解释 坑在Array(100),可以看看MDN的规范, new

挨踢部落故事汇(5):扩展新IT领域,用代码改变世界

思想驱动未来!"写一个程序,就像是在创造一个东西,我猜每个程序猿都有一颗改变世界的心."--by疯狂学校 本期主人公疯狂学校是个既懂前端又会后台,上的了厅堂下的了厨房的杂食程序员.大学期间他学的是软件工程专业,对于一个基本没怎么接触电脑的他来说,这无疑是一个挑战. 疯狂学校·Java开发 热衷开发,从C#到Java,从前端到后台,无一不通 由于对电脑基础比较差,刚开学时疯狂学校一有空就去机房练打字,这样坚持了两个月,感觉才慢慢追上了同学的水平.在这个过程中他感觉到从量变到质变,感受到自

六行python代码的爱心曲线

喔家ArchiSelf 前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题的本质,解决数据分析和可视化问题,其实也是Python的拿手好戏. 例如,画出指定区间的一个多项式函数: Python 代码如下: import numpy as np import matplotlib.pyplot as plt X = np.linspace(-4, 4

代码质量检查那点事

谁说程序员都是些代码机器.情商堪忧.老婆安排买菜都要IF……ELSE……一下的人群,工作之余,程序员群的段子也丰富的眼花缭乱,大家伙也习惯在群里发点段子,娱乐下自己,也放松下神经. 那日,无意间在一编程群里瞥见一笑话:文艺程序员写代码追求让别人看懂,普通程序员追求让自己看懂,2B程序员则追求让编译器能看懂:半年后再看自己当初写的代码,文艺程序员不知道是自己写的但很容易看懂,普通程序员知道是自己写的但是不太容易看懂,2B程序员埋头看了半天后拍着桌子吼到:“这是哪个SB写的程序!”  相信每个程序员