如何检测rooted /越狱android设备

时间:2013-07-30 15:18:26

标签: android jailbreak rooted-device

在我的Android应用程序中,我想仅为root设备提供特定功能。检查的唯一方法是知道我是否可以运行超级用户命令?这个检查够了吗?有更多方法可以检测越狱的Android设备吗?

3 个答案:

答案 0 :(得分:2)

查看RootTools,这是一个非常棒的图书馆,旨在简化根设备开发应用程序。

来自examples

if (RootTools.isRootAvailable()) {
    // su exists, do something
} else {
    // do something else
}

答案 1 :(得分:1)

对于那些仍然想知道如何检测到已生根的设备的人,现在有一种方法可以实现。

您现在可以使用SafetyNet Attestation API

Here是文档的链接。

以下是如何使用文档中的API的代码段。

// The nonce should be at least 16 bytes in length.
// You must generate the value of API_KEY in the Google APIs dashboard.
SafetyNet.getClient(this).attest(nonce, API_KEY)
    .addOnSuccessListener(this,
        new OnSuccessListener<SafetyNetApi.AttestationResponse>() {
            @Override
            public void onSuccess(SafetyNetApi.AttestationResponse response) {
                // Indicates communication with the service was successful.
                // Use response.getJwsResult() to get the result data.
            }
        })
    .addOnFailureListener(this, new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            // An error occurred while communicating with the service.
            if (e instanceof ApiException) {
                // An error with the Google Play services API contains some
                // additional details.
                ApiException apiException = (ApiException) e;
                // You can retrieve the status code using the
                // apiException.getStatusCode() method.
            } else {
                // A different, unknown type of error occurred.
                Log.d(TAG, "Error: " + e.getMessage());
            }
        }
    });

要使用以下API,您必须从Google API控制台生成一个API密钥。该密钥就是您传递给.attest()方法的密钥。

还添加SafetyNet依赖关系。

implementation 'com.google.android.gms:play-services-safetynet:15.0.1'

有关最新的依赖项版本,请参见https://developers.google.com/android/guides/setup

API返回以下内容:

{
  "nonce": "R2Rra24fVm5xa2Mg",
  "timestampMs": 9860437986543,
  "apkPackageName": "com.package.name.of.requesting.app",
  "apkCertificateDigestSha256": ["base64 encoded, SHA-256 hash of the
                              certificate used to sign requesting app"],
  "apkDigestSha256": ["base64 encoded, SHA-256 hash of
                  the APK installed on a user's device"],
  "ctsProfileMatch": true,
  "basicIntegrity": true,
}

ctsProfileMatchbasicIntegrity设备的完整性。

enter image description here

答案 2 :(得分:0)

有许多方法可用于越狱手机;大多数是硬件相关的和/或软件相关的。有些手机默认都配有超级用户访问权限!检查所有这些方法没有意义,因为最终结果是相同的:您拥有超级用户访问权限。所以是的,最简单/最简单/最好的答案是尝试执行超级用户命令。

如果你担心这还不够,或许你可以解释一下你正在尝试做什么。