Android- Framework 非Root权限实现修改hosts

news2024/12/23 18:39:05

一、背景

修改system/etc/hosts,需要具备root权限,而且remount后,才能修改,本文介绍非root状态下修改system/etc/hosts方案。

环境:高通 Android 13

二、方案

非root,system/etc/hosts只有只读权限,无权限修改,如果需要修改,需要将system/etc/hosts软链到data目录,然后就可以达到修改的效果。

三、实现步骤

1、实现软链

1.1 将system/etc/hosts软链到/data/misc/hosts,涉及到的文件如下:

android/system/core/rootdir/Android.mk

LOCAL_POST_INSTALL_CMD += ; ln -sf  /data/misc/hosts $(TARGET_OUT_ETC)/hosts

1.2 屏蔽原来的system/etc/hosts 拷贝动作,涉及到的mk文件修改如下

device/generic/uml/uml.mk

device/generic/goldfish/minimal_system.mk

build/make/target/product/base_system.mk

device/generic/trusty/qemu_trusty_base.mk

在以上文件中,找到system/core/rootdir/etc/hosts:system/etc/hosts语句,并删除或者注释掉,下面列出其中一个uml.mk的修改方法,其他类似:

PRODUCT_COPY_FILES += \
    system/core/rootdir/init.usb.rc:system/etc/init/hw/init.usb.rc \
    system/core/rootdir/init.usb.configfs.rc:system/etc/init/hw/init.usb.configfs.rc \
    # system/core/rootdir/etc/hosts:system/etc/hosts

1.3 1.2中拷贝时机不对,因此,参考env.txt的拷贝实现逻辑,在qssi/LA.QSSI.13.0/LINUX/android/vendor/qcom/proprietary/prebuilt_HY11/target/product/qssi/prebuilt.mk中实现system/etc/hosts拷贝,这个修改很关键,将决定是否能将system/etc/hosts编译到out目录下

PRODUCT_COPY_FILES += vendor/qcom/proprietary/prebuilt_HY11/target/product/qssi/system/etc/hosts:system/etc/hosts

编译完后,可以不用刷机,先查看是否软链成功,软链成功,out目录如下将可以查看如下(不同平台,目录可能不一样):

1.4 根据上面的修改后,原来的system/etc/hosts是软链到data/misc/hosts,为了兼容以前的system/etc/hosts中的值,因此,需要开机时,检测 一下data/misc/hosts中是否有该文件,如果没有,需要启动脚本,写入初始值一次,详细实现请看下面

2、开机启动脚本

原理:定义一个开机自启一次service,检测data/misc/hosts是否存在

2.1 external 目录下,新建一个copyhost目录

2.2  定义一个Android.mk,/external/copyhost/Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := copyhost
LOCAL_MODULE := copyhost
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/bin
LOCAL_INIT_RC := copyhost.rc
include $(BUILD_PREBUILT)

2.3 定义一个copyhost脚本,/external/copyhost/copyhost

#!/system/bin/sh

filePath="/data/misc/hosts"
TAG="copyhost"                                                                                                         
echo "start copyhost"                                                                                                  
log -t "$TAG" "begin copyhost"

if [ ! -f "$filePath" ]; then
	log -t "$TAG" "$filePath not exit,write value"
	echo "文件不存在:$file"
	echo "127.0.0.1       localhost" >$filePath
	echo "::1             ip6-localhost" >> $filePath
	echo "127.0.0.1       hostname" >> $filePath
else
    echo "文件存在:$file"
	log -t "$TAG" "$filePath exit"
fi

2.4 定义copyhost.rc,/external/copyhost/copyhost.rc

service copyhost /system/bin/sh /system/bin/copyhost
    class main
    user root
    group root
    disabled
	oneshot
    seclabel u:r:init:s0

on property:sys.boot_completed=1
    start copyhost 

2.5 将copyhost 服务添加到构建模块,vendor/qcom/proprietary/prebuilt_HY11/target/product/qssi/prebuilt.mk

PRODUCT_PACKAGES += copyhost

