Android geliştiricileri, uygulamalarını IAP bilgisayar korsanlarından nasıl koruyabilir?

Bu kılavuz, IAP’lerden gelir elde eden ve hackerlardan ve dolandırıcılıktan habersiz satın alma işlemlerinden korunmak isteyen Android uygulama geliştiricileri içindir. Burada listelenmeyecek birkaç iyi bilinen IAP hack aracı var, ancak temel olarak bu araçlar kullanıcının ücretsiz IAP'lere sahip olmasını sağlamak için uygulamanıza yanlış satın alma makbuzları gönderiyor. Bu, aylık aboneliklerden oyun içi jetonlara kadar her şey olabilir.

Bu bilgisayar korsan araçlarının yeni sürümleri her zaman yayınlanmakta ve en son güncellemeleri ve yöntemleri hakkında bilgi sahibi olmak için gayret göstermeniz çok önemlidir. Uygulamalarınızın IAP'lerini çalınmasını önlemek için yapabileceğiniz birkaç şey vardır. En önemlisi, aşağıda detaylandırılacağım birkaç sunucu tarafı IAP doğrulaması yöntemini etkinleştirmeniz gerekir.

Bu kılavuz, yeni başlayanlar için tasarlanmamıştır, ancak bu kılavuzdaki çeşitli lingoları anlayacak deneyimli uygulama geliştiricileridir.

Bu amaçla bir Git Repo Plug-in'i kullanma:

PiracyChecker

Deponuzu projenize ekleyin build.gradle :

depolar {

maven {

url https://jitpack.io

}

}

Ve kütüphaneyi modülünüze ekleyin.

bağımlılıklar {

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

}

öneriler

  • ProGuard'ı her zaman üretim sürümlerinde etkinleştirin.
  • Mümkün olan en kısa sürede geçerli bir lisans olup olmadığını kontrol etmek için onCreate yönteminize PiracyChecker eklenmelidir.
  • Lisans geçerli olmadığı zaman İletişim Kutusu yerine yeni bir Etkinlik göstermesi önerilir. Bu şekilde, uygulamanın ana etkinliğinin tamamlandığından emin olursunuz. Bir Diyalogda veya yeni bir Etkinlikte Ekran sonuçlarını gösterme.

Google Play Lisansını Doğrula (LVL)

Google Play, Google Play'de yayınladığınız uygulamalar için lisans politikalarını uygulamanızı sağlayan bir lisans hizmeti sunmaktadır. Google Play Lisansı ile uygulamanız mevcut kullanıcı için lisans durumunu almak üzere Google Play'i sorgulayabilir.

Google Play üzerinden yayınladığınız tüm uygulamalar Google Play Lisansı hizmetini kullanabilir. Özel bir hesap veya kayıt gerekli değildir.

yeni PiracyChecker (bu)

.enableGooglePlayLicensing (BASE_64_LICENSE_KEY)

.başla();

BASE64 lisans anahtarınızı almak için uygulamanızın Google Play Geliştirici Konsolu'na yüklenmesi gerekir. Ardından uygulamanıza -> Hizmetler ve API'lere erişin.

Google Play Lisansı'nı kullanırken, hizmetin çalışmasının birden çok örneğini önlemek için Etkinliğinizin onDestroy () yönteminde .destroy () yöntemini çağırmanız gerekir.

Uygulamanızın imza sertifikasını doğrulayın (imza)

Geliştiricilerin, uygulamaların kullanıcı cihazlarına yüklenebilmesi için her zaman uygulamalarını özel anahtarlarıyla / sertifikalarıyla (.keystore dosyasında bulunur) imzalaması gerekir. İmzalama sertifikası, uygulamanın ömrü boyunca tutarlı kalmalı ve genellikle 25 yıllık bir son kullanma tarihine sahip olmalıdır.

.apk herhangi bir şekilde değiştirilirse uygulama imzası kırılır. İmzasız uygulamalar genellikle yüklenemez. Örneğin, tam uygulama özelliklerini ödemeden etkinleştirmek için bir saldırganın lisans kontrol kodunu kaldırdığını hayal edebiliyoruz. Daha tehlikeli bir örnek, hassas kullanıcı verilerinin toplanması için kötü amaçlı bir uygulamaya kötü amaçlı yazılım eklenmesidir. Değiştirilen .apk'ın yüklenebilmesi için saldırganın istifa etmesi gerekir.

yeni PiracyChecker (bu)

.enableSigningCertificate (478yYKKAQF + KST8y4ATKvHkYibo =) // PRODUCTION sürümü için orijinal APK imzası

.başla();

