Hogyan védhetik meg az Android fejlesztők alkalmazásaikat az IAP hackerek ellen



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Ez az útmutató azoknak az Android alkalmazás-fejlesztőknek szól, akik bevételt szereznek az IAP-kból, és hackereszközökön keresztül meg akarják védeni magukat a hackerek és a csalárd vásárlások ellen. Számos ismert IAP-hackelő eszköz létezik, amelyeket itt nem sorolok fel, de alapvetően ezek az eszközök hamis vásárlási bizonylatokat küldenek az alkalmazásodba, hogy a felhasználó ingyenes IAP-okat élvezhessen. Ez bármi lehet, a havi előfizetésektől a játékon belüli tokenekig.





Míg ezeknek a hackereszközöknek mindig kiadják az új verzióit, és nagyon fontos a gondosság, hogy tudatában legyenek legújabb frissítéseiknek és módszereiknek, néhány dolgot megtehetsz, hogy megvédhesd az alkalmazásod IAP-jeit az ellopástól. Különösen engedélyeznie kell a kiszolgálóoldali IAP ellenőrzés több módszerét, amelyeket az alábbiakban részletezek.



Ez az útmutató nem újszülöttek, hanem tapasztalt alkalmazásfejlesztők számára készült, akik megértik az útmutató különböző nyelveit.

Git Repo beépülő modul használata kifejezetten erre a célra:

PiracyChecker

Adja hozzá a lerakatot a projektjéhez épít.gradle :



adattárak {

maven {

URL: https://jitpack.io

}

}

És adja hozzá a könyvtárat a moduljához épít.gradle :

függőségek {

fordítsd össze a „com.github.javiersantos: PiracyChecker: 1.1”

}

Ajánlások

  • A gyártási kiadásokban mindig engedélyezze a ProGuard alkalmazást.
  • A PiracyCheckert be kell építeni az onCreate módszerbe, hogy mielőbb ellenőrizhesse az érvényes licencet.
  • Javasoljuk, hogy párbeszédpanel helyett új tevékenységet mutasson, ha a licenc nem érvényes. Így megbizonyosodhat arról, hogy az alkalmazás fő tevékenysége befejeződött. Lát ' Eredmények megjelenítése párbeszédablakban vagy új tevékenységben '.

A Google Play licencelésének ellenőrzése (LVL)

A Google Play olyan licencszolgáltatást kínál, amely lehetővé teszi a Google Playen közzétett alkalmazások licencelési házirendjének betartását. A Google Play licenceléssel az alkalmazás lekérdezheti a Google Play szolgáltatást, hogy megkapja az aktuális felhasználó licencelési állapotát.

Bármely alkalmazás, amelyet a Google Playen tesz közzé, használhatja a Google Play licencszolgáltatást. Nincs szükség külön számlára vagy regisztrációra.

új PiracyChecker (ez)

.enableGooglePlayLicensing („BASE_64_LICENSE_KEY”)

...

.Rajt();

A BASE64 licenckulcs letöltéséhez az alkalmazást fel kell tölteni a Google Play Developer Console . Ezután férjen hozzá az alkalmazásához -> Szolgáltatások és API-k.

A Google Play Licenc használatakor hívja a .destroy () -t tevékenysége onDestroy () módszerével, hogy elkerülje a szolgáltatás több példányának futtatását.

Ellenőrizze az alkalmazás aláíró tanúsítványát (aláírását)

A fejlesztőknek mindig alá kell írniuk az alkalmazásokat a magánkulcsukkal / tanúsítványukkal (amelyek egy .keystore fájlban találhatók), mielőtt az alkalmazást telepíteni lehetne a felhasználói eszközökre. Az aláíró tanúsítványnak következetesnek kell maradnia az alkalmazás teljes élettartama alatt, és lejárati ideje általában 25 év.

Az alkalmazás aláírása megszakad, ha az .apk bármilyen módon módosul - az aláíratlan alkalmazásokat általában nem lehet telepíteni. Elképzelhetjük, hogy a támadó például eltávolítja a licencellenőrző kódot, hogy fizetés nélkül engedélyezze a teljes alkalmazásfunkciókat. Veszélyesebb példa lenne az .apk módosítása úgy, hogy a kártékony programokat illessze be egy legális alkalmazásba az érzékeny felhasználói adatok gyűjtése érdekében. A módosított .apk telepítéséhez a támadónak le kell mondania.

