Notifikasi

You can now request help from the Help page in your Play Console account.  If you don't have access to Play Console, ask your account admin for an invite.

Menyesuaikan perlindungan dari modifikasi tidak sah

Catatan: Fitur ini hanya tersedia untuk Partner Google Play tertentu.

Artikel ini menjelaskan cara menyesuaikan perlindungan dari modifikasi tidak sah di Google Play untuk aplikasi dan game Anda. Untuk menggunakan fitur penyesuaian yang dijelaskan di halaman ini, Anda harus mengaktifkan perlindungan otomatis dengan perlindungan dari modifikasi tidak sah di Konsol Play.

Tentang perlindungan dari modifikasi tidak sah yang disesuaikan

Perlindungan dari modifikasi tidak sah yang disesuaikan memungkinkan Anda mengidentifikasi metode Java dan Kotlin tertentu dalam aplikasi Anda yang memerlukan keamanan lebih kuat. Saat rilis Anda diupload ke Google Play, Google Play memprioritaskan perlindungan yang ditingkatkan untuk metode tertentu ini.

Dengan mengidentifikasi metode yang memerlukan perlindungan yang ditingkatkan, Anda dapat memperkuat pertahanan aplikasi terhadap modifikasi tidak sah. Anda juga dapat menggunakan perlindungan metode untuk mencegah pemindahan rahasia klien yang tidak sah dari biner Anda (misalnya, kunci atau URL sensitif yang harus disertakan dalam klien).

Menyiapkan perlindungan dari modifikasi tidak sah yang disesuaikan

Ikuti langkah-langkah berikut untuk menerapkan perlindungan dari modifikasi tidak sah yang disesuaikan di codebase aplikasi Anda.

Langkah 1: Tambahkan antarmuka perlindungan otomatis ke codebase Anda

Pertama, tambahkan antarmuka perlindungan ke aplikasi atau game Anda.

Kotlin:

package com.google.android.play.protections.annotations

/**
* Menjelaskan bahwa suatu metode merupakan kandidat untuk perlindungan yang ditingkatkan.
*
* <p>Anotasi ini akan otomatis dihapus dari kode dex
* bundle Anda pada saat Google Play melindungi bundle Anda. Hanya gunakan sebagai
* anotasi tingkat metode. Penggunaan lainnya (misalnya, mengakses class
* secara reflektif saat runtime) tidak didukung.
*/
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION)
public annotation class PlayAutomaticIntegrityProtection() {}

Java:

package com.google.android.play.protections.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* Menjelaskan bahwa suatu metode merupakan kandidat untuk perlindungan yang ditingkatkan.
*
* <p>Anotasi ini akan otomatis dihapus dari kode dex
* bundle Anda pada saat Google Play melindungi bundle Anda. Hanya gunakan sebagai
* anotasi tingkat metode. Penggunaan lainnya (misalnya, mengakses class
* secara reflektif saat runtime) tidak didukung.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PlayAutomaticIntegrityProtection {}

Penting: Jika Anda menggunakan alat tambahan untuk mengoptimalkan aplikasi (seperti ProGuard atau R8), Anda harus mengonfigurasinya agar anotasinya tidak hilang selama pengoptimalan. Untuk ProGuard, tambahkan konfigurasi berikut:

# Pertahankan class anotasi dan elemennya.
-keep class com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection* { *; }

# Secara default, ProGuard memperlakukan atribut anotasi sebagai opsional, dan menghapusnya
# dalam langkah obfuscation. Aturan ini akan memastikan bahwa atribut anotasi tersebut tetap ada.
-keepattributes RuntimeVisibleAnnotations, AnnotationDefault

# Pertahankan metode apa pun dengan anotasi, tetapi izinkan metode tersebut di-obfuscate.
-keepclassmembers,allowobfuscation class * {
    @com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection *;
}

Langkah 2: Anotasi metode untuk perlindungan kustom

Setelah antarmuka disertakan dalam aplikasi, Anda dapat menambahkan perlindungan ke metode tertentu dengan memberikan anotasi:
Kotlin:

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection

@PlayAutomaticIntegrityProtection()
fun myMethod() {
  // Method body...
}

 

Java

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection;

@PlayAutomaticIntegrityProtection()
public void myMethod() {
  // Isi metode...
}

Langkah 3: (Opsional) Lindungi rahasia sisi klien

Perlindungan metode kustom meng-obfuscate (menyembunyikan) kode langsung di dalam isi metode yang dianotasi. Anda dapat menggunakan pendekatan ini untuk melindungi kunci API sensitif.

Catatan: String kunci API harus ditulis langsung di dalam isi metode yang dilindungi (tidak diekstrak ke kolom), karena hanya kode yang ditulis langsung dalam isi metode yang akan di-obfuscate.

