【问题标题】:Can't disable signature check for system app on android无法在 android 上禁用系统应用程序的签名检查
【发布时间】:2023-03-21 22:45:01
【问题描述】:

我需要在我的带有 cm 10.1 nightly rom 的 Android 三星 Galaxy S2 上禁用系统应用程序的签名检查,以开发防盗应用程序。所以我尝试了this solution,通过使用this tutorial 反编译Services.jar。

替换文件并重新启动后,我的手机“忘记”了我所有的应用程序(只有 rom 应用程序还在这里),我无法安装其他应用程序(通过 USB 调试)。所以我尝试直接在一个新的 rom (zip) 文件中编辑文件,同样的问题出现了。

你知道问题出在哪里吗?或者也许是另一种安装具有系统签名应用程序权限的应用程序的方法? 我们知道 cm 的私钥吗?所以也许我可以用密钥签署我的应用程序? (但我知道这个密钥,这是一个安全问题,所以我认为我们不能)

谢谢

【问题讨论】:

    标签: android android-permissions


    【解决方案1】:

    出现安装问题时我检查了logcat,我有这个错误

    "Cannot install platform packages to user storage"
    

    我查看了cm github,发现了这部分代码

    Signature[] s1 = null;
    if (obj instanceof SharedUserSetting) {
        s1 = ((SharedUserSetting)obj).signatures.mSignatures;
    }
    if ((compareSignatures(pkg.mSignatures, s1) == PackageManager.SIGNATURE_MATCH)) {
        Slog.w(TAG, "Cannot install platform packages to user storage");
        mLastScanError = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
        return null;
    }
    

    之前,在本教程中,我编辑了 compareSignatures() 函数以使其返回 SIGNATURE_MATCH。但是在这段代码中,当函数返回这个值时会发生错误。

    似乎此代码是添加的安全性,以确保系统应用不会安装在“用户存储”中。解决我的问题的唯一方法是让错误永远不会附加(我不认为这是一个大漏洞,但也许我错了,如果你有更好的解决方案告诉我)

    所以除了第一个教程,我已经替换了

    invoke-static {v3, v0}, Lcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    
    move-result v3
    
    if-nez v3, :cond_1d1
    .line 3715
    const-string v3, "PackageManager"
    const-string v4, "Cannot install platform packages to user storage"
    invoke-static {v3, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
    

    通过

    invoke-static {v3, v0}, Lcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    
    const/4 v3, -0x3
    
    if-nez v3, :cond_1d1
    .line 3715
    const-string v3, "PackageManager"
    const-string v4, "Cannot install platform packages to user storage"
    invoke-static {v3, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
    

    而且它有效 :) 我以前从未使用过反编译的 Java 字节码,所以如果我犯了一些错误,请告诉我。

    希望对您有所帮助!

    【讨论】:

    • 您能告诉我更多细节吗?修改哪个apk(或jar)?它在哪里?
    猜你喜欢
    • 2016-10-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多