3、编译镜像验证

四、host简介

1、概念

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”

2、修改host作用

强制指定域名的 IP,加快域名解析 (省略了联网查询 DNS 的步骤),也能绕过 DNS 污染与劫持。
为局域网某些 IP 的机器配置一个“网址别名”,方便自己记忆和访问。比如配置一个 nas.com 访问局域网里的 NAS;gongsi 访问公司网站等等。
将域名指向到不可访问的IP地址,达到屏蔽不健康网站、屏蔽垃圾广告网址的效果;同理也能禁止系统、软件、网站访问某些指定的网址;
开发或测试应用时,利用 hosts 将域名临时指向到测试服务器IP,可以方便自己测试,同时又不影响他人和线上的应用。

附补丁链接:https://download.csdn.net/download/banzhuantuqiang/89503999

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux源码阅读笔记08-进程调度API系统调用案例分析

kthread_create_on_node kthread_create_on_node函数功能&#xff1a;指定存储节点创建新内核线程。源码如下&#xff1a; 操作实战 #include <linux/module.h> #include <linux/pid.h> #include <linux/sched.h> #include <linux/kthread.h> #inclu…

Docker 镜像导出和导入

docker 镜像导出 # 导出 docker 镜像到本地文件 docker save -o [输出文件名.tar] [镜像名称[:标签]] # 示例 docker save -o minio.tar minio/minio:latest-o 或 --output&#xff1a;指定导出文件的路径和名称[镜像名称[:标签]]&#xff1a;导出镜像名称以及可选的标签 dock…

一招解决 | IP地址访问怎么实现https

没有域名的情况下&#xff0c;使用IP地址实现HTTPS访问是可以的&#xff0c;但相比使用域名会有些许限制&#xff0c;需要通过部署专用于IP地址的SSL/TLS证书来实现。 IP地址实现HTTPS访问的过程与使用域名类似&#xff0c;但有几个关键的区别。以下是使用IP地址实现HTTPS访问…

CrimsonEDR:一款恶意软件模式识别与EDR策略评估工具

关于CrimsonEDR CrimsonEDR是一个功能强大的开源项目&#xff0c;该项目旨在帮助广大研究人员识别特定的恶意软件模式&#xff0c;以此来优化终端检测与响应&#xff08;EDR&#xff09;的策略方案。通过使用各种不同的检测方案&#xff0c;可以加深开发人员与研究人员加深对安…

Nginx 配置文件

Nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件&#xff1a;include conf.d/*.conf 全局配置 nginx 有多种模块 核心模块&#xff1a;是 Nginx 服务器正常运行必不可少的模块&#xff0c;提供错误日志记录 、配置文件解析 、事件驱动机…

python基础语法 004-2流程控制- for遍历

1 遍历 1.1 什么是遍历&#xff1f; 可以遍历的元素&#xff1a;字符串、列表、元组、字典、集合字符串是可以进行for 循环。&#xff08;容器对象&#xff0c;序列&#xff09;可迭代对象iterable 例子&#xff1a; 1 &#xff09;、for遍历字符串&#xff1a; name xiao…

Ubuntu20.04 安装 cudatookit 12.2 + cudnn 安装

最简约的部署Ubuntu20.04深度学习环境的教程 1. 安装Ubuntu20.04 系统 B站详细的安装教程 简约安装版 2. 安装Nvidia显卡驱动 我参考了各种资料&#xff0c;重装系统&#xff0c;完美解决开机显示器黑屏无法进入桌面的情况 黑屏问题主要是由linux内核更新导致&#xff0c;…

携程礼品卡能转出去吗?

携程的卡好像只能在旅游的时候用 像买车票啊&#xff0c;机票啊&#xff0c;酒店&#xff0c;景点门票啥的&#xff0c;但是如果我没有出游计划的话 这个卡是不是就要被闲置下来&#xff1f; 这个问题一直让我感到很苦恼&#xff0c;还好有收卡云&#xff0c;不然我的携程卡…

你还搞不懂串口的格式转换问题吗?

