Kako lahko razvijalci Androida zaščitijo svoje aplikacije pred hekerji IAP



Preizkusite Naš Instrument Za Odpravo Težav

Ta priročnik je namenjen razvijalcem aplikacij za Android, ki zaslužijo dohodek od aplikacij IAP in se želijo zaščititi pred hekerji in goljufivimi nakupi z orodji za vdiranje. Obstaja več dobro znanih orodij za vdiranje v IAP, ki jih tukaj ne bom našteval, toda v bistvu ta orodja v vašo aplikacijo pošiljajo lažne račune za nakup, da lahko uporabnik uživa v brezplačnih IAP-jih. To je lahko karkoli, od mesečnih naročnin do žetonov v igri.





Medtem ko se vedno izdajajo nove različice teh vdiralnih orodij in je skrbnost pri obveščanju o njihovih najnovejših posodobitvah in metodah zelo pomembna, lahko nekaj stvari zaščitite pred krajo aplikacij IAP. Predvsem morate omogočiti več načinov preverjanja IAP na strani strežnika, ki jih bom podrobneje opisal spodaj.



Ta priročnik ni namenjen začetnikom, ampak izkušenim razvijalcem aplikacij, ki bodo razumeli različne jezike v tem priročniku.

Uporaba vtičnika Git Repo, posebej za ta namen:

PiracyChecker

Dodajte repozitorij v svoj projekt build.gradle :



repozitoriji {

maven {

url “https://jitpack.io”

}

}

In dodajte knjižnico v svoj modul build.gradle :

odvisnosti {

prevedite ‘com.github.javiersantos: PiracyChecker: 1.1’

}

Priporočila

  • Vedno omogočite ProGuard v svojih izdajah.
  • PiracyChecker je treba vključiti v način onCreate, da čim prej preverite veljavno licenco.
  • Če licenca ni veljavna, je priporočljivo namesto dialoga prikazati novo dejavnost. Tako zagotovite, da je glavna dejavnost aplikacije končana. Glej Prikaz rezultatov v pogovornem oknu ali novi dejavnosti '.

Preverite licenciranje za Google Play (LVL)

Google Play ponuja licenčno storitev, ki vam omogoča uveljavljanje pravilnikov o licenciranju za programe, ki jih objavite v Googlu Play. Z licenco za Google Play lahko vaša aplikacija poizveduje v Googlu Play, da pridobi status licence za trenutnega uporabnika.

Vsaka aplikacija, ki jo objavite v Googlu Play, lahko uporablja storitev licenciranja Google Play. Poseben račun ali registracija ni potrebna.

nov PiracyChecker (to)

.enableGooglePlayLicensing (“BASE_64_LICENSE_KEY”)

...

.start ();

Če želite pridobiti licenčni ključ BASE64, morate aplikacijo naložiti v Konzola za razvijalce za Google Play . Nato odprite svojo aplikacijo -> Storitve in API-ji.

Ko uporabljate licenciranje Google Play, pokličite .destroy () v metodi onDestroy () v svoji dejavnosti, da se izognete večkratnim zagonom storitve.

Preverite potrdilo za podpisovanje aplikacije (podpis)

Razvijalci morajo aplikacije vedno podpisati z zasebnim ključem / potrdilom (vsebovano v datoteki .keystore), preden ga lahko namestite v uporabniške naprave. Potrdilo o podpisu mora ostati dosledno skozi celotno življenjsko dobo aplikacije in ima običajno rok veljavnosti 25 let.

Podpis aplikacije bo prekinjen, če je .apk kakor koli spremenjen - nepodpisanih aplikacij običajno ni mogoče namestiti. Lahko si predstavljamo, da napadalec odstranjuje kodo za preverjanje licence, da na primer omogoči celotne funkcije aplikacije brez plačila. Nevarnejši primer bi bil spremeniti .apk tako, da v legitimno aplikacijo vključi zlonamerno programsko opremo za zbiranje občutljivih podatkov uporabnika. Za namestitev spremenjenega .apk mora napadalec odstopiti.

