android root 安全,安卓Hacking Part 8:Root的检测和绕过

安卓Hacking Part 8:Root的检测和绕过

2014-12-13 18:17:50

阅读:0次

在本期的文章中,我们将讨论安卓开发者们使用的一项技术——检查当前app运行的安卓设备是否已经root。对于应用程序来说,检查当前设备是否已经root是有很多好处的。很多是否我们需要root权限来安装一些工具,但这样可能造成安全隐患。

出于安全原因,很多应用程序不允许在已经root的设备上运行,我曾经见过一些手机银行app会自动检查设备是否已经root,并会在已经root的设备上停止运行。本期文章我会给大家讲解开发者们检查设备是否已经root的几种常用方法和一些绕过技术。

常见检测设备是否已经root的技术

下面从几种被应用程序广泛使用的检测技术开始说起。

如果设备已经root,会增加一些新的文件,所以可以通过检测这些文件是否存在来判断,还有一些开发者通过检查能否执行只有root权限下才能运行的命令来判断,当然还有一些其他的手段,下面一一道来。

1. Superuser.apk是一个被广泛使用的用来root安卓设备的软件,所以可以检查这个app是否存在。

cb5387eb88aa19a12e93038b602ee2c3.png

2. 还可以搜索一些特殊的package,比如下图所展示的

0d2272b5be3e3f22f92848aa58faa2c6.png

上面的图片展示了一个叫做“eu.chainfire.supersu”的package,我曾经见过一些应用程序检测它。

3. 有一些应用程序只能在root的设备上运行,所以检查他们是否存在也是一个不错的方法。比如众所周知的Busybox:

d53baeabbc70ae89637db5622e3d40c7.png

4. 运行“su”和“id”,然后查看uid来检查。

a7a591d465f67b99c8bb6aaed19838ac.png

上面是一些开发者们常用的方法来判断设备是否已经root,当然还有一些别的方法没有提到,以后我们会讲。

绕过root检测——demo

在这一章节,我们来讲讲如何绕过root检查,下载下面的软件

然后点击Is my device rooted按钮会检测设备是否已经root,我的设备目前已经root了,如下图:

c96b3df4e82881d60a936959e2397e04.png

下面我们开始。

理解程序的原理

我们首先要知道这个app是如何检测设备是否已经root的。先看下面的代码:

fc8a086db6ff82b593f820223ac6e7e4.png

可以看出他简单的检查了/system/app/目录下是否存在Superuser.apk,如果存在,显示“Device Rooted(设备已经越狱)”。我有n种姿势可以绕过:

1. 首先我们通过su和id来再次确认设备是否root

8e3e13d5b3201603177a2ff829455499.png

2. 看看/system/app/目录下是否存在Superuser.apk

f2abefd52e998ab99b9a35b5a634067b.png

3. 我们修改一下应用的名字试试,改成Superuser0.apk吧。

37d2333604c8336bcd26748438faf7de.png

啊哦,报错了,他是一个只读文件。

4. 那我们就把他改成可读写文件!

2fad2e732d6edac34d31e7bfd9582cc8.png

5. 改下名字

42f1c2e3fc2a0badcdba5fd5182e9621.png

6. 下面再检查一下:

3f9f886ff34044e82947b50f8a736451.png

显示“Device Not Rooted(设备没有root)”

当然上面只是一个很简单的例子,对于那些初级的开发者还是有一些效果的,当然对于一些比较牛x的开发者,可能就没那么简单了,他们会用各种复杂的方法来检查。比如他们会通过下面的方法检查

Runtime.getRuntime().exec(“su”);

这样子的话我们也要改变一下,比如修改su命令来绕过。

总结

开发者阻止程序在root的设备上运行从安全的角度来说是一个不错的主意。但是大多时候这一检测可以被轻易的绕过,这就要求开发者们去寻找更复杂更高级的方法来检测,只有这样才能更好地防御攻击。

目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值