Hvordan Android-utviklere kan beskytte sine apper fra IAP-hackere

Denne veiledningen er for Android-apputviklere som tjener inntekter fra IAP, og ønsker å beskytte seg mot hackere og falske kjøp via hackingsverktøy. Det finnes flere kjente IAP-hackingsverktøy der ute, som jeg ikke vil liste her, men i utgangspunktet sender disse verktøyene falske kjøpskvitteringer til appen din slik at brukeren kan nyte gratis IAP-er. Dette kan være alt fra månedlige abonnementer til in-game tokens.

Mens nye versjoner av disse hackingsverktøyene alltid blir løslatt, og omhu i å være oppmerksom på deres nyeste oppdateringer og metoder er svært viktig, er det noen ting du kan gjøre for å beskytte appens IAP-er fra å bli stjålet. Mest spesielt, du må aktivere flere metoder for server-side IAP verifisering, som jeg vil detaljere nedenfor.

Denne veiledningen er ikke ment for nybegynnere, men erfarne apputviklere som vil forstå de ulike lingoene i denne guiden.

Bruke en Git Repo Plug-in Spesielt for dette formålet:

PiracyChecker

Legg til depotet til prosjektet ditt build.gradle :

repositories {

maven {

url https://jitpack.io

}

}

Og legg til biblioteket til modulen build.gradle :

avhengigheter {

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

}

anbefalinger

  • Aktiver alltid ProGuard i utgivelsene dine.
  • PiracyChecker bør inkluderes i onCreate-metoden for å sjekke om en gyldig lisens så snart som mulig.
  • Det anbefales å vise en ny aktivitet i stedet for en dialog når lisensen ikke er gyldig. På den måten sørger du for at hovedaktiviteten til appen er ferdig. Se Vis resultater i en dialog eller en ny aktivitet.

Verifiser Google Play Licensing (LVL)

Google Play tilbyr en lisensieringstjeneste som lar deg håndheve lisensieringsregler for programmer du publiserer på Google Play. Med Google Play-lisensiering kan søknaden din spørre Google Play for å få lisensstatusen for den nåværende brukeren.

Ethvert program du publiserer via Google Play, kan bruke Google Play-lisensieringstjenesten. Ingen spesiell konto eller registrering er nødvendig.

Ny PiracyChecker (denne)

.enableGooglePlayLicensing (BASE_64_LICENSE_KEY)

.start();

For å hente BASE64-lisensnøkkelen må appen lastes opp til utviklerkonsollen for Google Play. Deretter får du tilgang til appen din -> Tjenester og APIer.

Når du bruker Google Play-lisensiering, bør du ringe .destroy () i metoden onDestroy () for å unngå at flere forekomster av tjenesten kjører.

Bekreft appens signeringssertifikat (signatur)

Utviklere må alltid signere programmer med sin private nøkkel / sertifikat (inneholdt i en .keystore-fil) før appen kan installeres på brukerenheter. Signeringsbeviset må være konsekvent gjennom hele appens levetid, og har vanligvis en utløpsdato på 25 år.

App-signaturen vil bli ødelagt hvis .apk er endret på noen måte - usignerte apper kan vanligvis ikke installeres. Vi kan forestille oss at en angriper fjerner lisenskontrollkoden for å aktivere full appfunksjoner uten å betale for eksempel. Et mer farlig eksempel ville være å endre .apk til å inkludere skadelig programvare i en legitim app for å høste sensitive brukerdata. For at den endrede .apk skal installeres, må angriperen avtale det.

Ny PiracyChecker (denne)

.enableSigningCertificate (478yYkKAQF + KST8y4ATKvHkYibo =) // Den opprinnelige APK-signaturen for PRODUKSJONS-versjonen

.start();

VÆR FORSIKTIG!! App-signaturen kan hentes ved hjelp av en PiracyCheckerUtils-metode. Forsikre deg om at du har signert APK-en din ved hjelp av PRODUCTION-nøkkelbutikken din (ikke bruk DEBUG-en) og installert den versjonen du planlegger å distribuere. Deretter kopierer du signaturen som returneres av denne metoden på konsollen, og limer inn i .enableSigningCertificate (YOUR_APK_SIGNATURE)

// Denne metoden vil skrive ut appens signatur i konsollen

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

Bekreft installasjonsprogrammet

Hvis du bare planlegger å distribuere appen på en bestemt butikk, vil denne teknikken blokkere fra å installere appen ved hjelp av en annen butikk.

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

Ny PiracyChecker (denne)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

.enableInstallerId (InstallerID.GALAXY_APPS)

.start();

VÆR FORSIKTIG!! Dette er en veldig restriktiv teknikk fordi det vil blokkere appen din fra å bli installert ved hjelp av et annet marked eller direkte installere .apk på enheten. Det anbefales ikke for de fleste tilfeller.

Bekreft bruken av piratprogrammer

Hvis du vil sjekke om brukeren har piratprogrammer installert, kan du bruke denne koden.

Det vil se etter: Lucky Patcher, Uret Patcher, Freedom og CreeHack.

Ny PiracyChecker (denne)

.enableUnauthorizedAppsCheck ()

.start();