nov PiracyChecker (to)

.enableSigningCertificate (“478yYkKAQF + KST8y4ATKvHkYibo =”) // Prvotni podpis APK-ja za različico PRODUKCIJE

...

.start ();

BODI PREVIDEN!! Podpis aplikacije je mogoče pridobiti z metodo PiracyCheckerUtils. Prepričajte se, da ste APK podpisali s shrambo ključev PRODUKCIJA (ne z uporabo DEBUG) in namestili različico, ki jo nameravate distribuirati. Nato kopirajte podpis, ki ga vrne ta metoda, na konzolo in prilepite .enableSigningCertificate (“YOUR_APK_SIGNATURE”)

// Ta metoda bo v konzoli natisnila podpis aplikacije

Log.e (“SIGNATURE”, PiracyCheckerUtils.getAPKSignature (to));

Preverite namestitveni program

Če nameravate aplikacijo distribuirati samo v določeni trgovini, vam ta tehnika prepreči namestitev aplikacije v kateri koli drugi trgovini.

Podprte trgovine: Google Play, Amazon App Store in Samsung Galaxy Apps.

nov PiracyChecker (to)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

.enableInstallerId (InstallerID.GALAXY_APPS)

...

.start ();

BODI PREVIDEN!! To je res omejevalna tehnika, saj bo blokirala namestitev vaše aplikacije z drugim trgom ali neposredno namestitev .apk v napravo. Za večino primerov ni priporočljivo.

Preverite uporabo piratskih aplikacij

Če želite preveriti, ali ima uporabnik nameščene piratske aplikacije, lahko uporabite to kodo.

Preveril bo: Lucky Patcher, Uret Patcher, Freedom in CreeHack.

nov PiracyChecker (to)

.enableUnauthorizedAppsCheck ()

...

.start ();

Aplikacijo lahko blokirate, tudi če je ta piratska aplikacija odstranjena. To preprečuje popravljanje aplikacije in nato odstranite piratsko aplikacijo, da lahko še naprej uporabljate aplikacijo. Knjižnica bo shranila vrednost SharedPreference, da bo vedela, kdaj je zaznana piratska aplikacija.

To lahko storite na dva načina:

Določite SharedPreferences in ime nastavitve, kamor želite shraniti rezultat.

nov PiracyChecker (to)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (nastavitve, “app_unauthorized”) // Spremeni “app_unauthorized” s svojo vrednostjo

...

.start ();

Določite ime SharedPreferences in ime nastavitve, kamor želite shraniti rezultat.

nov PiracyChecker (to)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (“licence_preferences”, “app_unauthorized”) // Spremenite “licence_preferences” in “app_unauthorized” s svojo vrednostjo

...

.start ();

Preverite uporabo programov neodvisnih trgovin

Če želite preveriti, ali ima uporabnik nameščene programe neodvisnih trgovin, lahko uporabite to kodo.

Preverjal bo: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe in ACMarket.

nov PiracyChecker (to)

.enableStoresCheck ()

...

.start ();

Preverite, ali je aplikacija zgradba za odpravljanje napak

Če se vaša aplikacija izvaja na emulatorju zunaj razvojnega postopka, to kaže, da nekdo, ki ni vi, poskuša analizirati aplikacijo.

nov PiracyChecker (to)

.enableDebugCheck ()

...

.start ();

Preverite, ali se aplikacija izvaja v emulatorju

Zunaj razvoja je malo verjetno, da bi se vaša aplikacija izvajala na emulatorju, sproščanje aplikacij z omogočenim načinom odpravljanja napak pa je odsvetovano, saj omogoča povezanim računalnikom dostop do aplikacije in odpravljanje napak prek Android Debug Bridge.

logična globina = napačno;

nov PiracyChecker (to)

.enableEmulatorCheck (globoko)

