0

盗難防止アプリを開発するには、cm 10.1 nightly rom を搭載した Android samsung Galaxy S2 のシステム アプリの署名チェックを無効にする必要があります。そこで、このチュートリアルで Services.jar を逆コンパイルして、このソリューションを試してみました。

そして、ファイルを置き換えて再起動した後、私の電話はすべてのアプリを「忘れ」(ROMアプリケーションのみがまだここにありました)、他のアプリケーションを(USBデバッグ経由で)インストールできません。そのため、新しい rom (zip) ファイルでファイルを直接編集してみますが、同じ問題が発生します。

どこに問題があるか知っていますか? または、システムが署名したアプリの権利でアプリをインストールする別の方法でしょうか? cm の秘密鍵を知っていますか? それで、キーでアプリに署名できますか?(しかし、私はこのキーを知っています。これはセキュリティ上の問題であるため、できないと思います)

ありがとう

4

1 に答える 1

0

I've check the logcat when the installation problem occur, and i have this error

"Cannot install platform packages to user storage"

I look into the cm github and i found this part of code

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;
}

Previously, with the tutorial I've edit the compareSignatures() function to make it return SIGNATURE_MATCH. But in this code, the error occurs when the function return this value.

It's seem this code is a security added, to be sure a system app will not be installed in the "user storage". The only way to fix my problem was to make the error never append (and I don't think this is a big vulnerability, but maybe i'm wrong, and if you have a better solution tell me)

So in addition to the first tutorial, I've replace

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

by

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

And it work :) I've never work in decompiled Java bytecode before so if I've made some mistakes, tell me.

Hope it will help !

于 2013-08-18T01:31:41.197 に答える