相信大多数人在使用串口传输不同单片机之间的数据时都会运到数据格式怎么对应起来的问题&#xff0c;今天我们就来聊聊&#xff01; 在开始之前我插一个内容&#xff0c;就是不同的单片机之间的电平可能不相同&#xff0c;是不能直接使用杜邦线连接通信的&#xff0c;需要进行电…

centos7搭建zookeeper 集群 1主2从

centos7搭建zookeeper 集群 准备前提规划防火墙开始搭建集群192.168.83.144上传安装包添加环境变量修改zookeeper 的配置 192.168.83.145 和 192.168.83.146 配置 启动 集群 准备 vm 虚拟机centos7系统zookeeper 安装包FinalShell或者其他shell工具 前提 虚拟机安装好3台cen…

私域打造朋友圈秘诀

内容比例把控 朋友圈内容应遵循9:1原则&#xff0c;即90%的人设内容与10%的营销内容。 朋友圈的内容比例非常关键。大部分内容应聚焦在展示个人形象和生活&#xff0c;以此建立信任&#xff0c;而仅有10%的内容用于营销&#xff0c;实现商业价值。 人设内容构建 通过生活圈、工…

从新手到高手:Scala函数式编程完全指南,Scala 数据类型(4)

1、Scala 数据类型 Scala 与 Java有着相同的数据类型&#xff0c;下表列出了 Scala 支持的数据类型&#xff1a;

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档&#xff1a;Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…

多域名聊天:TTKefu如何助力企业实现高效沟通与灵活扩展

在当今数字化时代&#xff0c;企业与客户之间的沟通方式已经发生了翻天覆地的变化。随着互联网的普及和移动设备的普及&#xff0c;企业越来越依赖于线上聊天工具来与客户建立联系。而在这个背景下&#xff0c;TTKefu作为一款先进的多域名聊天工具&#xff0c;凭借其强大的功能…

大促前夕即高点,综合电商平台的“稀缺”魔法正在消失?

新一期618大促早已结束良久了&#xff0c;但似乎其产生的余韵却仍旧未消散。 从最直观的资本市场走势来看&#xff0c;自这一波618大促陆续开展之后&#xff0c;包括京东、阿里巴巴、拼多多等港美股股价就一改此前的上行态势&#xff0c;持续下滑至今。 事实上&#xff0c;早…

JAVA各版本-安装教程

目录 Java安装包下载 Java安装步骤 Java环境配置 Java安装包下载 到Oracle官网下载自己需要的版本 Oracle Java下载&#xff1a;Java Archive | Oracle Hong Kong SAR, PRC 下拉选择自己需要的版本&#xff08;本教程以Windows环境下&#xff0c;JAVA11为例&#xff09; 注…

MySQL的简介和安装目录

今日总结到此结束&#xff0c;拜拜&#xff01;

Chapter 8 Feedback

Chapter 8 Feedback 这一章我们介绍feedback 反馈运放的原理. 负反馈是模拟电路强有力的工具. 8.1 General Considerations 反馈系统如下图所示 Aolamp open-loop gain即开环增益. Aolxo/xi β \beta β 是 feedback factor, 注意方向. β x f x o \beta\frac{x_{f}}{x_{o…

香港优才计划真的要烂尾了吗?该如何防止这种情况发生!

香港优才计划真的要烂尾了吗&#xff1f;该如何提前应对避免烂尾&#xff01; 香港优才计划的“烂尾”说法主要源于对大量申请者可能面临的续签和转永居挑战的担忧。虽然2023年申请人数激增&#xff0c;但并非所有获得身份的人都能顺利过渡到永久居留。 以下是几个关键点&…

解析QAnything启动命令过程

一.启动命令过程日志 启动命令bash ./run.sh -c local -i 0 -b hf -m Qwen-1_8B-Chat -t qwen-7b-chat。输入日志如下所示&#xff1a; rootMM-202203161213:/mnt/l/20230918_RAG方向/QAnything# bash ./run.sh -c local -i 0 -b hf -m Qwen-1_8B-Chat -t qwen-7b-chat From …