...

.start ();

Opomba: globoko logično s pomočjo knjižnice naredi dodatne preglede, da ugotovi, ali je naprava emulator ali ne. Lahko povzroči nekaj čudnih zrušitev, zato bodite pametni pri uporabi.

Rezultat preverjanja licence shranite v SharedPreferences

Shranjevanje rezultata preverjanja licence je koristno za preverjanje stanja licence, ne da bi večkrat poklicali .start ().

To lahko storite na dva načina:

Določite SharedPreferences in ime nastavitve, kamor želite shraniti rezultat.

nov PiracyChecker (to)

.saveResultToSharedPreferences (preference, “valid_license”) // Spremenite “valid_license” z lastno vrednostjo

...

.start ();

Določite ime SharedPreferences in ime nastavitve, kamor želite shraniti rezultat.

nov PiracyChecker (to)

.saveResultToSharedPreferences (“licence_preferences”, “valid_license”) // Spremenite “license_preferences” in “valid_license” s svojo vrednostjo

...

.start ();

Prilagoditve

Prikaz rezultatov v pogovornem oknu ali novi dejavnosti

Če licenca ni veljavna, je priporočljivo namesto dialoga prikazati novo dejavnost. Tako zagotovite, da je glavna dejavnost aplikacije končana.

Privzeto se prikaže pogovorno okno, ki ga ni mogoče preklicati.

nov PiracyChecker (to)

.display (Display.ACTIVITY)

...

.start ();

Prikazana dejavnost bo privzeto uporabljala barve knjižnice. Če želite uporabiti primarno in primarno temno barvo po meri in določiti, ali naj dejavnost prikazuje normalno ali svetlo vrstico stanja, uporabite:

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

Za to vsebino dejavnosti lahko določite tudi postavitev xml po meri z uporabo:

.withActivityLayout (R.layout.my_custom_layout)

Uporaba povratnih klicev po meri

Če v graditelj dodate povratni klic, lahko prilagodite, kaj se bo zgodilo, ko je bila licenca preverjena, in upravljate napake pri preverjanju licence, če uporabnik ne sme uporabljati aplikacije. Upoštevajte, da pri uporabi te metode zavedati se morate blokiranja aplikacije pred nepooblaščenimi uporabniki .

Če uporabnik ne sme uporabljati aplikacije, bo knjižnica privzeto prikazala pogovorno okno, ki ga ni mogoče preklicati, sicer se ne bo zgodilo nič.

Uporabite graditelj in dodajte naslednje:

.callback (novo PiracyCheckerCallback () {

@Override

javna praznina allow () {

// Naredite nekaj, ko lahko uporabnik uporablja aplikacijo

}

@Override

javna praznina dontAllow (@NonNull PiracyCheckerError error, @Nullable PirateApp app) {

// Lahko naredite nekaj posebnega, če uporabnik ne sme uporabljati aplikacije

// Ali pa napako upravljajte sami s pomočjo parametra ‘error’ (Preverite napake na {@link PiracyCheckerError}).

// Poleg tega, če ste omogočili preverjanje piratskih aplikacij in / ali trgovin tretjih oseb, parameter ‘app’

// je aplikacija, ki je bila zaznana v napravi. Aplikacija je lahko nična in če je nična, pomeni, da ni bila najdena nobena piratska aplikacija ali trgovina,

// ali ste onemogočili preverjanje teh aplikacij.

// To vam omogoča, da uporabnike seznanite z možnimi razlogi, zaradi katerih je licenca neveljavna.

}

@Override

javna void onError (napaka @NonNull PiracyCheckerError) {

// Te metode ni treba izvajati / razveljaviti, ampak ...

// Kadar pride do napake med preverjanjem licence, lahko storite nekaj posebnega,

// Ali pa napako upravljajte sami s pomočjo parametra ‘error’ (Preverite napake na {@link PiracyCheckerError}).

}

})

6 minut branja