当前位置: 首页 > news >正文

新增网站和新增接入海南手机网站建设公司哪家好

新增网站和新增接入,海南手机网站建设公司哪家好,网站建设前期策划方案,用wordpress建站一定要先有域名和空间吗开发平台基本信息 芯片: 高通SM6225版本: Android 13kernel: msm-5.15 问题描述 刚刚从Framework踏入性能的小殿堂#xff0c;User版本默认是不会开启root权限的#xff0c;而且一般调试需要设置一下CPU GPU DDR performance模式或者修改一些schedule util等调核调频节点去…开发平台基本信息 芯片: 高通SM6225版本: Android 13kernel: msm-5.15 问题描述 刚刚从Framework踏入性能的小殿堂User版本默认是不会开启root权限的而且一般调试需要设置一下CPU GPU DDR performance模式或者修改一些schedule util等调核调频节点去对比复测userdebug版本的话本身整机性能就比user卡很多有时候使用userdebug去复测会对测试结果有较大影响与user测试结果存在很大差距。 基于以上userroot闪亮登场性能与user一致而且还有root和remount权限可以自主执行修改节点或者push等操作。话不多说让我们进入整体看看如何实现userrootremount. 基线代码判断逻辑 1.adb代码会检测相关属性 ro.secure ro.debuggable (通过调用__android_log_is_debuggable()获取返回值) 2.代码path 2.1 adbd启动时检查属性决定是否进行权限降级到AID_SHELL pathsystem/adb/core/daemon/main.cpp line:121 if (should_drop_privileges()){ … … 2.2 system/adb/core/下搜索__android_log_is_debuggable() 3.修改思路 3.1 should_drop_privileges() 修改强制返回false保持adb root用户级别 3.2 __android_log_is_debuggable() 返回true   packages/modules/adb/daemon/main.cpp static bool should_drop_privileges() {// The properties that affect adb root and adb unroot are ro.secure and// ro.debuggable. In this context the names dont make the expected behavior// particularly obvious.//// ro.debuggable:// Allowed to become root, but not necessarily the default. Set to 1 on// eng and userdebug builds.//// ro.secure:// Drop privileges by default. Set to 1 on userdebug and user builds.bool ro_secure android::base::GetBoolProperty(ro.secure, true);bool ro_debuggable __android_log_is_debuggable();// Drop privileges if ro.secure is set...bool drop ro_secure;std::string build_prop android::base::GetProperty(ro.build.type, );bool adb_build_root (build_prop userdebug);if (adb_build_root) {return false;}// ... except adb root lets you keep privileges in a debuggable build.std::string prop android::base::GetProperty(service.adb.root, );bool adb_root (prop 1);bool adb_unroot (prop 0);if (ro_debuggable adb_root) {drop false;}// ... and adb unroot lets you explicitly drop privileges.if (adb_unroot) {drop true;}return drop; } 解决方案 1.注释掉DropCapabilitiesBoundingSet 说明这个文件负责创建应用程序进程并设置它们的权限和能力。需要注释掉DropCapabilitiesBoundingSet函数中的代码以防止它删除adbd进程的任何能力。 文件路径qssi/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp 详细修改 --- a/core/jni/com_android_internal_os_Zygote.cppb/core/jni/com_android_internal_os_Zygote.cpp-681,7 681,7 }static void DropCapabilitiesBoundingSet(fail_fn_t fail_fn) { - for (int i 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) 0; i) {;/*for (int i 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) 0; i) {;if (prctl(PR_CAPBSET_DROP, i, 0, 0, 0) -1) {if (errno EINVAL) {ALOGE(prctl(PR_CAPBSET_DROP) failed with EINVAL. Please verify -690,7 690,7 fail_fn(CREATE_ERROR(prctl(PR_CAPBSET_DROP, %d) failed: %s, i, strerror(errno)));}} - }}*/}static void SetInheritable(uint64_t inheritable, fail_fn_t fail_fn) { 2.启用abdb root模式添加remount保持adb root用户级别 2.1 启用adbd进程的root模式并添加remount到required中 说明这个文件定义了adbd模块的编译选项和依赖项。需要添加-DALLOW_ADBD_ROOT1到cflags中以启用adbd进程的root模式并添加remount到required中以允许adbd进程重新挂载系统分区。 文件路径qssi/packages/modules/adb/Android.bp 详细修改 --- a/Android.bpb/Android.bp-50,6 50,7 -Wvla,-DADB_HOST1, // overridden by adbd_defaults-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION1,-DALLOW_ADBD_ROOT1,],cpp_std: experimental, -112,7 113,14 name: adbd_defaults,defaults: [adb_defaults],- cflags: [-UADB_HOST, -DADB_HOST0],cflags: [-UADB_HOST,-DADB_HOST0,-UALLOW_ADBD_ROOT,-DALLOW_ADBD_ROOT1,-DALLOW_ADBD_DISABLE_VERITY,-DALLOW_ADBD_NO_AUTH,],} cc_defaults {name: host_adbd_supported,host_supported: true,target: {linux: {enabled: true,host_ldlibs: [ -606,6 614,8 libcrypto_utils,libcutils_sockets,// APEX dependencies.libadbd_auth,libadbd_fs,libcrypto,liblog,], required: [remount,],target: {android: {srcs: [daemon/abb_service.cpp,daemon/framebuffer_service.cpp,daemon/mdns.cpp,daemon/restart_service.cpp,],shared_libs: [libmdnssd, 2.2 保持adb root用户级别 说明这个文件是adbd进程的主要入口点。我们需要修改should_drop_privileges函数让它总是返回false以防止它降低adbd进程的权限。should_drop_privileges() 修改强制返回false保持adb root用户级别 文件路径qssi/packages/modules/adb/daemon/main.cpp 详细修改 --- a/daemon/main.cppb/daemon/main.cpp-74,6 74,7 //// ro.secure:// Drop privileges by default. Set to 1 on userdebug and user builds.return false;bool ro_secure android::base::GetBoolProperty(ro.secure, true);bool ro_debuggable __android_log_is_debuggable(); 3.允许adbd进程关闭Verity检查,关闭selinux 3.1 允许adbd进程关闭Verity检查 说明这个文件定义了fs_mgr模块的编译选项和依赖项。fs_mgr模块负责管理设备上的文件系统。我们需要修改-DALLOW_ADBD_DISABLE_VERITY0为-DALLOW_ADBD_DISABLE_VERITY1以允许adbd进程关闭Verity检查。 文件路径qssi/system/core/fs_mgr/Android.bp 详细修改 --- a/fs_mgr/Android.bpb/fs_mgr/Android.bp-109,7 109,8 libfstab,],cppflags: [ - -DALLOW_ADBD_DISABLE_VERITY0,-UALLOW_ADBD_DISABLE_VERITY,-DALLOW_ADBD_DISABLE_VERITY1,],product_variables: {debuggable: {-237,7 238,8 fs_mgr_remount.cpp,],cppflags: [ - -DALLOW_ADBD_DISABLE_VERITY0,-UALLOW_ADBD_DISABLE_VERITY,-DALLOW_ADBD_DISABLE_VERITY1,],product_variables: {debuggable: { 3.2 允许init进程编译方式 说明这个文件定义了init模块的编译选项和依赖项。init模块是设备启动时运行的第一个进程负责初始化系统服务和属性。 -DALLOW_FIRST_STAGE_CONSOLE1允许init进程在第一阶段打开控制台输出 -DALLOW_LOCAL_PROP_OVERRIDE1允许init进程覆盖本地属性 -DALLOW_PERMISSIVE_SELINUX1允许init进程设置SELinux为permissive模式 -DREBOOT_BOOTLOADER_ON_PANIC1允许init进程在发生内核崩溃时重启到bootloader模式 -DWORLD_WRITABLE_KMSG1允许init进程设置kmsg文件为可写 -DDUMP_ON_UMOUNT_FAILURE1允许init进程在卸载分区失败时生成内存转储 -DSHUTDOWN_ZERO_TIMEOUT1允许init进程在收到关机命令时立即执行 文件路径qssi/system/core/init/Android.bp 详细修改 --- a/init/Android.bpb/init/Android.bp-136,13 136,20 -Wno-unused-parameter,-Werror,-Wthread-safety, - -DALLOW_FIRST_STAGE_CONSOLE0, - -DALLOW_LOCAL_PROP_OVERRIDE0, - -DALLOW_PERMISSIVE_SELINUX0, - -DREBOOT_BOOTLOADER_ON_PANIC0, - -DWORLD_WRITABLE_KMSG0, - -DDUMP_ON_UMOUNT_FAILURE0, - -DSHUTDOWN_ZERO_TIMEOUT0,-UALLOW_FIRST_STAGE_CONSOLE,-DALLOW_FIRST_STAGE_CONSOLE1,-UALLOW_LOCAL_PROP_OVERRIDE,-DALLOW_LOCAL_PROP_OVERRIDE1,-UALLOW_PERMISSIVE_SELINUX,-DALLOW_PERMISSIVE_SELINUX1,-UREBOOT_BOOTLOADER_ON_PANIC,-DREBOOT_BOOTLOADER_ON_PANIC1,-UWORLD_WRITABLE_KMSG,-DWORLD_WRITABLE_KMSG1,-UDUMP_ON_UMOUNT_FAILURE,-DDUMP_ON_UMOUNT_FAILURE1,-USHUTDOWN_ZERO_TIMEOUT,-DSHUTDOWN_ZERO_TIMEOUT1,-DINIT_FULL_SOURCES,-DINSTALL_DEBUG_POLICY_TO_SYSTEM_EXT0,],-394,13 401,20 -Wextra,-Wno-unused-parameter,-Werror, - -DALLOW_FIRST_STAGE_CONSOLE0, - -DALLOW_LOCAL_PROP_OVERRIDE0, - -DALLOW_PERMISSIVE_SELINUX0, - -DREBOOT_BOOTLOADER_ON_PANIC0, - -DWORLD_WRITABLE_KMSG0, - -DDUMP_ON_UMOUNT_FAILURE0, - -DSHUTDOWN_ZERO_TIMEOUT0,-UALLOW_FIRST_STAGE_CONSOLE,-DALLOW_FIRST_STAGE_CONSOLE1,-UALLOW_LOCAL_PROP_OVERRIDE,-DALLOW_LOCAL_PROP_OVERRIDE1,-UALLOW_PERMISSIVE_SELINUX,-DALLOW_PERMISSIVE_SELINUX1,-UREBOOT_BOOTLOADER_ON_PANIC,-DREBOOT_BOOTLOADER_ON_PANIC1,-UWORLD_WRITABLE_KMSG,-DWORLD_WRITABLE_KMSG1,-UDUMP_ON_UMOUNT_FAILURE,-DDUMP_ON_UMOUNT_FAILURE1,-USHUTDOWN_ZERO_TIMEOUT,-DSHUTDOWN_ZERO_TIMEOUT1,-DLOG_UEVENTS0,-DSEPOLICY_VERSION30, // TODO(jiyong): externalize the version number], 3.3 关闭selinux 将enforce置为Permissive 说明这个文件实现了一些与SELinux相关的函数。我们需要修改IsEnforcing函数让它总是返回false以防止它检查系统属性或内核参数是否设置了SELinux的强制执行。 文件路径qssi/system/core/init/selinux.cpp 详细修改 --- a/init/selinux.cppb/init/selinux.cpp-123,6 123,7 }bool IsEnforcing() {return false;// close selinux for user version with root#if defined(LCT_BUILD_TYPE_FACTORY)return false; 4.user 版本不允许 permissive domains 说明user 版本启用 overlayfs 来装载 remount 对应分区 user 版本不允许 permissive domains 文件路径system/sepolicy/Android.mk 详细修改 --- a/Android.mkb/Android.mk-613,7 613,7 ifneq ($(filter address,$(SANITIZE_TARGET)),)local_fc_files $(wildcard $(addsuffix /file_contexts_asan, $(PLAT_PRIVATE_POLICY)))endif -ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) ifneq (,$(filter user userdebug eng,$(TARGET_BUILD_VARIANT)))local_fc_files $(wildcard $(addsuffix /file_contexts_overlayfs, $(PLAT_PRIVATE_POLICY)))endif 5.打开 USB 调试时默认授权默认user版本编译remount。 5.1 默认开启usb调试 说明默认开启usb调试。 文件路径build/make//core/main.mk 详细修改 --- a/core/main.mkb/core/main.mk-365,11 365,11 tags_to_install :ifneq (,$(user_variant))# Target is secure in user builds. - ADDITIONAL_SYSTEM_PROPERTIES ro.secure1ADDITIONAL_SYSTEM_PROPERTIES ro.secure0ADDITIONAL_SYSTEM_PROPERTIES security.perf_harden1ifeq ($(user_variant),user) - ADDITIONAL_SYSTEM_PROPERTIES ro.adb.secure1ADDITIONAL_SYSTEM_PROPERTIES ro.adb.secure0endififeq ($(user_variant),userdebug)-377,7 377,7 tags_to_install debugelse# Disable debugging in plain user builds. - enable_target_debugging :enable_target_debugging : trueendif# Disallow mock locations by default for user builds-399,7 399,7 ADDITIONAL_SYSTEM_PROPERTIES dalvik.vm.lockprof.threshold500else # !enable_target_debugging# Target is less debuggable and adbd is off by default - ADDITIONAL_SYSTEM_PROPERTIES ro.debuggable0ADDITIONAL_SYSTEM_PROPERTIES ro.debuggable1endif # !enable_target_debugging## eng ## 5.2 添加remount 说明user版本默认不会编译remount,即system/bin/remount不存在需要将remount添加到默认编译列表里面。 文件路径build/make/target/product/base_system.mk 详细修改 --- a/target/product/base_system.mkb/target/product/base_system.mk-287,6 287,7 wificond \wifi.rc \wm \remount \ifneq ($(TARGET_HAS_LOW_RAM), true)PRODUCT_PACKAGES \-388,7 389,6 procrank \profcollectd \profcollectctl \ - remount \servicedispatcher \showmap \sqlite3 \ 总结 通过以上的修改我们可以在Android 13上实现root功能。 希望这篇博客能对你有所帮助如果你有任何问题或建议欢迎留言讨论。谢谢
http://www.w-s-a.com/news/839584/

