1.Android Adb 源码分析(一)
2.SELinux定制策略
3.SELinux基本操作
4.手把手教你从源码开始编译Magisk APP和依赖项
Android Adb 源码分析(一)
面对Android项目的调试困境,我们的团队在项目临近量产阶段,将userdebug版本切换为了user版本,并对selinux权限进行了调整。然而,这一转变却带来了大量的湖湘麻将源码bug,日志文件在/data/logs/目录下,因为权限问题无法正常pull出来,导致问题定位变得异常困难。面对这一挑战,我们尝试了两种解决方案。
首先,我们尝试修改data目录的权限,使之成为system用户,以期绕过权限限制,然而数据目录下的logs文件仍保留了root权限,因此获取日志依然需要root权限,这并未解决问题。手机查看页面源码随后,我们找到了一个相对安全的解决办法——通过adb命令的后门机制,将获取root权限的命令修改为adb aaa.bbb.ccc.root。这一做法在一定程度上增加了后门的隐蔽性,避免了被窃取,同时对日常开发的影响也降至最低。
在解决这一问题的过程中,我们对Android ADB的相关知识有了更深入的理解。ADB是Android系统中用于调试的工具,它主要由三部分构成:adb client、adb service和adb daemon。其中,adb client运行于主机端,提供了命令接口;adb service作为一个后台进程,位于主机端;adb daemon则是运行于设备端(实际机器或模拟器)的守护进程。这三个组件共同构成了ADB工具的完整框架,且它们的php网页源码小偷代码主要来源于system/core/adb目录,用户可以在此目录下找到adb及adbd的源代码。
为了实现解决方案二,我们对adb的代码进行了修改,并通过Android SDK进行编译。具体步骤包括在Windows环境下编译生成adb.exe,以及在设备端编译adbd服务。需要注意的是,在进行编译前,需要先建立Android的编译环境。经过对ADB各部分关系及源代码结构的梳理,我们对ADB有了更深入的理解。
在后续的开发过程中,我们将继续深入研究ADB代码,尤其是关于如何实现root权限的功能。如果大家觉得我们的分享有价值,欢迎关注我们的微信公众号“嵌入式Linux”,一起探索更多关于Android调试的任意显系统源码技巧与知识。
SELinux定制策略
从FC4和RHEL4开始,策略版本采用的是1.X,这些系统通常会提供策略源代码的RPM包。随着FC5的升级,策略版本提升到了2.X,引入了模块(module)的概念,使得一套策略源代码能够支持Multi-LevelSecurity(MLS)和non-MLS模式。FC5版本不再直接提供源代码包,但提供如audit2allow、semanage和semodule这样的工具,可用于开发简单的策略模块,如增加新的ROLE功能时,推荐从refpolicy源代码开始。 安装策略源代码时,首先从CVS服务器获取最新的源码,如果遇到编译问题,确保相关SELinux包已更新到最新版本。所有楚留香源码安装后的源代码目录包含三个文件,如sudo.fc定义文件上下文,sudo.te是类型强制执行定义,sudo.if是模块接口定义。在/etc/selinux/refpolicy/src/policy目录下,通过修改build.conf和执行make命令生成SELinux模块,然后将SELINUXTYPE设为refpolicy并重启系统。 在开发程序策略时,一般步骤包括:为文件和端口分配类型标签,设置Type Enforcement(包括Domain迁移和访问许可),加载策略,先在permissive模式下运行程序,检查日志并用audit2allow生成访问许可。不断重复这个过程直到没有违规日志,最后切换到enforcing模式,正式使用策略。对于已有的服务,只需简单修改对应的策略模块,例如使用Azureus下载工具时,需要为它创建一个新的azureus.pp模块,包括定义文件上下文、类型强制执行规则和接口调用。扩展资料
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux® 上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。SELinux基本操作
SELinux,作为一款强化安全的Linux操作系统,其设计初衷是让大多数应用程序无需修改即可在其上运行,只有少数几个经过特别调整的RPM包大约个。它扩展了原有的文件系统如EXT3,并对一些命令进行了扩充,还新增了一些功能。下面是一些基本操作命令的介绍。 1. ls 命令:在命令后添加 -Z 或 --context 可以查看文件的标签,如 ls -Z。 2. chcon:用于更改文件的标签,例如,chcon -t etc_t test.txt 可以更改文件类型。 3. restorecon:当文件在策略中定义后,可以恢复其原始标签。 4. setfiles:类似 chcon,可以对部分文件标签进行更改,无需重置整个系统。 5. fixfiles:通常用于整个文件系统,特别是配合 relabel 使用,系统重启后可能需要调用 fixfiles relabel。 6. star:SELinux下的tar命令替代,支持备份文件及其标签。 7. cp:在拷贝文件时,可以使用 -Z 或 --context=CONTEXT 指定目标文件的安全上下文。 8. find:配合 --context 可以查找特定类型文件。 9. run_init:在sysadm_t权限下启动程序,如Apache,同时确认进程在哪个domain运行。 . id 和 newrole:用来确认用户security context和更改权限。 . getenforce 和 setenforce:分别用于获取和设置SELinux模式。 . sestatus:显示SELinux状态和相关信息。 . Audit2allow:处理日志,将违反策略行为转换为access vector,对安全策略开发有重要作用。 . checkmodule 和 semodule_package:用于编译和创建模块。 . semodule 和 semanage:管理模块和策略的强大工具,semanage尤其适合无策略源代码管理。扩展资料
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux® 上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。手把手教你从源码开始编译Magisk APP和依赖项
Magisk是一款用于定制Android的开源工具,适用于Android 5.0及以上设备。它包含了定制Android的基本功能,如root、引导脚本、SELinux修补、移除AVB2.0/dm-verity/强制加密等。
以下是Magisk编译前的准备步骤:
请注意,由于Magisk项目使用最新版本的Android Gradle插件(AGP),推荐将Android Studio更新至最新版,以防因AGP版本不匹配导致项目导入失败。
接下来,配置步骤如下:
使用Git下载源码时,请确保添加了recurse-submodules参数,以避免在编译时因缺少子模块代码而失败。以Kali Linux虚拟机环境为例,在克隆时若网络不佳导致子模块下载不完全,可通过执行git submodule update -f强制更新。
编译实例演示如下:
若本文对您有所帮助,请慷慨点赞收藏。我是ZeroFreeze,一名Android开发者,致力于分享大量Android、Linux相关技术知识文章。敬请关注,我们下次再见!