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

一、背景

修改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/shfilePath="/data/misc/hosts"
TAG="copyhost"                                                                                                         
echo "start copyhost"                                                                                                  
log -t "$TAG" "begin copyhost"if [ ! -f "$filePath" ]; thenlog -t "$TAG" "$filePath not exit,write value"echo "文件不存在:$file"echo "127.0.0.1       localhost" >$filePathecho "::1             ip6-localhost" >> $filePathecho "127.0.0.1       hostname" >> $filePath
elseecho "文件存在:$file"log -t "$TAG" "$filePath exit"
fi

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

service copyhost /system/bin/sh /system/bin/copyhostclass mainuser rootgroup rootdisabledoneshotseclabel u:r:init:s0on property:sys.boot_completed=1start 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.mzph.cn/pingmian/39050.shtml

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

相关文章

机器学习python实践——关于管道模型Pipeline和网格搜索GridSearchCV的一些个人思考

最近在利用python跟着指导书进行机器学习的实践,在实践中使用到了Pipeline类方法和GridSearchCV类方法,并且使用过程中发现了一些问题,所以本文主要想记录并分享一下个人对于这两种类方法的思考,如果有误,请见谅&#…

【微服务】微服务之Feign 与 Ribbon

文章目录 强烈推荐引言优点Feign示例什么是Ribbon?Ribbon 的优点Netflix Feign 和 Ribbon整合Feign 与 Ribbon 的关系Feign 与 Ribbon 结合使用的示例配置文件(application.yml)说明: Feign 与 Ribbon 结合使用的应用场景1. 动态服…

物联网的技术和应用有哪些?

随着科技的飞速发展,物联网已经成为连接世界的重要纽带,塑造着我们未来的生活。我们一起深入探索物联网的前沿技术和前瞻性应用,一窥未来的可能性。 获取物联网解决方案,YesPMP平台一站式物联网开发服务。 提示:智慧家…

(2024)docker-compose实战 (3)部署mysql

前言 本次仅搭建单一的mysql服务.如果不确定镜像的配置文件目录, 可以通过 docker inspect 镜像名 来查看具体的配置信息.MYSQL_ROOT_HOST: % 该语句可以允许mysql进行远程连接.使用docker-compose.yaml时, 请自行去除注释. 目录结构 web/ /web/目录 | ├─ mysql/…

Python后端学习路线

学习Python后端开发框架是一个系统的过程,比较推荐的学习路线如下(假设已经具备Python和MySQL基础,但是对于后端框架不熟悉): 1. 复习并深化Python基础知识 数据结构与算法:列表、字典、集合、元组等。面…

图形的搭建

例一: 输入描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。 输出描述: 针对每行输入,输出用“*”组成的X形图案。 示例一&…

Java微服务架构设计与实现详解

Java微服务架构设计与实现详解 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java微服务架构的设计与实现,帮助您理解如何利用J…

爬数据是什么意思?

爬数据的意思是:通过网络爬虫程序来获取需要的网站上的内容信息,比如文字、视频、图片等数据。网络爬虫(网页蜘蛛)是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 学习一些爬数据的知识有什么用呢&#x…

IPIDEA代理IP助力高效数据采集

IPIDEA代理IP助力高效数据采集 文章目录 IPIDEA代理IP助力高效数据采集📑前言一、爬虫数据采集痛点二、代理IP解决爬虫痛点2.1 为什么可以2.2 选择代理IP的关键因素 三、IPIDEA海外IP代理的优势3.1 IPIDEA的显著优势3.2 IPIDEA的代理类型及应用 四、IPIDEA爬虫实战4…

Fragment+Viewpage2+FragmentStateAdapter实现滑动式标签布局

大家好,我是网创有方,今天记录下标签布局的实现方法,先看下效果图。 第一步:编写一个activity或者fragment。内含有一个viewpager2的适配器,适配器类型为FragmentStateAdapter。 ​ public class MediaCreateFragment…

VideoView视频组件

简介 VideoView 在Android中是一个用户界面组件,它允许开发者在Android设备的屏幕上播放视频文件。它是Android SDK的一部分,位于android.widget包中。VideoView提供了一种简单的方法来嵌入和控制视频播放,包括设置视频源、开始、暂停、 seek…

CV每日论文--2024.6.27

1、Text-Animator: Controllable Visual Text Video Generation 中文标题:Text-Animator:可控视觉文本视频生成 简介:视频生成是各行业中具有重要价值但同时也极具挑战性的任务,例如在游戏、电子商务和广告领域。在文本到视频(T2V)生成中,一…

前端Bug 修复手册

1.前端长整数精度丢失问题 (1)问题 在前后端联调时,发现后端有一个接口返回的值和前端页面上展示的值不一致。 后端Java实现的接口如下,返回一个json格式的大整数 123456789123456789: 但是前端请求这个接口后&…

Spring每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别?Spring Boot的优点Spring IoC是什么?说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值?Spring Boot自动装配原理Spring MVC工作原…

Charles抓包工具系列文章(三)-- 接口映射工具(Map Remote和Map Local)

一、背景 前文的http请求都是静态的,像compose a new request,仅适用于接口的自测。 回放repeat 一个 http 请求,也无法做到动态调试。 这里的动态还是静态,是站在客户端的角度,数据是实时的,可调试的。 …

提升入住率|智慧酒店解决方案,打造有温度的居住体验!

近年来,智慧酒店被越来越多的人关注,由生物识别、物联网技术和互联网技术融合产生的智慧酒店解决方案,不仅可以提升顾客在酒店的入住体验,还可以帮助酒店降低运营成本,这也让越来越的酒店选择了智慧酒店的赛道&#xf…

深入解析Linux的使用(下)

深入解析Linux的使用(下) 在上一篇文章中,我们介绍了Linux的基础知识,包括基本命令、文件系统和权限管理。本文将继续探讨软件安装和系统管理等高级操作。 4. 软件安装 4.1 使用包管理器 不同的Linux发行版使用不同的包管理器…

有哪些常见的网络带宽和延迟问题

网络带宽和延迟问题是影响网络性能和用户体验的重要因素。以下是一些常见的网络带宽和延迟问题,结合参考文章中的相关数字和信息进行归纳和说明: 一、网络带宽问题 带宽不足 问题描述:当网络连接的带宽不足以满足当前的网络流量需求时&…

人工智能--目标检测

欢迎来到 Papicatch的博客 文章目录 🍉引言 🍉概述 🍈目标检测的主要流程通常包括以下几个步骤 🍍数据采集 🍍数据预处理 🍍特征提取 🍍目标定位 🍍目标分类 🍈…

Oracle PL / SQL约束

约束是表及其列的规则,用于约束可以插入,更新或删除的数据的方式和数据。 约束对列和表都可用。 列约束 列可以具有定义可以将什么值列表输入到其中的规则。 NOT NULL约束意味着列必须具有值。 它不能为未知,或为空。 下表使用DDL创建具…