文章目录
前言
一、Android 进程读取文件所需的权限
二、fopen 打开文件标志位
三、验证文件权限
前言
一、Android 进程读取文件所需的权限
通过 注入工具 , 将 libbridge.so 注入到远程进程 后 , 远程进程中 , 会 为 libbridge.so 动态库分配一块内存 , 并将其运行起来 ;
远程进程 中 注入的 动态库 , 需要 对文件进行读写操作 , 如读取某个文件目录 , 向某个路径上写入 内存数据 / 日志文件 等内容 ;
文件读写操作 , 使用 标准文件读写函数 即可 , 如 fopen , fwrite , fread 等函数 ;
在 Android 进程中 , 对文件进行读写操作 , 最重要的是 权限问题 , 如果要访问 /data/system/debug/command.json 文件 , 需要确定是否有访问该文件的权限 , 并且还要有该文件的上级目录的访问权限 , 上级目录有 :
/data/system/debug/
/data/system/
/data/
/
如果没有上级目录的访问权限 , 解析整个路径时 , 会因为某个上级目录没有权限而中断 , 进而导致使用 fopen 打开文件报错 ;
在 5.0 之前的版本 , 如果没有目录的权限 , 是可以读取文件的 ;
5.0 版本兼容两种模式 ;
但是在 5.1 及之后的版本 , 需要有所有路径的权限 , 才可以读取文件 ;
特别注意 : 如果要读写 /data/system/debug/command.json 文件数据 , 上层目录的权限必须有读取的权限 , 上层目录可以没有写的权限 ;
二、fopen 打开文件标志位
文件的写操作权限比较敏感 , w+ 权限指的是可以向文件中追加数据 , r+ 权限指的是可读可写 , 具体参考 【C 语言】文件操作 ( fopen 文件打开方式详解 ) 二、fopen 函数文件打开方式详解 博客章节 ;
三、验证文件权限
查看 /data/system/debug/command.json 文件的权限 , 将其权限设置为 -rwxrwxrwx 即可 , 权限分为 3 组 , 第一组是 root 用户的 , 第二组是系统用户的 , 第三组是应用创建的用户权限 ;
如果权限不足 , 使用
chmod 777 fileName
命令 , 修改 fileName 文件的权限 ;
-rwxrwxrwx root root 80 2021-10-31 21:16 command.json
查看 /data/system/debug/ 文件的权限 ,
drwxrwxr-x root root 2021-10-31 21:12 debug
执行
chmod 777 debug
命令 , 为 debug 目录赋予 777 完整权限 ;
由于 debug 目录是我们自己创建的 , 可以任意修改 , 但是上一级 system 目录的权限不能动 ;
查看 /data/system/ 文件的权限 , 该目录针对应用用户 , 有 r-x 权限 , 只有读取和执行权限 , 没有写权限 , 上面提到过 , 要读写的文件的上级目录只要有写权限 , 就可以保证下级的文件读写 ;
drwxrwxr-x system system 2021-11-06 11:07 system