Bagaimana pengembang Android dapat melindungi aplikasinya dari peretas IAP

Panduan ini untuk pengembang aplikasi Android yang memperoleh penghasilan dari IAP, dan ingin melindungi diri dari peretasan dan pembelian curang melalui alat peretasan. Ada beberapa alat peretasan IAP terkenal di luar sana, yang tidak akan saya cantumkan di sini, tetapi pada dasarnya alat ini mengirimkan tanda terima pembelian palsu ke aplikasi Anda untuk memungkinkan pengguna menikmati IAP gratis. Ini bisa apa saja dari langganan bulanan hingga token dalam game.

Meskipun versi baru alat peretasan ini selalu dirilis, dan ketekunan untuk tetap mengetahui pembaruan dan metode terbaru mereka sangat penting, ada beberapa hal yang dapat Anda lakukan untuk melindungi IAP aplikasi Anda agar tidak dicuri. Terutama, Anda perlu mengaktifkan beberapa metode verifikasi IAP sisi server, yang akan saya uraikan di bawah ini.

Panduan ini tidak dimaksudkan untuk pemula, tetapi pengembang aplikasi berpengalaman yang akan memahami berbagai istilah dalam panduan ini.

Menggunakan Plug-in Git Repo Khusus untuk tujuan ini:

Pembajakan

Tambahkan repositori ke build.gradle proyek Anda:

repositori {

maven {

url https://jitpack.io

}

}

Dan tambahkan pustaka ke modul build.gradle Anda :

ketergantungan {

kompilasi 'com.github.javiersantos: PiracyChecker: 1.1'

}

Rekomendasi

  • Selalu aktifkan ProGuard dalam rilis produksi Anda.
  • PiracyChecker harus disertakan dalam metode onCreate Anda untuk memeriksa lisensi yang valid sesegera mungkin.
  • Disarankan untuk menampilkan Aktivitas baru, bukan Dialog ketika lisensi tidak valid. Dengan cara ini Anda memastikan bahwa aktivitas utama aplikasi selesai. Lihat hasil Tampilan dalam Dialog atau Aktivitas baru.

Verifikasi Lisensi Google Play (LVL)

Google Play menawarkan layanan lisensi yang memungkinkan Anda menerapkan kebijakan lisensi untuk aplikasi yang Anda publikasikan di Google Play. Dengan Lisensi Google Play, aplikasi Anda dapat meminta Google Play untuk mendapatkan status lisensi untuk pengguna saat ini.

Aplikasi apa pun yang Anda publikasikan melalui Google Play dapat menggunakan layanan Lisensi Google Play. Tidak diperlukan akun atau pendaftaran khusus.

PiracyChecker baru (ini)

.enableGooglePlayLicensing (BASE_64_LICENSE_KEY)

.mulai();

Untuk mengambil kunci lisensi BASE64 Anda, aplikasi Anda harus diunggah ke Konsol Pengembang Google Play. Lalu akses ke aplikasi Anda -> Layanan dan API.

Saat menggunakan Lisensi Google Play, Anda harus memanggil .destroy () dalam metode onDestroy () dari Aktivitas Anda untuk menghindari beberapa contoh layanan berjalan.

Verifikasi sertifikat penandatanganan aplikasi Anda (tanda tangan)

Pengembang harus selalu menandatangani aplikasi dengan kunci / sertifikat pribadi mereka (terdapat dalam file .keystore) sebelum aplikasi dapat diinstal pada perangkat pengguna. Sertifikat penandatanganan harus tetap konsisten sepanjang umur aplikasi, dan biasanya memiliki tanggal kedaluwarsa 25 tahun.

Tanda tangan aplikasi akan rusak jika .apk diubah dengan cara apa pun - aplikasi yang tidak ditandatangani biasanya tidak dapat diinstal. Kita dapat membayangkan penyerang menghapus kode pemeriksaan lisensi untuk mengaktifkan fitur aplikasi lengkap tanpa membayar, misalnya. Contoh yang lebih berbahaya akan mengubah .apk untuk menyertakan malware di aplikasi yang sah untuk memanen data pengguna yang sensitif. Agar diubah .apk yang akan diinstal, penyerang harus mengundurkan diri.

PiracyChecker baru (ini)

.enableSigningCertificate (478yYkKAQF + KST8y4ATKvHkYibo =) // Tanda asli APK untuk versi PRODUCTION

.mulai();