új PiracyChecker (ez)

.enableSigningCertificate (“478yYkKAQF + KST8y4ATKvHkYibo =”) // A PRODUCTION verzió eredeti APK-aláírása

...

.Rajt();

LÉGY ÓVATOS!! Az alkalmazás aláírását egy PiracyCheckerUtils módszerrel lehet letölteni. Győződjön meg arról, hogy aláírta APK-ját a PRODUCTION kulcstárolójával (nem a DEBUG-t használja), és telepítette a terjeszteni tervezett verziót. Ezután másolja az ezzel a módszerrel visszaküldött aláírást a konzolra, és illessze be az .enableSigningCertificate („YOUR_APK_SIGNATURE”) mappába.

// Ez a módszer kinyomtatja az alkalmazás aláírását a konzolon

Log.e („ALÁÍRÁS”, PiracyCheckerUtils.getAPKSignature (ez));

Ellenőrizze a telepítőt

Ha csak azt tervezi, hogy az alkalmazást egy adott áruházban terjeszti, akkor ez a technika megakadályozza az alkalmazás telepítését egy másik boltban.

Támogatott üzletek: Google Play, Amazon App Store és Samsung Galaxy Apps.

új PiracyChecker (ez)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

.enableInstallerId (InstallerID.GALAXY_APPS)

...

.Rajt();

LÉGY ÓVATOS!! Ez egy nagyon korlátozó technika, mivel megakadályozza az alkalmazás telepítését egy másik piac használatával vagy az .apk közvetlen telepítését az eszközre. A legtöbb esetben nem ajánlott.

Ellenőrizze a kalózalkalmazások használatát

Ha szeretné ellenőrizni, hogy a felhasználó rendelkezik-e kalózalkalmazásokkal, használhatja ezt a kódot.

Ellenőrizni fogja: Lucky Patcher, Uret Patcher, Freedom és CreeHack.

új PiracyChecker (ez)

.enableUnauthorizedAppsCheck ()

...

.Rajt();

Akkor is letilthatja az alkalmazást, ha a kalózalkalmazásokat eltávolították. Ez megakadályozza az alkalmazás javítását, majd távolítsa el a kalóz alkalmazást az alkalmazás további használatához. A könyvtár elment egy SharedPreference értéket, hogy megtudja, ha kalózalkalmazást észleltek.

Ennek két módja van:

Határozza meg a SharedPreferences és annak a beállításnak a nevét, ahová az eredményt menteni kívánja.

új PiracyChecker (ez)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (beállítások, „app_unauthorized”) // Az „app_unauthorized” módosítása saját értékkel

...

.Rajt();

Határozza meg a SharedPreferences nevet és annak a beállításnak a nevét, ahová az eredményt menteni kívánja.

új PiracyChecker (ez)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled („license_preferences”, „app_unauthorized”) // Módosítsa a „license_preferences” és az „app_unauthorized” elemeket saját értékével

...

.Rajt();

Ellenőrizze a harmadik féltől származó áruházi alkalmazások használatát

Ha szeretné ellenőrizni, hogy a felhasználó rendelkezik-e harmadik féltől származó áruházalkalmazásokkal, használhatja ezt a kódot.

Ellenőrizni fogja: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe és ACMarket.

új PiracyChecker (ez)

.enableStoresCheck ()

...

.Rajt();

Ellenőrizze, hogy az alkalmazás hibakereső-e

Ha az alkalmazás egy emulátoron fut a fejlesztési folyamaton kívül, akkor az arra utal, hogy nem te próbálod elemezni az alkalmazást.

új PiracyChecker (ez)

.enableDebugCheck ()

...

.Rajt();

Ellenőrizze, hogy az alkalmazást egy emulátor futtatja-e

A fejlesztésen kívül nem valószínű, hogy az alkalmazásának emulátoron kell futnia, és nem engedélyezett a hibakeresést engedélyező alkalmazások kiadása, mivel ez lehetővé teszi a csatlakoztatott számítógépek számára az alkalmazás hozzáférését és az Android Debug Bridge segítségével történő hibakeresését.

logikai mélység = hamis;

új PiracyChecker (ez)

.enableEmulatorCheck (mély)

...

.Rajt();

