Kaip „Android“ kūrėjai gali apsaugoti savo programas nuo IAP įsilaužėlių



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Šis vadovas skirtas „Android“ programų kūrėjams, kurie uždirba pajamas iš interneto programų ir nori apsisaugoti nuo įsilaužėlių ir apgaulingų pirkinių naudodami įsilaužimo įrankius. Yra keletas žinomų IAP įsilaužimo įrankių, kurių čia neišvardysiu, tačiau iš esmės šie įrankiai siunčia klaidingus pirkimo čekius į jūsų programą, kad vartotojas galėtų mėgautis nemokamais IAP. Tai gali būti viskas, pradedant mėnesio prenumeratomis ir žaidimų žetonais.





Nors visuomet išleidžiamos naujos šių įsilaužimo įrankių versijos, o kruopštumas norint žinoti jų naujausius atnaujinimus ir metodus yra labai svarbus, galite apsaugoti savo programų IP nuo pavogimo, atlikdami keletą veiksmų. Visų pirma, turite įgalinti kelis serverio IAP tikrinimo metodus, kuriuos aš išsamiau aprašysiu žemiau.



Šis vadovas nėra skirtas pradedantiesiems, bet patyrusiems programų kūrėjams, kurie supras įvairius šio vadovo žodžius.

Šiam tikslui naudokite „Git Repo“ papildinį:

„PiracyChecker“

Pridėkite saugyklą prie savo projekto statyti.gradle :



saugyklos {

maven {

URL „https://jitpack.io“

}

}

Ir pridėkite biblioteką prie savo modulio statyti.gradle :

priklausomybės {

sudarykite „com.github.javiersantos: PiracyChecker: 1.1“

}

Rekomendacijos

  • Visada įgalinkite „ProGuard“ savo leidimuose.
  • „PiracyChecker“ turėtų būti įtrauktas į jūsų „onCreate“ metodą, kad kuo greičiau patikrintumėte galiojančią licenciją.
  • Kai licencija negalioja, rekomenduojama vietoje dialogo rodyti naują veiklą. Tokiu būdu įsitikinsite, kad pagrindinė programos veikla yra baigta. Pamatyti ' Pateikti rezultatus pateikiamas dialogas arba nauja veikla '.

Patvirtinkite „Google Play“ licencijavimą (LVL)

„Google Play“ siūlo licencijavimo paslaugą, kuri leidžia įgyvendinti „Google Play“ skelbiamų programų licencijavimo politiką. Naudodama „Google Play“ licencijavimą, jūsų programa gali pateikti užklausą „Google Play“, kad gautų dabartinio vartotojo licencijavimo būseną.

Bet kuri programa, kurią paskelbiate per „Google Play“, gali naudoti „Google Play“ licencijavimo paslaugą. Specialios paskyros ar registracijos nereikia.

naujas „PiracyChecker“ (šis)

.enableGooglePlayLicensing („BASE_64_LICENSE_KEY“)

...

. pradėti ();

Norint gauti BASE64 licencijos raktą, jūsų programa turi būti įkelta į „Google Play“ kūrėjų pultas . Tada pasiekite savo programą -> Paslaugos ir API.

Naudodamiesi „Google Play“ licencijavimu, turėtumėte paskambinti .destroy () savo veiklos metodu onDestroy (), kad išvengtumėte daugybės paslaugos egzempliorių.

Patikrinkite programos pasirašymo sertifikatą (parašą)

Kūrėjai visada turi pasirašyti programas naudodami savo privatųjį raktą / sertifikatą (esančius .keystore faile), kad programą būtų galima įdiegti vartotojo įrenginiuose. Pasirašymo pažymėjimas turi išlikti nuoseklus visą programos veikimo laiką ir paprastai jo galiojimo laikas yra 25 metai.

Programos parašas bus sugadintas, jei .apk bus pakeistas kaip nors kitaip - nepasirašytų programų paprastai negalima įdiegti. Galime įsivaizduoti, kad užpuolikas pašalina licencijos tikrinimo kodą, kad, pavyzdžiui, nemokėdamas įgalintų visas programos funkcijas. Pavojingesnis pavyzdys būtų .apk pakeitimas, įtraukiant kenkėjiškas programas į teisėtą programą, kad būtų renkami neskelbtini vartotojo duomenys. Kad pakeistas .apk būtų įdiegtas, užpuolikas turi jį atsistatydinti.

