Android 逆向Android 进程注入工具开发 ( 远程进程 注入动态库 文件操作 | Android 进程读取文件所需的权限 | fopen 打开文件标志位 | 验证文件权限 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向Android 进程注入工具开发 ( 远程进程 注入动态库 文件操作 | 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

以上是关于Android 逆向Android 进程注入工具开发 ( 远程进程 注入动态库 文件操作 | Android 进程读取文件所需的权限 | fopen 打开文件标志位 | 验证文件权限 )的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )

Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )

Android 逆向Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )

Android 逆向Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代