- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
10.5 调用系统受 uid 限制的 API
前面说了几次关于降权的问题,再用一个例子来详细介绍 Android 中如何降权,这个例子是模拟一个系统的 API,但是这个 API 只允许 system 用户调用,代码如下:
这里做了用户 uid 的判断,如果不是 system 用户,直接返回错误信息。为了简单,也是为了向用户演示 Android 中如何执行 jar 功能,这里再加一个入口类:
把项目导出 jar,然后用 dx 命令进程转化成 dex,因为 Android 中是不识别 class 文件的,它只识别 dex 文件:
然后将生成的 classes.dex 文件塞到 jar 中,直接使用压缩软件就可以了,如图 10-6 所示。
图 10-6 压缩软件查看 jar 文件
然后把 exec.jar 导入设备的/data 目录下,如下所示:
接着把 exec.jar 设置到类环境变量中,运行即可:
·export CLASSPATH jar 的路径。
·exec/system/bin/app_process jar 的目录 jar 中的入口类。
为了演示,例子都是在 root 用户下做的操作,如下所示:
运行成功,看到打印的 log 信息,权限拒绝了,因为只能允许 system 用户访问,下面就用 su 降权到 system 再运行,如下所示:
注意:每次切换用户的时候,一定要记得重新设置一下类变量,不然会运行失败的。
成功获取到值了。总结一下步骤:
1)导出可执行的 jar 文件。
2)使用 dx 命令将 class 文件转化成 dex 文件。
3)将转化之后的 dex 文件塞到 jar 文件中,然后导入设备的指定目录。
4)设置可执行 jar 文件到类环境变量中。
5)执行 app_process 命令,运行 jar 文件。
补充一些说明:上面看到了可以成功使用 app_process 命令来运行一个 jar 文件,关于 app_process 的相关知识网上有很多资料,它是 Android 系统中启动 Java 代码的关键。这里也可以直接运行 dex 文件,使用命令 dalvikvm。
首先将上面执行 dx 命令后的 classes.dex 文件 adb 放到/data 目录下,如下所示:
然后执行 dalvikvm 命令,如下所示:
这里同样看到权限拒绝,降级切换到 system 用户,如下所示:
了解了如何使用 app_process 来运行 jar 文件,便体验到了 Android 中一些 API 的访问限制该如何处理,主要是用 su 来进行降权处理,而 su 能够降权是因为它本身提供了可以修改 uid 的功能,即调用 setuid 和 setgid 函数即可,所以在手机 root 之后发现还是不能调用系统的一些 API 时,可以尝试使用 su 来降权进行调用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论