naujas „PiracyChecker“ (šis)

.enableSigningCertificate („478yYkkaQF + KST8y4ATKvHkYibo =“) // Originalus „PRODUCTION“ versijos APK parašas

...

. pradėti ();

BŪK ATSARGUS!! Programos parašą galima gauti naudojant „PiracyCheckerUtils“ metodą. Įsitikinkite, kad pasirašėte APK naudodami „PRODUCTION“ pagrindinę parduotuvę (nenaudojate „DEBUG“) ir įdiegėte versiją, kurią planuojate platinti. Tada nukopijuokite šiuo metodu grąžintą parašą konsolėje ir įklijuokite .enableSigningCertificate („YOUR_APK_SIGNATURE“)

// Šis metodas atspausdins jūsų programos parašą konsolėje

„Log.e“ („PARAŠAS“, „PiracyCheckerUtils.getAPKSignature“ (šis));

Patikrinkite diegimo programą

Jei planuojate platinti programą tik tam tikroje parduotuvėje, ši technika neleis įdiegti programos naudojant bet kurią kitą parduotuvę.

Palaikomos parduotuvės: „Google Play“, „Amazon App Store“ ir „Samsung Galaxy Apps“.

naujas „PiracyChecker“ (šis)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

.enableInstallerId (InstallerID.GALAXY_APPS)

...

. pradėti ();

BŪK ATSARGUS!! Tai tikrai ribojanti technika, nes ji užblokuos jūsų programos diegimą naudojant kitą rinką arba tiesiogiai įdiegiant .apk įrenginyje. Tai nerekomenduojama daugeliu atvejų.

Patikrinkite, ar naudojamos piratų programos

Jei norite patikrinti, ar vartotojas turi įdiegtas piratų programas, galite naudoti šį kodą.

Jis patikrins: Lucky Patcher, Uret Patcher, Freedom ir CreeHack.

naujas „PiracyChecker“ (šis)

.enableUnauthorizedAppsCheck ()

...

. pradėti ();

Galite užblokuoti programą net tada, kai šios piratų programos buvo pašalintos. Tai apsaugo programą nuo pataisymo ir pašalina piratų programą, kad galėtumėte toliau naudoti programą. Biblioteka išsaugos „SharedPreference“ vertę, kad žinotų, kada aptikta piratų programa.

Tai galima padaryti dviem būdais:

Apibrėžkite „SharedPreferences“ ir nuostatų, kuriose norite išsaugoti rezultatą, pavadinimą.

naujas „PiracyChecker“ (šis)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (nuostatos, „app_unauthorized“) // Pakeiskite „app_unauthorized“ naudodami savo vertę

...

. pradėti ();

Apibrėžkite „SharedPreferences“ pavadinimą ir nuostatų, kuriose norite išsaugoti rezultatą, pavadinimą.

naujas „PiracyChecker“ (šis)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled („license_preferences“, „app_unauthorized“) // Pakeiskite „license_preferences“ ir „app_unauthorized“ savo verte

...

. pradėti ();

Patikrinkite, ar naudojamos trečiųjų šalių parduotuvių programos

Jei norite patikrinti, ar vartotojas turi įdiegtas trečiųjų šalių parduotuvių programas, galite naudoti šį kodą.

Jis patikrins: „Aptoide“, „BlackMart“, „Mobogenie“, „1Mobile“, „GetApk“, „GetJar“, „SlideMe“ ir „ACMarket“.

naujas „PiracyChecker“ (šis)

.enableStoresCheck ()

...

. pradėti ();

Patikrinkite, ar programa yra derinimo versija

Jei jūsų programa veikia emuliatoriuje, kuris nėra kūrimo procesas, tai rodo, kad kažkas, išskyrus jus, bando analizuoti programą.

naujas „PiracyChecker“ (šis)

.enableDebugCheck ()

...

. pradėti ();

Patikrinkite, ar programa vykdoma emuliatoriuje

Be kūrimo, mažai tikėtina, kad jūsų programa turėtų veikti emuliatoriumi, o išleisti programas, kuriose įgalintas derinimas, nerekomenduojama, nes tai leidžia prijungtiems kompiuteriams pasiekti ir derinti programą per „Android Debug Bridge“.

loginis gylis = klaidingas;

naujas „PiracyChecker“ (šis)