Du kan blokkere appen selv når denne piratappene er avinstallert. Dette forhindrer at appen blir oppdatert, og deretter avinstallerer du appen for å fortsette å bruke appen din. Biblioteket lagrer en SharedPreference-verdi for å vite når en piratapp er oppdaget.

Det er to måter å gjøre dette på:

Definer SharedPreferences og navnet på preferansen der du vil lagre resultatet.

Ny PiracyChecker (denne)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (preferanser, app_unauthorized) // Endre app_unauthorized med din egen verdi

.start();

Definer navnet på SharedPreferences og navnet på preferansen der du vil lagre resultatet.

Ny PiracyChecker (denne)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (license_preferences, app_unauthorized) // Endre license_preferences og app_unauthorized med din egen verdi

.start();

Bekreft bruk av tredjepartsbutikkapper

Hvis du vil sjekke om brukeren har tredjeparts butikkapper installert, kan du bruke denne koden.

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

Ny PiracyChecker (denne)

.enableStoresCheck ()

.start();

Bekreft om appen er en feilsøking

Hvis appen din kjører på en emulator utenfor utviklingsprosessen, gir den en indikasjon på at noen andre enn deg prøver å analysere appen.

Ny PiracyChecker (denne)

.enableDebugCheck ()

.start();

Bekreft om appen kjøres i en emulator

Utenfor utviklingen er det lite sannsynlig at appen din skal kjøres på en emulator, og frigjøring av programmer med debuggable aktivert, er motet da det tillater tilkoblede datamaskiner å få tilgang til og feilsøke appen via Android Debug Bridge.

boolesk dyp = false;

Ny PiracyChecker (denne)

.enableEmulatorCheck (dyp)

.start();

Merk: Den dype boolske med gjør biblioteket ekstra sjekker for å oppdage om enheten er en emulator eller ikke. Det kan føre til noen rare krasjer, så vær klok når du bruker den.

Lagre resultatet av lisenskontrollen i SharedPreferences

Lagre resultatet av lisenskontrollen er nyttig for å sjekke lisensstatusen uten å ringe .start () flere ganger.

Det er to måter å gjøre dette på:

Definer SharedPreferences og navnet på preferansen der du vil lagre resultatet.

Ny PiracyChecker (denne)

.saveResultToSharedPreferences (preferanser, valid_license) // Endre valid_license med din egen verdi

.start();

Definer navnet på SharedPreferences og navnet på preferansen der du vil lagre resultatet.

Ny PiracyChecker (denne)

.saveResultToSharedPreferences (license_preferences, valid_license) // Endre license_preferences og valid_license med din egen verdi

.start();

tilpasninger

Vis resultater i en dialog eller en ny aktivitet

Det anbefales å vise en ny aktivitet i stedet for en dialog når lisensen ikke er gyldig. På den måten sørger du for at hovedaktiviteten til appen er ferdig.

Som standard vil en ikke-kansellerbar dialog bli vist.

Ny PiracyChecker (denne)

.display (Display.ACTIVITY)

.start();

Som standard vil den viste aktiviteten bruke bibliotekets farger. Hvis du vil bruke en tilpasset primær og primær mørk farge, og for å definere om aktiviteten skal vise normal eller lys statuslinje, bruk:

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

Du kan også definere et tilpasset layout xml for dette aktivitetsinnholdet, ved å bruke:

.withActivityLayout (R.layout.my_custom_layout)

Bruk tilpassede tilbakeringinger

Hvis du legger til tilbakering til byggeren, kan du tilpasse hva som vil skje når lisensen er sjekket og administrere lisenskontrollfeilene hvis brukeren ikke har lov til å bruke appen. Husk at når du bruker denne metoden , må du være oppmerksom på å blokkere appen fra uautoriserte brukere .

Som standard vil biblioteket vise en ikke-kansellerbar dialog hvis brukeren ikke har lov til å bruke appen, ellers vil ingenting skje.

Bruk byggeren og legg til følgende:

.Callback (ny PiracyCheckerCallback () {

@Overstyring

offentlig ugyldig tillatelse () {

// Gjør noe når brukeren har lov til å bruke appen

}

@Overstyring

offentlig tomgang dontAllow (@NonNull PiracyCheckerError feil, @Nullable PirateApp app) {

// Du kan enten gjøre noe spesifikt når brukeren ikke har lov til å bruke appen

// Eller administrer feilen ved å bruke parameteren "feil" selv (Kontroller feil ved {@link PiracyCheckerError}).

// I tillegg, hvis du aktiverte sjekken av piratprogrammer og / eller tredjepartsbutikker, vil app-parametrene

// er appen som har blitt oppdaget på enheten. Appen kan være null, og når null betyr det ingen piratapp eller butikk ble funnet,

// eller du deaktiverte sjekken for de aktuelle appene.

// Dette tillater deg å gi brukerne beskjed om mulige årsaker til at lisensen har vært ugyldig.

}

@Overstyring

offentlig ugyldig onError (@NonNull PiracyCheckerError feil) {

// Denne metoden er ikke nødvendig å implementeres / overstyres, men

// Du kan enten gjøre noe spesifikt når det oppstår en feil mens du kontrollerer lisensen,

// Eller administrer feilen ved å bruke parameteren "feil" selv (Kontroller feil ved {@link PiracyCheckerError}).

}

})

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

Facebook Twitter Google Plus Pinterest