DİKKATLİ OL!! Uygulama imzanız bir PiracyCheckerUtils yöntemi kullanılarak alınabilir. APK'nızı PRODUCTION anahtar deponuzu kullanarak (DEBUG kodunu kullanmadan) imzaladığınızdan ve dağıtmayı planladığınız sürümü yüklediğinizden emin olun. Ardından bu yöntemin getirdiği imzayı konsola kopyalayın ve yapıştırın .enableSigningCertificate (YOUR_APK_SIGNATURE)

// Bu yöntem, uygulama imzanızı konsola yazdıracaktır

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

Yükleyiciyi doğrulayın

Uygulamayı yalnızca belirli bir mağazada dağıtmayı planlıyorsanız bu teknik, uygulamayı başka bir mağazada kullanmaktan vazgeçirir.

Desteklenen mağazalar: Google Play, Amazon App Store ve Samsung Galaxy Uygulamaları.

yeni PiracyChecker (bu)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

PRO TIP: Sorun bilgisayarınız veya dizüstü bilgisayar / dizüstü bilgisayar ile yapılmışsa, depoları tarayabilen ve bozuk ve eksik dosyaları değiştirebilen Reimage Plus Yazılımı'nı kullanmayı denemeniz gerekir. Bu, çoğu durumda, sorunun sistem bozulmasından kaynaklandığı yerlerde çalışır. Reimage Plus'ı tıklayarak buraya tıklayarak indirebilirsiniz.

.enableInstallerId (InstallerID.GALAXY_APPS)

.başla();

DİKKATLİ OL!! Bu, uygulamanızın başka bir pazar kullanarak yüklenmesini veya doğrudan cihazdaki .apk dosyasını yüklemesini engelleyeceğinden, gerçekten kısıtlayıcı bir tekniktir. Çoğu vaka için önerilmez.

Korsan uygulamaların kullanımını doğrulayın

Kullanıcının yüklü korsan uygulamaları olup olmadığını kontrol etmek isterseniz, bu kodu kullanabilirsiniz.

Şunlar kontrol edilecek: Lucky Patcher, Uret Patcher, Freedom ve CreeHack.

yeni PiracyChecker (bu)

.enableUnauthorizedAppsCheck ()

.başla();

Bu korsan uygulamaları kaldırılmış olsa bile uygulamayı engelleyebilirsiniz. Bu, uygulamanın kaldırılmasını önler ve uygulamanızı kullanmaya devam etmek için korsan uygulamasını kaldırır. Kütüphane, bir korsan uygulamasının ne zaman tespit edildiğini öğrenmek için bir SharedPreference değeri kaydedecektir.

Bunu yapmanın iki yolu vardır:

SharedPreferences'ı ve sonucu kaydetmek istediğiniz tercihin adını tanımlayın.

yeni PiracyChecker (bu)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (tercihler, app_unauthorized) // Kendi değerini kullanarak app_unauthorized değiştir

.başla();

SharedPreferences adını ve sonucu kaydetmek istediğiniz tercihin adını tanımlayın.

yeni PiracyChecker (bu)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (license_preferences, app_unauthorized) // License_preferences ve app_unatalized değerini kendi değerinizle değiştirin

.başla();

Üçüncü taraf mağaza uygulamalarının kullanımını doğrulayın

Kullanıcının üçüncü taraf mağaza uygulamaları yüklü olup olmadığını kontrol etmek isterseniz, bu kodu kullanabilirsiniz.

Kontrol edecek: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe ve ACMarket.

yeni PiracyChecker (bu)

.enableStoresCheck ()

.başla();

Uygulamanın bir hata ayıklama yapısı olup olmadığını doğrulayın

Uygulamanız geliştirme işleminin dışında bir emülatörde çalışıyorsa, sizden başka birinin uygulamayı analiz etmeye çalıştığına dair bir işaret verir.

yeni PiracyChecker (bu)

.enableDebugCheck ()

.başla();

Uygulamanın bir taklitçide çalıştırıldığını doğrulayın

Geliştirmenin dışında, uygulamanızın bir öykünücü üzerinde çalıştırılması ve uygulamaların Android Debug Köprüsü aracılığıyla uygulamaya erişip hata ayıklaması yapmasına izin verdiği için hata ayıklama özelliği etkinleştirilmiş uygulamaların kaldırılması olanaksız hale getirilmesi olanaksızdır.

boolean deep = false;

yeni PiracyChecker (bu)

.enableEmulatorCheck (derinlik)

.başla();

Not: kütüphaneyi, bir emülatör olup olmadığını algılamak için ekstra kontroller yapmak ile derin boolean. Bazı garip çarpışmalara yol açabilir, bu yüzden onu kullanırken akıllı olun.