.enableEmulatorCheck (gilus)

...

. pradėti ();

Pastaba: gilusis loginis logotipas su biblioteka priverčia papildomai tikrinti, ar įrenginys yra emuliatorius, ar ne. Tai gali sukelti keistų avarijų, todėl būkite protingi ją naudodami.

Išsaugokite licencijos patikrinimo rezultatą „SharedPreferences“

Išsaugoti licencijos patikrinimo rezultatą yra naudinga norint patikrinti licencijos būseną kelis kartus nekvietus .start ().

Tai galima padaryti dviem būdais:

Apibrėžkite „SharedPreferences“ ir nuostatų, kuriose norite išsaugoti rezultatą, pavadinimą.

naujas „PiracyChecker“ (šis)

.saveResultToSharedPreferences (nuostatos, „valid_license“) // Pakeiskite „valid_license“ savo verte

...

. pradėti ();

Apibrėžkite „SharedPreferences“ pavadinimą ir nuostatų, kuriose norite išsaugoti rezultatą, pavadinimą.

naujas „PiracyChecker“ (šis)

.saveResultToSharedPreferences („license_preferences“, „valid_license“) // Pakeiskite „license_preferences“ ir „valid_license“ savo verte

...

. pradėti ();

Tinkinimai

Pateikti rezultatus pateikiamas dialogas arba nauja veikla

Kai licencija negalioja, rekomenduojama vietoje dialogo rodyti naują veiklą. Tokiu būdu įsitikinsite, kad pagrindinė programos veikla yra baigta.

Pagal numatytuosius nustatymus bus rodomas neatšaukiamas dialogo langas.

naujas „PiracyChecker“ (šis)

.display (Display.ACTIVITY)

...

. pradėti ();

Pagal numatytuosius nustatymus rodomoje veikloje bus naudojamos bibliotekos spalvos. Norėdami pritaikyti pasirinktinę pagrindinę ir pagrindinę tamsią spalvą ir nustatyti, ar veikloje turėtų būti rodoma įprasta ar šviesi būsenos juosta, naudokite:

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

Taip pat galite apibrėžti pasirinktinį šio veiklos turinio išdėstymą xml naudodami:

.withActivityLayout (R.layout.my_custom_layout)

Naudojant pasirinktinius atgalinius skambučius

Pridėję atgalinį skambutį kūrėjui, galite tinkinti, kas nutiks patikrinus licenciją, ir valdyti licencijos tikrinimo klaidas, jei vartotojui neleidžiama naudoti programos. Atminkite, kad naudojant šį metodą turite žinoti, kad blokuojate programą nuo pašalinių vartotojų .

Pagal numatytuosius nustatymus bibliotekoje bus rodomas neatšaukiamas dialogo langas, jei vartotojui nebus leista naudotis programa, kitaip nieko neįvyks.

Pasinaudokite kūrėju ir pridėkite:

.callback (naujas „PiracyCheckerCallback“) {

@ Nepaisyti

public void allow () {

// Atlikite ką nors, kai vartotojui leidžiama naudoti programą

}

@ Nepaisyti

public void dontAllow (@NonNull PiracyCheckerError klaida, @Nullable PirateApp programa) {

// Galite padaryti ką nors konkretaus, kai vartotojui neleidžiama naudoti programos

// Arba patys tvarkykite klaidą naudodami parametrą „error“ (patikrinkite klaidas apsilankę {@link PiracyCheckerError}).

// Be to, jei įgalinote tikrinti piratų programas ir (arba) trečiųjų šalių parduotuves, „programos“ param

// yra įrenginyje aptikta programa. Programa gali būti niekinė, o kai ji yra nulinė, tai reiškia, kad nerasta jokių piratų programų ar parduotuvių,

// arba išjungėte tų programų patikrinimą.

// Tai leidžia pranešti vartotojams apie galimas priežastis, kodėl licencija negalioja.

}

@ Nepaisyti

public void onError (@NonNull PiracyCheckerError klaida) {

// Šio metodo įgyvendinti / perrašyti nereikia, bet…

// Galite atlikti kažką konkretaus, kai tikrinant licenciją įvyksta klaida,

// Arba patys tvarkykite klaidą naudodami parametrą „error“ (patikrinkite klaidas apsilankę {@link PiracyCheckerError}).

}

})

6 minutes perskaityta