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

文章目录

前言

一、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

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



查看 /data/system/debug/ 文件的权限 ,


drwxrwxr-x root     root              2021-10-31 21:12 debug

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



执行


chmod 777 debug


命令 , 为 debug 目录赋予 777 完整权限 ;

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


由于 debug 目录是我们自己创建的 , 可以任意修改 , 但是上一级 system 目录的权限不能动 ;



查看 /data/system/ 文件的权限 , 该目录针对应用用户 , 有 r-x 权限 , 只有读取和执行权限 , 没有写权限 , 上面提到过 , 要读写的文件的上级目录只要有写权限 , 就可以保证下级的文件读写 ;


drwxrwxr-x system   system            2021-11-06 11:07 system

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

上一篇:新增TinyMessage,并实现邮件接收处理


下一篇:细数Xcode 6 给我们带来的新特性