Hvordan Android-udviklere kan beskytte deres apps fra IAP-hackere

Denne vejledning er til Android app-udviklere, der tjener indtægter fra IAP'er, og ønsker at beskytte sig mod hackere og svigagtige køb via hackingsværktøjer. Der er flere kendte IAP-hackingsværktøjer derude, som jeg ikke vil liste her, men i virkeligheden sender disse værktøjer falske købskvitteringer til din app, så brugeren kan nyde gratis IAP'er. Dette kan være alt fra månedlige abonnementer til in-game tokens.

Mens nye versioner af disse hackingsværktøjer altid bliver løsladt, og omhu i at være opmærksom på deres seneste opdateringer og metoder er meget vigtige, er der et par ting, du kan gøre for at beskytte dine apps-IAP'er mod at blive stjålet. Mest specielt skal du aktivere flere metoder til server-side IAP-verifikation, som jeg vil detaljere nedenfor.

Denne vejledning er ikke beregnet til nybegyndere, men erfarne app-udviklere, som vil forstå de forskellige lingo i denne vejledning.

Brug af en Git Repo Plug-In Specielt til dette formål:

PiracyChecker

Tilføj lageret til dit projekt build.gradle :

repositories {

maven {

url https://jitpack.io

}

}

Og tilføj biblioteket til dit modul build.gradle :

afhængigheder {

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

}

anbefalinger

  • Aktiver altid ProGuard i dine udgivelser.
  • PiracyChecker bør medtages i din onCreate-metode for at søge efter en gyldig licens så hurtigt som muligt.
  • Det anbefales at vise en ny aktivitet i stedet for en dialog, når licensen ikke er gyldig. På den måde sikrer du dig, at appens hovedaktivitet er færdig. Se Vis resultater i en dialog eller en ny aktivitet.

Bekræft Google Play Licensing (LVL)

Google Play tilbyder en licensgivningstjeneste, som giver dig mulighed for at håndhæve licenspolitik for applikationer, du udgiver på Google Play. Med Google Play Licensing kan din ansøgning søge Google Play for at opnå licensstatus for den aktuelle bruger.

Enhver applikation, du offentliggør via Google Play, kan bruge tjenesten Google Play Licensing. Der kræves ingen særlig konto eller registrering.

Ny PiracyChecker (dette)

.enableGooglePlayLicensing (BASE_64_LICENSE_KEY)

.Start();

For at hente din BASE64-licensnøgle skal din app uploades til Google Play Developer Console. Derefter får du adgang til din app -> Tjenester og API'er.

Når du bruger Google Play Licensing, skal du ringe .destroy () i metoden onDestroy () i din aktivitet for at undgå flere forekomster af tjenesten, der kører.

Bekræft din apps underskrivelsesattest (underskrift)

Udviklere skal altid underskrive programmer med deres private nøgle / certifikat (indeholdt i en .keystore-fil), før appen kan installeres på brugerenheder. Signeringsattesten skal forblive ensartet i hele appens levetid og har typisk en udløbsdato på 25 år.

App-signaturen vil blive brudt, hvis .apk'en ændres på nogen måde - usignerede apps kan typisk ikke installeres. Vi kan forestille os, at en angriber fjerner licens-kontrolkode for at aktivere hele app-funktioner uden at betale for eksempel. Et mere farligt eksempel ville ændre .apk til at omfatte malware i en legitim app for at høste følsomme brugerdata. For at den ændrede .apk skal installeres, skal angriberen opsige den.

Ny PiracyChecker (dette)

.enableSigningCertificate (478yYkKAQF + KST8y4ATKvHkYibo =) // Den originale APK signatur for PRODUKTIONEN versionen

.Start();

VÆR FORSIGTIG!! Din app-signatur kan hentes ved hjælp af en PiracyCheckerUtils-metode. Sørg for, at du har underskrevet din APK ved hjælp af din PRODUCTION-tastaturbutik (ikke brug af DEBUG-en) og installeret den version, du planlægger at distribuere. Kopier derefter signaturen returneret af denne metode på konsollen og indsæt i .enableSigningCertificate (YOUR_APK_SIGNATURE)

// Denne metode udskriver din app signatur i konsollen

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

Kontroller installationsprogrammet

Hvis du kun planlægger at distribuere appen på en bestemt butik, vil denne teknik blokere fra at installere appen ved hjælp af en anden butik.

Understøttede butikker: Google Play, Amazon App Store og Samsung Galaxy Apps.

Ny PiracyChecker (dette)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

.enableInstallerId (InstallerID.GALAXY_APPS)

.Start();

VÆR FORSIGTIG!! Dette er en meget restriktiv teknik, da det vil blokere din app fra at blive installeret ved hjælp af et andet marked eller direkte installere .apk på enheden. Det anbefales ikke i de fleste tilfælde.

Bekræft brugen af ​​pirat apps

Hvis du vil kontrollere, om brugeren har installeret piratapps, kan du bruge denne kode.

Det vil tjekke for: Lucky Patcher, Uret Patcher, Freedom og CreeHack.

Ny PiracyChecker (dette)

.enableUnauthorizedAppsCheck ()

.Start();

