【问题标题】:How can you detect if the device is rooted in the app? [duplicate]如何检测设备是否植根于应用程序? [复制]
【发布时间】:2010-08-26 16:03:09
【问题描述】:

可能重复:
Determine if running on a rooted device

在启动应用程序时,我想检测正在运行的设备是否已植根。 有正确的检测方法吗?

我不认为尝试将文件写入“\data”以查看是否有根是一个好的解决方案。 (因为即使是根设备也可能有该路径没有特权)

【问题讨论】:

    标签: android root detect


    【解决方案1】:

    归根结底,你不能。有根设备可以以任何方式修改,因此可以完全隐藏它想要的任何东西。在实践中,您可以查看一些标准的根构建,以找到它们具有的功能或您可以查看的特性......但无法保证您所做的任何事情都会真正检测到“根”设备。

    【讨论】:

    • 这意味着有根设备也可以制作以下代码: Process proc = Runtime.getRuntime ().exec ( "su" );失败?
    • 是的,有一些软件可以通过不授予您超级用户的访问权限来模拟手机未 root :)
    • @hackbod 在developer.android.com/guide/publishing/… 上显示“例如,无法将受版权保护的应用程序从 Market 下载到提供 root 访问权限的设备...” - 如何在那里进行 root 检查?通过强大的混淆检查逻辑?谢谢。
    • 不推荐使用复制保护。
    【解决方案2】:

    你可以试试

    Process proc = Runtime.getRuntime ().exec ( "su" );
    

    如果抛出异常或 proc 为 null,则它们没有 root

    【讨论】:

    • 不真实。这仅仅意味着在该尝试期间不允许该应用程序使用这种启动根进程的特定机制。如果您在一个没有宣传自己是为 root 设备使用的应用程序中尝试此操作,很多用户会收到通知并对此请求感到非常震惊,并且可能会将您的应用程序报告为恶意软件。
    • 我也不会使用那个解决方案。
    • 这对于带有 SuperSU 的设备也会弹出“授予根访问权限”对话框。
    • 这将在使用此检查运行第 3 次或第 4 次应用程序后创建僵尸进程。这会减慢设备速度,您肯定需要重新启动它。
    • 这也是一个非常糟糕的主意,如此处所述:twitter.com/gsuberland/status/1029653985572077568“不仅无效,而且还是一个安全漏洞。它通过执行它来检查 su。所以如果你想运行一个进程在 BitFi 应用程序的上下文中,您现在可以通过在路径中放置一个名为 su 的二进制文件。最后的销毁调用也不会终止该进程。如果我没记错的话,甚至可以在 Linux/Android 上删除二进制文件当它有一个正在运行的进程时(与 Windows 不同),因此恶意 su 可以自行删除,并且应用程序将在重新启动时继续运行。”
    猜你喜欢
    • 2017-09-10
    • 1970-01-01
    • 2014-10-05
    • 2011-09-25
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多