码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。


    一、执行ls -l /system/bin/ 查看一下用户和权限。

    二、这些权限在哪里修改呢? 默认编译system/bin/可执行程序赋予权限的地方system\core\libcutils\fs_config.cpp 文件里面的android_files

    三、使用实例,只有root和系统app权限才能执行某个命令,如上面的sn_writer命令,只有系统app和root权限才能运行。

     

    1. package com.giada.sn_writer;
    2. import androidx.appcompat.app.AppCompatActivity;
    3. import android.os.Bundle;
    4. import android.view.View;
    5. import android.widget.Button;
    6. import android.widget.EditText;
    7. import java.io.BufferedReader;
    8. import java.io.IOException;
    9. import java.io.InputStream;
    10. import java.io.InputStreamReader;
    11. public class MainActivity extends AppCompatActivity {
    12. private Button m_Button;
    13. private EditText m_EditText;
    14. @Override
    15. protected void onCreate(Bundle savedInstanceState) {
    16. super.onCreate(savedInstanceState);
    17. setContentView(R.layout.activity_main);
    18. m_Button=(Button)findViewById(R.id.button);
    19. m_EditText = (EditText) findViewById(R.id.textView);
    20. m_Button.setOnClickListener(new Button.OnClickListener() {
    21. public void onClick(View v)
    22. {
    23. String str = m_EditText.getText().toString();
    24. sn_writer_command("sn_writer write-key "+ str);
    25. // playRunTime("sn_writer write-key "+ str);
    26. }
    27. });
    28. }
    29. public static String sn_writer_command(String cmd) {
    30. try {
    31. //String keyCommand = "setprop " + propName;
    32. Runtime runtime = Runtime.getRuntime();
    33. Process proc = runtime.exec(cmd);
    34. } catch (IOException e) {
    35. e.printStackTrace();
    36. }
    37. return cmd;
    38. }
    39. private String playRunTime(String cmd) throws Exception
    40. {
    41. // String cmd = "adb version";
    42. String ret = null;
    43. Process p = Runtime.getRuntime().exec(cmd);
    44. InputStream is = p.getInputStream();
    45. BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    46. String line; while ((line = reader.readLine()) != null)
    47. {
    48. //tv_result.append(line + "");
    49. ret = line;
    50. }
    51. p.waitFor();
    52. is.close();
    53. reader.close();
    54. p.destroy();
    55. return ret;
    56. }
    57. }

    四、有价值的参考文章

    [RK3288][Android6.0] 调试笔记 --- 修改默认system/bin/下可执行程序权限_KrisFei的博客-CSDN博客_android system/bin 权限

  • 相关阅读:
    离散数学_十章-图 ( 6 ):欧拉通路与哈密顿通路
    中国青年报APP设备注册
    Jvm之内存泄漏
    走进Redis之配置文件的修改&使用
    【论文解读】Parameter-Efficient Transfer Learning for NLP
    Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第1章 Vue.js基础入门 1.6 事件修饰符
    springboot项目讲解
    Python数据特征分析1-分布分析(极差,频率直方图等)
    拼多多启动第四届农货节:携手10万涉农店铺,与8.8亿消费者共享“秋收喜悦”
    高可用之战:Redis Sentinal(哨兵模式)
  • 原文地址:https://blog.csdn.net/xiaowang_lj/article/details/133701287
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号