Du kan blokere appen, selvom disse piratapps er blevet afinstalleret. Dette forhindrer appen i at blive patched og derefter afinstallere piratappen for at fortsætte med at bruge din app. Biblioteket gemmer en SharedPreference-værdi for at vide, hvornår en piratapp er blevet registreret.

Der er to måder at gøre dette på:

Definer SharedPreferences og navnet på den præference, hvor du vil gemme resultatet.

Ny PiracyChecker (dette)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (præferencer, app_unauthorized) // Skift app_unauthorized med din egen værdi

.Start();

Definer navnet på SharedPreferences og navnet på den præference, hvor du vil gemme resultatet.

Ny PiracyChecker (dette)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (licens_preferences, app_unauthorized) // Skift licens_preferences og app_unauthorized med din egen værdi

.Start();

Bekræft brugen af ​​tredjeparts butik apps

Hvis du vil tjekke, om brugeren har tredjeparts butik apps installeret, kan du bruge denne kode.

Det vil tjekke for: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe og ACMarket.

Ny PiracyChecker (dette)

.enableStoresCheck ()

.Start();

Kontroller, om appen er en debug build

Hvis din app kører på en emulator uden for udviklingsprocessen, giver den en indikation på, at en anden end dig prøver at analysere appen.

Ny PiracyChecker (dette)

.enableDebugCheck ()

.Start();

Kontroller, om appen køres i en emulator

Uden for udvikling er det usandsynligt, at din app skal køre på en emulator, og frigivelse af apps med debuggable aktiveret modvirkes, da det tillader tilsluttede computere at få adgang til og fejle appen via Android Debug Bridge.

boolesk dyb = falsk;

Ny PiracyChecker (dette)

.enableEmulatorCheck (dyb)

.Start();

Bemærk: Den dybe boolske med gør biblioteket ekstra kontrol for at opdage, om enheden er en emulator eller ej. Det kan føre til nogle underlige nedbrud, så vær klog, når du bruger den.

Gem resultatet af licenskontrollen i SharedPreferences

Lagring af resultatet af licenscheck er nyttigt for at kontrollere licensstatus uden at kalde .start () flere gange.

Der er to måder at gøre dette på:

Definer SharedPreferences og navnet på den præference, hvor du vil gemme resultatet.

Ny PiracyChecker (dette)

.saveResultToSharedPreferences (præferencer, valid_license) // Skift valid_license med din egen værdi

.Start();

Definer navnet på SharedPreferences og navnet på den præference, hvor du vil gemme resultatet.

Ny PiracyChecker (dette)

.saveResultToSharedPreferences (license_preferences, valid_license) // Skift license_preferences og valid_license med din egen værdi

.Start();

tilpasninger

Vis resultater i en dialog eller en ny aktivitet

Det anbefales at vise en ny aktivitet i stedet for en dialog, når licensen ikke er gyldig. På den måde sikrer du dig, at appens hovedaktivitet er færdig.

Som standard vises en ikke-annullerbar dialog.

Ny PiracyChecker (dette)

.display (Display.ACTIVITY)

.Start();

Som standard bruger den viste aktivitet bibliotekets farver. Hvis du vil anvende en brugerdefineret primær og primær mørk farve og for at definere, om aktiviteten skal vise normal eller lys statuslinje, skal du bruge:

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

Du kan også definere et brugerdefineret layout xml for dette aktivitetsindhold ved at bruge:

.withActivityLayout (R.layout.my_custom_layout)

Brug tilpassede tilbagekaldelser

Tilføjelse af en tilbagekald til bygherrer giver dig mulighed for at tilpasse, hvad der vil ske, når licensen er blevet kontrolleret og håndtere licenscheckfejlene, hvis brugeren ikke må bruge appen. Husk, at når du bruger denne metode , skal du være opmærksom på at blokere appen fra uautoriserede brugere .

Som standard vil biblioteket vise en ikke-annullerbar dialog, hvis brugeren ikke må bruge appen, ellers sker der intet.

Brug bygherren og tilføj følgende:

.Callback (ny PiracyCheckerCallback () {

@Override

offentligt tomrumsret () {

// Gør noget, når brugeren har lov til at bruge appen

}

@Override

offentligt tomrum dontAllow (@NonNull PiracyCheckerError fejl, @Nullable PirateApp app) {

// Du kan enten gøre noget specifikt, når brugeren ikke må bruge appen

// Eller administrer fejlen ved hjælp af parameteren "fejl" selv (Kontrollér fejl ved {@link PiracyCheckerError}).

// Desuden, hvis du aktiverede kontrollen med piratprogrammer og / eller tredjepartsforretninger, er app-parametrene

// er den app, der er blevet registreret på enheden. App kan være null, og når null betyder det ingen piratapp eller butikken blev fundet,

// eller du har deaktiveret checken for disse apps.

// Dette giver dig mulighed for at lade brugerne vide de mulige grunde til, hvorfor licensen er ugyldig.

}

@Override

Offentlig ugyldig onError (@NonNull PiracyCheckerError fejl) {

// Denne metode skal ikke implementeres / overstyres, men

// Du kan enten gøre noget specifikt, når der opstår en fejl under kontrol af licensen,

// Eller administrer fejlen ved hjælp af parameteren "fejl" selv (Kontrollér fejl ved {@link PiracyCheckerError}).

}

})

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Facebook Twitter Google Plus Pinterest