Cara Disable Signature Verification

System di android selalu melakukan verifikasi signature jika terjadi perubahan pada AndroidManifest nya, jika ternyata berbeda system akan gagal memverifikasi alias aplikasi akan terhenti.

Cara ini merupakan lanjutan dari postingan saya sebelumnya, setelah kita melakukan decompile dan recompile pada salah satu aplikasi, sebelum memasukannya kedalam system langkah yang harus ditempuh adalah merubah atau disable signature verification terlebih dahulu di services.jar nya supaya tidak terjadi force close saat dimasukkan kembali.

Saya akan share ulang Guide dari forum xda yang sudah berhasil diterapkan di hp saya. Tutorial ini sangat simpel cuma copas kode saja dan yang penting tahu cara decompile recompile terlebih dahulu.

Yang pertama, decompile services.jar yang ada di system/framework/disini.

Kedua, buka
smali\com\android\server\pm\PackageManagerService.smali
Bisa memakai 920 Text Editor ataupun Notepad++ jika pakai PC.

Ketiga, Cari kode ini method static compareSignatures

Keempat, block semua kode dibawah ini (setiap hp berbeda line nya)
method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    .locals 7
    .parameter "s1"
    .parameter "s2"

    .prologue
    .line 2160
    if-nez p0, :cond_8

    .line 2161
    if-nez p1, :cond_6

    const/4 v6, 0x1

    .line 2180
    :goto_5
    return v6

    .line 2161
    :cond_6
    const/4 v6, -0x1

    goto :goto_5

    .line 2165
    :cond_8
    if-nez p1, :cond_c

    .line 2166
    const/4 v6, -0x2

    goto :goto_5

    .line 2168
    :cond_c
    new-instance v3, Ljava/util/HashSet;

    invoke-direct {v3}, Ljava/util/HashSet;->()V

    .line 2169
    .local v3, set1:Ljava/util/HashSet;,"Ljava/util/HashSet;"
    move-object v0, p0

    .local v0, arr$:[Landroid/content/pm/Signature;
    array-length v2, v0

    .local v2, len$:I
    const/4 v1, 0x0

    .local v1, i$:I
    :goto_14
    if-ge v1, v2, :cond_1e

    aget-object v5, v0, v1

    .line 2170
    .local v5, sig:Landroid/content/pm/Signature;
    invoke-virtual {v3, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    .line 2169
    add-int/lit8 v1, v1, 0x1

    goto :goto_14

    .line 2172
    .end local v5           #sig:Landroid/content/pm/Signature;
    :cond_1e
    new-instance v4, Ljava/util/HashSet;

    invoke-direct {v4}, Ljava/util/HashSet;->()V

    .line 2173
    .local v4, set2:Ljava/util/HashSet;,"Ljava/util/HashSet;"
    move-object v0, p1

    array-length v2, v0

    const/4 v1, 0x0

    :goto_26
    if-ge v1, v2, :cond_30

    aget-object v5, v0, v1

    .line 2174
    .restart local v5       #sig:Landroid/content/pm/Signature;
    invoke-virtual {v4, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    .line 2173
    add-int/lit8 v1, v1, 0x1

    goto :goto_26

    .line 2177
    .end local v5           #sig:Landroid/content/pm/Signature;
    :cond_30
    invoke-virtual {v3, v4}, Ljava/util/HashSet;->equals(Ljava/lang/Object;)Z

    move-result v6

    if-eqz v6, :cond_38

    .line 2178
    const/4 v6, 0x0

    goto :goto_5

    .line 2180
    :cond_38
    const/4 v6, -0x3

    goto :goto_5
.end method

Kelima, Replace atau ganti semua kode diatas dengan kode dibawah ini
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    .locals 7

    const/4 v0, 0x0

    return v0
.end method

Jika selesai simpan dan recompile kembali. Rename dan pindahkan keasalnya set permission rw-r--r-- (0644) lalu reboot. Atau bisa juga dibuat flashable zip dan flash via recovery tapi untuk tutor mungkin next.
(DWYOR)
Linkireng
Linkireng Penulis artikel di blog Linkireng

1 komentar untuk "Cara Disable Signature Verification"

Comment Author Avatar
Cara cek klo system kita udah di disable signature via service.jar gimana bro....