Kotlin:

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection

@PlayAutomaticIntegrityProtection()
fun callApi() {
  api.connect("YOUR_API_KEY")
}

 

Java:

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection;

@PlayAutomaticIntegrityProtection()
public static void callApi() {
  api.connect("YOUR_API_KEY");
}

Langkah 4: (Opsional) Kelola overhead performa perlindungan

Secara default, memanggil metode yang dilindungi akan menambahkan overhead beberapa milidetik. Oleh karena itu, metode ini tidak boleh dipanggil dalam skenario yang sensitif terhadap performa atau di thread utama.

Jika Anda perlu melindungi metode yang memerlukan eksekusi cepat, tersedia mode perlindungan dengan overhead yang lebih rendah. Anda dapat menggunakan atribut anotasi untuk memilih akses yang lebih cepat (dimuat saat sistem dimulai), meskipun tingkat perlindungannya tidak sekuat mode standar.

Kotlin:

@PlayAutomaticIntegrityProtection(loadAtStartup = true)
fun callApi() {
  api.connect("YOUR_API_KEY")
}

 

Java:

@PlayAutomaticIntegrityProtection(loadAtStartup = true)
public static void callApi() {
  api.connect("YOUR_API_KEY");
}

Untuk menggunakannya, tambahkan atribut antarmuka ke isi definisi anotasi asli Anda dari Langkah 1:

// Pembaruan Definisi Anotasi Kotlin
public annotation class PlayAutomaticIntegrityProtection(
  /**
  * Jika nilainya benar, metode yang dianotasi akan dimuat saat sistem dimulai. Jika nilainya salah, metode tersebut
  * akan dimuat secara on demand.
  *
  * <p>Untuk pemuatan on demand, memanggil metode ini akan menyebabkan penurunan
  * performa. Untuk pemuatan saat sistem dimulai, metode akan tetap di-deobfuscate di memori
  * selama masa aktif aplikasi.
  */
  val loadAtStartup: Boolean = false
) {}

Langkah 5: Uji aplikasi Anda

Setelah Anda melindungi aplikasi atau game melalui Konsol Play, lakukan pengujian secara menyeluruh. Verifikasi bahwa metode yang diberi anotasi untuk perlindungan yang ditingkatkan dipanggil selama pengujian sehingga Anda dapat menilai secara akurat berbagai potensi dampak pada performa aplikasi.

Praktik terbaik untuk memilih metode

Pemilihan metode yang cermat akan menghasilkan perlindungan keseluruhan yang lebih kuat. Jika setiap rilis baru memiliki metode yang baru dilindungi, versi aplikasi atau game tersebut akan lebih memiliki ketahanan terhadap serangan.

Sebagai aturan umum untuk menghindari dampak pada performa aplikasi Anda, pilih metode cold daripada metode hot. Untuk perlindungan maksimum, pilih metode yang:

  • Sangat penting untuk aplikasi (aplikasi akan gagal jika metode tersebut dihapus).
  • Tidak dijalankan di thread utama/UI thread.
  • Dijalankan lebih dari sekali selama masa aktif aplikasi, tetapi tidak dijalankan dalam loop hot.
  • Bersifat signifikan (metode yang berisi kode atau data yang bersifat signifikan).
  • Tidak dijalankan selama sistem dimulai, jika memungkinkan.
  • Baru diperkenalkan atau direfaktorisasi secara signifikan dalam rilis.
  • Bukan metode abstrak, metode antarmuka, atau konstruktor.
  • Tidak menggunakan refleksi dan tidak memuat library native secara langsung.

Menghapus perlindungan yang disesuaikan

Jika tidak ingin lagi melindungi metode tertentu, Anda dapat cukup menghapus anotasi @PlayAutomaticIntegrityProtection().

Penting: Sebaiknya jangan nonaktifkan perlindungan setelah artefak yang dilindungi dipublikasikan ke jalur terbuka, karena hal ini dapat memfasilitasi serangan berbasis diff. Saat menguji berbagai artefak dengan perlindungan metode kustom diaktifkan dan dinonaktifkan, selalu lakukan proses ini di jalur pengujian internal Anda.

 

Halaman ini mungkin berisi konten yang diterjemahkan menggunakan teknologi AI. Terjemahan AI mungkin berisi kesalahan.

Apakah ini membantu?

Bagaimana cara meningkatkannya?
Telusuri
Hapus penelusuran
Tutup penelusuran
Aplikasi Google
Menu utama
17311243985109832665
true
Pusat Bantuan Penelusuran
false
true
true
true
true
true
92637
false
false
false
false
false