SharedPreferences'da lisans kontrolünün sonucunu kaydedin

Lisans kontrolünün sonucunu kaydetmek, .start () öğesini birden çok kez çağırmadan lisans durumunu kontrol etmek için kullanışlıdır.

Bunu yapmanın iki yolu vardır:

SharedPreferences'ı ve sonucu kaydetmek istediğiniz tercihin adını tanımlayın.

yeni PiracyChecker (bu)

.saveResultToSharedPreferences (preferences, valid_license) // valid_license değerini kendi değerinizle değiştir

.başla();

SharedPreferences adını ve sonucu kaydetmek istediğiniz tercihin adını tanımlayın.

yeni PiracyChecker (bu)

.saveResultToSharedPreferences (license_preferences, valid_license) // license_preferences ve valid_license öğelerini kendi değerinizle değiştirin

.başla();

Özelleştirmeler

Bir İletişim Kutusu'nda veya yeni bir Etkinlikte sonuçları görüntüleme

Lisans geçerli olmadığı zaman İletişim Kutusu yerine yeni bir Etkinlik göstermesi önerilir. Bu şekilde, uygulamanın ana etkinliğinin tamamlandığından emin olursunuz.

Varsayılan olarak, iptal edilemez bir İletişim Kutusu görüntülenecektir.

yeni PiracyChecker (bu)

.display (Display.ACTIVITY)

.başla();

Varsayılan olarak, görüntülenen Etkinlik kütüphane renklerini kullanacaktır. Özel bir birincil ve birincil koyu renk uygulamak ve etkinliğin normal veya açık durum çubuğu göstermesi gerekip gerekmediğini tanımlamak için şunu kullanın:

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

Aşağıdakileri kullanarak bu etkinlik içeriği için özel bir düzen xml de tanımlayabilirsiniz:

.withActivityLayout (R.layout.my_custom_layout)

Özel geri aramaların kullanılması

Oluşturucuya bir geri arama eklemek, lisansı kontrol edildikten sonra ne olacağını özelleştirmenize ve kullanıcının uygulamayı kullanmasına izin verilmediyse lisans kontrolü hatalarını yönetmenize olanak tanır. Bu yöntemi kullanırken , uygulamanın yetkisiz kullanıcılardan engellendiğini bilmeniz gerektiğini unutmayın.

Varsayılan olarak, kullanıcı uygulamayı kullanmasına izin verilmezse kütüphane iptal edilemez bir iletişim kutusu gösterecektir, aksi halde hiçbir şey olmayacaktır.

Oluşturucuyu kullanın ve şunları ekleyin:

.callback (yeni PiracyCheckerCallback () {

@Override

public void allow () {

// Kullanıcının uygulamayı kullanmasına izin verildiğinde bir şeyler yapın

}

@Override

public void dontAllow (@NonNull PiracyCheckerError hatası, @Nullable PirateApp uygulaması) {

// Kullanıcının uygulamayı kullanmasına izin verilmediğinde belirli bir şeyi yapabilirsin

// Ya da 'error' parametresini kullanarak hatayı yönetin ({@link PiracyCheckerError} adresindeki hataları kontrol edin).

// Ayrıca, korsan uygulamaların ve / veya üçüncü taraf mağazalarının kontrolünü etkinleştirdiyseniz, 'uygulama' paramı

// cihazda algılanan bir uygulamadır. Uygulama boş olabilir ve null olduğunda korsan uygulama veya mağaza bulunamadığı anlamına gelir.

// veya bu uygulamaların kontrolünü devre dışı bıraktınız.

// Bu, kullanıcılara lisansın geçersiz olmasının olası nedenlerini bilmelerini sağlar.

}

@Override

public void onError (@NonNull PiracyCheckerError hatası) {

// Bu yöntemin uygulanmasına / uygulanmasına gerek yoktur, ancak

// Lisans kontrol edilirken bir hata oluştuğunda belirli bir şey yapabilir,

// Ya da 'error' parametresini kullanarak hatayı yönetin ({@link PiracyCheckerError} adresindeki hataları kontrol edin).

}

})

PRO TIP: Sorun bilgisayarınız veya dizüstü bilgisayar / dizüstü bilgisayar ile yapılmışsa, depoları tarayabilen ve bozuk ve eksik dosyaları değiştirebilen Reimage Plus Yazılımı'nı kullanmayı denemeniz gerekir. Bu, çoğu durumda, sorunun sistem bozulmasından kaynaklandığı yerlerde çalışır. Reimage Plus'ı tıklayarak buraya tıklayarak indirebilirsiniz.

Facebook Twitter Google Plus Pinterest