HATI-HATI!! Tanda tangan aplikasi Anda dapat diambil menggunakan metode PiracyCheckerUtils. Pastikan Anda telah menandatangani APK menggunakan keystore PRODUCTION Anda (tidak menggunakan DEBUG) dan menginstal versi yang Anda rencanakan untuk distribusikan. Kemudian salin tanda tangan yang dikembalikan oleh metode ini di konsol dan tempelkan .enableSigningCertificate (YOUR_APK_SIGNATURE)

// Metode ini akan mencetak tanda tangan aplikasi Anda di konsol

Log.e (SIGNATURE, PiracyCheckerUtils.getAPKSignature (this));

Verifikasi penginstal

Jika Anda hanya berencana untuk mendistribusikan aplikasi di toko tertentu, teknik ini akan memblokir dari menginstal aplikasi menggunakan toko lain.

Toko yang didukung: Google Play, Amazon App Store, dan Samsung Galaxy Apps.

PiracyChecker baru (ini)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

TIP PRO: Jika masalahnya ada pada komputer Anda atau laptop / notebook, Anda harus mencoba menggunakan Perangkat Lunak Reimage Plus yang dapat memindai repositori dan mengganti file yang rusak dan hilang. Ini berfungsi dalam banyak kasus, di mana masalah ini berasal karena sistem yang rusak. Anda dapat mengunduh Reimage Plus dengan Mengklik di Sini

.enableInstallerId (InstallerID.GALAXY_APPS)

.mulai();

HATI-HATI!! Ini adalah teknik yang sangat ketat karena akan memblokir aplikasi Anda dari pemasangan menggunakan pasar lain atau langsung menginstal .apk pada perangkat. Tidak dianjurkan untuk kebanyakan kasus.

Verifikasi penggunaan aplikasi bajak laut

Jika Anda ingin memeriksa apakah pengguna memiliki aplikasi bajakan yang diinstal, Anda dapat menggunakan kode ini.

Ini akan memeriksa: Lucky Patcher, Uret Patcher, Freedom dan CreeHack.

PiracyChecker baru (ini)

.enableUnauthorizedAppsCheck ()

.mulai();

Anda dapat memblokir aplikasi bahkan ketika aplikasi bajakan ini telah dicopot. Ini mencegah aplikasi ditambal dan kemudian menghapus aplikasi bajak laut untuk terus menggunakan aplikasi Anda. Perpustakaan akan menyimpan nilai SharedPreference untuk mengetahui kapan aplikasi bajak laut telah terdeteksi.

Ada dua cara untuk melakukan ini:

Tentukan SharedPreferences dan nama preferensi tempat Anda ingin menyimpan hasilnya.

PiracyChecker baru (ini)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (preferences, app_unauthorized) // Ubah app_unauthorized dengan nilai Anda sendiri

.mulai();

Tentukan nama SharedPreferences dan nama preferensi tempat Anda ingin menyimpan hasilnya.

PiracyChecker baru (ini)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (license_preferences, app_unauthorized) // Ubah license_preferences dan app_unauthorized dengan nilai Anda sendiri

.mulai();

Verifikasi penggunaan aplikasi store pihak ketiga

Jika Anda ingin memeriksa apakah pengguna memasang aplikasi pihak ketiga, Anda dapat menggunakan kode ini.

Ini akan diperiksa: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe, dan ACMarket.

PiracyChecker baru (ini)

.enableStoresCheck ()

.mulai();

Verifikasi apakah aplikasi adalah versi debug

Jika aplikasi Anda berjalan pada emulator di luar proses pengembangan, ini memberikan indikasi bahwa seseorang selain Anda sedang mencoba menganalisis aplikasi.

PiracyChecker baru (ini)

.enableDebugCheck ()

.mulai();

Verifikasi apakah aplikasi dijalankan dalam emulator

Di luar pengembangan, tidak mungkin aplikasi Anda harus berjalan pada emulator, dan merilis aplikasi dengan kemampuan debug diaktifkan tidak disarankan karena memungkinkan komputer yang terhubung mengakses dan men-debug aplikasi melalui Android Debug Bridge.

boolean deep = false;

PiracyChecker baru (ini)

.enableEmulatorCheck (dalam)

.mulai();

Catatan: boolean dalam dengan membuat pustaka melakukan pemeriksaan ekstra untuk mendeteksi apakah perangkat adalah emulator atau tidak. Ini bisa menyebabkan beberapa tabrakan aneh, jadi bijaklah saat menggunakannya.

Simpan hasil pemeriksaan lisensi di SharedPreferences

