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

简介: 【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

image.png



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


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

image.png



执行


chmod 777 debug


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

image.png


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



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


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

image.png

目录
相关文章
|
9天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
14天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
16天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
6月前
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
130 13
|
5月前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
5月前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
182 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
4月前
|
算法 Linux 调度
探索进程调度:Linux内核中的完全公平调度器
【8月更文挑战第2天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。本文将深入探讨Linux内核中的完全公平调度器(Completely Fair Scheduler, CFS),一个旨在提供公平时间分配给所有进程的调度器。我们将通过代码示例,理解CFS如何管理运行队列、选择下一个运行进程以及如何对实时负载进行响应。文章将揭示CFS的设计哲学,并展示其如何在现代多任务计算环境中实现高效的资源分配。
|
5月前
|
存储 缓存 安全
【Linux】冯诺依曼体系结构与操作系统及其进程
【Linux】冯诺依曼体系结构与操作系统及其进程
171 1
|
5月前
|
小程序 Linux
【编程小实验】利用Linux fork()与文件I/O:父进程与子进程协同实现高效cp命令(前半文件与后半文件并行复制)
这个小程序是在文件IO的基础上去结合父子进程的一个使用,利用父子进程相互独立的特点实现对数据不同的操作
108 2
|
5月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
193 1