Jegyzet: a mély logikai érték a könyvtár segítségével további ellenőrzéseket végez annak megállapítására, hogy az eszköz emulátor-e vagy sem. Furcsa összeomlásokhoz vezethet, ezért legyen bölcs, ha használja.

Mentse a licencellenőrzés eredményét a SharedPreferences mappába

A licencellenőrzés eredményének mentése hasznos a licenc állapotának ellenőrzéséhez a .start () többszöri meghívása nélkül.

Ennek két módja van:

Határozza meg a SharedPreferences és annak a beállításnak a nevét, ahová az eredményt menteni kívánja.

új PiracyChecker (ez)

.saveResultToSharedPreferences (beállítások, „valid_license”) // Az „valid_license” módosítása saját értékkel

...

.Rajt();

Határozza meg a SharedPreferences nevet és annak a beállításnak a nevét, ahová az eredményt menteni kívánja.

új PiracyChecker (ez)

.saveResultToSharedPreferences („license_preferences”, „valid_license”) // A „license_preferences” és az „valid_license” módosítása saját értékkel

...

.Rajt();

Testreszabás

Eredmények megjelenítése párbeszédablakban vagy új tevékenységben

Javasoljuk, hogy párbeszédpanel helyett új tevékenységet mutasson, ha a licenc nem érvényes. Így megbizonyosodhat arról, hogy az alkalmazás fő tevékenysége befejeződött.

Alapértelmezés szerint egy nem törölhető párbeszédpanel jelenik meg.

új PiracyChecker (ez)

.display (Display.ACTIVITY)

...

.Rajt();

Alapértelmezés szerint a megjelenített tevékenység a könyvtár színeit használja. Egyéni elsődleges és elsődleges sötét szín alkalmazásához, valamint annak meghatározásához, hogy a tevékenység normál vagy világos állapotsort jelenítsen-e meg, használja:

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

Meghatározhat egyéni elrendezési xml-t is ehhez a tevékenységtartalomhoz a következők használatával:

.withActivityLayout (R.layout.my_custom_layout)

Egyéni visszahívások használata

Visszahívás hozzáadása az építõhöz lehetõvé teszi, hogy testre szabja, mi fog történni a licenc ellenõrzése után, és kezelje a licencellenõrzési hibákat, ha a felhasználónak nem engedélyezett az alkalmazás használata. Ne feledje, hogy ennek a módszernek a használatakor tisztában kell lennie azzal, hogy letiltja az alkalmazást illetéktelen felhasználóktól .

Alapértelmezés szerint a könyvtár egy nem törölhető párbeszédpanelt jelenít meg, ha a felhasználó nem használhatja az alkalmazást, különben semmi sem fog történni.

Használja a készítőt, és adja hozzá a következőket:

.callback (új PiracyCheckerCallback () {

@ Felülírás

public void allow () {

// Tegyen valamit, ha a felhasználónak engedélyezett az alkalmazás használata

}

@ Felülírás

public void dontAllow (@NonNull PiracyCheckerError hiba, @Nullable PirateApp alkalmazás) {

// Vagy megtehet valami konkrét dolgot, ha a felhasználó nem használhatja az alkalmazást

// Vagy kezelheti a hibát a „error” paraméter használatával maga (Ellenőrizze a hibákat a {@link PiracyCheckerError} oldalon).

// Ezenkívül, ha engedélyezte a kalózalkalmazások és / vagy harmadik féltől származó áruházak ellenőrzését, akkor az „alkalmazás” param

// az eszközön észlelt alkalmazás. Az alkalmazás lehet null, és ha null, akkor azt jelenti, hogy nem találtak kalózalkalmazást vagy áruházat,

// vagy letiltotta az alkalmazások ellenőrzését.

// Ez lehetővé teszi, hogy tájékoztassa a felhasználókat a licenc érvénytelenségének lehetséges okairól.

}

@ Felülírás

public void onError (@NonNull PiracyCheckerError hiba) {

// Ezt a módszert nem szükséges végrehajtani / felülírni, de…

// Megtehet valamit, ha hiba lép fel a licenc ellenőrzése közben,

// Vagy kezelheti a hibát a „error” paraméter használatával maga (Ellenőrizze a hibákat a {@link PiracyCheckerError} oldalon).

}

})

6 perc olvasás