Menyimpan hasil pemeriksaan lisensi berguna untuk memeriksa status lisensi tanpa memanggil .start () beberapa kali.

Ada dua cara untuk melakukan ini:

Tentukan SharedPreferences dan nama preferensi tempat Anda ingin menyimpan hasilnya.

PiracyChecker baru (ini)

.saveResultToSharedPreferences (preferensi, valid_license) // Ubah valid_license dengan nilai Anda sendiri

.mulai();

Tentukan nama SharedPreferences dan nama preferensi tempat Anda ingin menyimpan hasilnya.

PiracyChecker baru (ini)

.saveResultToSharedPreferences (license_preferences, valid_license) // Ubah license_preferences dan valid_license dengan nilai Anda sendiri

.mulai();

Kustomisasi

Menampilkan hasil dalam Dialog atau Aktivitas baru

Disarankan untuk menampilkan Aktivitas baru, bukan Dialog ketika lisensi tidak valid. Dengan cara ini Anda memastikan bahwa aktivitas utama aplikasi selesai.

Secara default, Dialog yang tidak dapat dibatalkan akan ditampilkan.

PiracyChecker baru (ini)

.display (Tampilan.AKTIVITAS)

.mulai();

Secara default, Aktivitas yang ditampilkan akan menggunakan warna pustaka. Untuk menerapkan warna gelap primer dan primer khusus, dan untuk menentukan apakah aktivitas harus menampilkan bilah status normal atau terang, gunakan:

.withActivityColors (R.color.colorPrimary, R.color.colorPrimaryDark, withLightStatusBar)

Anda juga dapat menentukan xml tata letak khusus untuk konten aktivitas ini, menggunakan:

.withActivityLayout (R.layout.my_custom_layout)

Menggunakan callback khusus

Menambahkan callback ke pembuat memungkinkan Anda untuk menyesuaikan apa yang akan terjadi ketika lisensi telah diperiksa dan mengelola kesalahan pemeriksaan lisensi jika pengguna tidak diizinkan untuk menggunakan aplikasi. Perlu diingat bahwa ketika menggunakan metode ini Anda harus sadar memblokir aplikasi dari pengguna yang tidak sah .

Secara default, pustaka akan menampilkan dialog yang tidak dapat dibatalkan jika pengguna tidak diizinkan untuk menggunakan aplikasi, jika tidak, tidak akan terjadi apa-apa.

Gunakan pembuat dan tambahkan berikut:

.callback (new PiracyCheckerCallback () {

@Mengesampingkan

kekosongan publik memungkinkan () {

// Lakukan sesuatu ketika pengguna diizinkan untuk menggunakan aplikasi

}

@Mengesampingkan

public void dontAllow (@NonNull PiracyCheckerError error, @Nullable PirateApp app) {

// Anda dapat melakukan sesuatu yang spesifik ketika pengguna tidak diizinkan untuk menggunakan aplikasi

// Atau kelola kesalahan, menggunakan parameter 'kesalahan', diri Anda sendiri (Periksa kesalahan di {@link PiracyCheckerError}).

// Selain itu, jika Anda mengaktifkan pemeriksaan aplikasi bajakan dan / atau toko pihak ketiga, parameter 'app'

// adalah aplikasi yang terdeteksi di perangkat. Aplikasi bisa nihil, dan ketika batal, itu berarti tidak ada aplikasi atau toko bajak laut yang ditemukan,

// atau Anda menonaktifkan pemeriksaan untuk aplikasi tersebut.

// Ini memungkinkan Anda untuk memberi tahu pengguna kemungkinan alasan mengapa lisensi tidak valid.

}

@Mengesampingkan

public void onError (@NonNull PiracyCheckerError error) {

// Metode ini tidak diperlukan untuk diimplementasikan / ditimpa tetapi

// Anda dapat melakukan sesuatu yang spesifik saat terjadi kesalahan saat memeriksa lisensi,

// Atau kelola kesalahan, menggunakan parameter 'kesalahan', diri Anda sendiri (Periksa kesalahan di {@link PiracyCheckerError}).

}

})

TIP PRO: Jika masalahnya ada pada komputer Anda atau laptop / notebook, Anda harus mencoba menggunakan Perangkat Lunak Reimage Plus yang dapat memindai repositori dan mengganti file yang rusak dan hilang. Ini berfungsi dalam banyak kasus, di mana masalah ini berasal karena sistem yang rusak. Anda dapat mengunduh Reimage Plus dengan Mengklik di Sini

Facebook Twitter Google Plus Pinterest