相关文章:

  • 做国外单的网站叫什么海南省海口市网站建设
  • 杭州响应式网站案例wordpress5.2.2
  • 网站建设运营维护合同wordpress资源搜索插件
  • 国外网站流量查询东莞网站建设教程
  • 餐饮类网站建设达到的作用东莞工程建设交易中心网
  • 网站设计 知识产权湖北网站建设xiduyun
  • 猫咪网站模版下载中国风 古典 红色 网站源代码
  • 个人网站备案模板制作网站首页
  • 潍坊正规建设网站网站建设设计作业
  • 推荐一下网站谢谢辽宁住房城乡建设部官方网站
  • 网站文件大小英选 网站开发
  • 济南建网站哪家好wordpress编辑器排行
  • 在福州做搬家网站多少钱画册设计网站有哪些
  • 如何让别人浏览我做的网站哪些方法可以建设网站
  • 网站建设与管理网络推广的优点
  • 美食网站的设计与制作做网站的电销话术
  • 中国档案网站建设现状研究陕西建设厅执业资格注册中心网站
  • 网站建设的内容管理怎么用ps切片在dw里做网站
  • 建设婚恋网站用什么搭建涿州网站开发
  • 做知识内容的网站与app哈尔滨哪里有做网站的
  • 青岛企业网站建站模板百度网站建设推广
  • 做360网站中保存的图片存在哪里个人建立网站要多少钱
  • 网站安装部署无锡做网站的公司
  • 怎么将网站做成小程序安装wordpress到服务器
  • 企业网站建设的四大因素沈阳网站建设招标公司
  • wordpress仿站开发公司网站策划宣传
  • 金乡县网站开发网站开发三个流程
  • qq空间网站是多少纺织网站建设方案
  • 建设微网站项目报告网站优化难吗
  • 做网站需要自己上传产品吗企业网站系统设计