Answers:
Linux(或任何类似Unix的系统)中的root只是用户ID为0的用户。su程序(实际上代表“ Switch User”,而不是“ Super User”)是仅一个程序来启动另一个具有不同ID的程序。用户ID而不是启动程序的用户ID(默认情况下为uid 0,即用户root)。Android不使用传统的/ etc / passwd,但仍使用Linux用户ID和组ID来管理权限。
如果要拦截su请求,以便可以要求输入密码或执行其他规则,则需要用自己的su版本替换/ sbin / su。另一种方法是此处描述的方法:http : //www.koushikdutta.com/2008/11/fixing-su-security-hole-on-modified.html,尽管这将要求应用程序在需要时通过触发Intent进行合作。切换用户。
Android安全框架或多或少是这样的:每个已安装的应用程序都以其自己的用户ID(在安装时选择)运行,并且应用程序权限被实现为用户组。
只需输入“ passwd”,即可将我的android设备生根后更改root密码?
Android不使用/ etc / passwd,因此也没有passwd
程序。
生根过程如何进行?我的意思是对手机执行“一键式根”应用程序是什么?
我自己不确定确切的过程,您可能想请植根开发人员。但是,我的猜测是它只是还原了最初阻止开发人员使用setuid 0的安全检查。
而我是开发人员,那么我如何才能找到用于扎根应用程序开发的隐藏API(如iOS)?
由于Android是开源的,因此Android中没有真正隐藏的API。但是,有一些未公开或未公开的API,您可以在Android的源代码中进行浏览。但是,这些API并不是关于根开发的,它们通常是尚未准备就绪或针对特定目的过于本地化的开发中API,这对公共开发人员没有用(或者Google尚未意识到它们的用处) 。您不受限制地使用这些API,但是由于它们不是官方支持的API,因此它们将来可能会消失或破坏向后兼容性。如果您需要使用这些API,请确保您的应用正常运行。
不是开发人员,但据我所知,这是我最好的解释(假设我已理解您的问题)。希望我离目标不远...
我使用过的所有“ rooted” ROM都以root用户身份管理SuperUser应用程序-即,当您启动要以SuperUser特权运行的应用程序时,SuperUser应用程序将提示用户向“ root”应用程序授予这些权限。然后,SuperUser应用程序维护已被授予这些权限的应用程序白名单。
对于控制台仿真器等来说,这是相同的,因此您可以授予对控制台应用程序的访问权限-无需在仿真器中输入密码。
我认为您不必为此担心root密码。
关于隐藏的API-我不认为它们是 “隐藏的”,因为Android OS首先是开源的。