Ako môžu vývojári Androidov chrániť svoje aplikácie pred hackermi IAP



Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Táto príručka je určená pre vývojárov aplikácií pre Android, ktorí zarábajú na IAP a chcú sa chrániť pred hackermi a podvodnými nákupmi prostredníctvom hackerských nástrojov. Existuje niekoľko známych nástrojov na hacking IAP, ktoré tu nebudem uvádzať, ale v zásade tieto nástroje odosielajú do vašej aplikácie falošné potvrdenia o nákupe, aby si mohli používatelia vychutnať bezplatné IAP. Môže to byť čokoľvek, od mesačného predplatného až po herné tokeny.





Aj keď stále vychádzajú nové verzie týchto hackerských nástrojov, a je veľmi dôležitá starostlivosť o ich najnovšie aktualizácie a metódy, existuje niekoľko vecí, ktoré môžete urobiť, aby ste chránili svoje aplikácie IAP pred odcudzením. Najdôležitejšie je, že musíte povoliť niekoľko metód overovania servera IAP, ktoré podrobne uvediem nižšie.



Táto príručka nie je určená začiatočníkom, ale skúseným vývojárom aplikácií, ktorí rozumejú rôznym jazykom v tejto príručke.

Používanie doplnku Git Repo špeciálne na tento účel:

Kontrola pirátstva

Pridajte do svojho projektu úložisko build.gradle :



úložiská {

maven {

adresa URL „https://jitpack.io“

}

}

A pridajte knižnicu do svojho modulu build.gradle :

závislosti {

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

}

Odporúčania

  • Vo svojich produkčných vydaniach vždy povoľte ProGuard.
  • PiracyChecker by mal byť súčasťou vašej metódy onCreate, aby ste čo najskôr skontrolovali platnú licenciu.
  • Ak licencia nie je platná, odporúča sa namiesto dialógového okna zobraziť nová aktivita. Týmto spôsobom sa uistíte, že je dokončená hlavná aktivita aplikácie. Pozri „ Zobraziť výsledky v dialógovom okne alebo novej aktivite „.

Overiť licencovanie Google Play (LVL)

Google Play ponúka licenčnú službu, ktorá vám umožňuje vynucovať licenčné pravidlá pre aplikácie, ktoré zverejňujete na Google Play. Vďaka licencovaniu Google Play môže vaša aplikácia vyhľadávať v službe Google Play, aby získala stav licencovania pre aktuálneho používateľa.

Licenčnú službu Google Play môže používať ktorákoľvek aplikácia, ktorú publikujete prostredníctvom služby Google Play. Nie je potrebný žiadny špeciálny účet ani registrácia.

nový program PiracyChecker (toto)

.enableGooglePlayLicensing („BASE_64_LICENSE_KEY“)

...

.start ();

Ak chcete získať licenčný kľúč BASE64, vaša aplikácia musí byť nahraná do servera Konzola pre vývojárov Google Play . Potom prístup k vašej aplikácii -> Služby a API.

Pri používaní licencovania Google Play by ste mali volať .destroy () v metóde onDestroy () svojej aktivity, aby ste sa vyhli spusteniu viacerých inštancií služby.

Overte podpisový certifikát svojej aplikácie (podpis)

Pred nainštalovaním aplikácie do používateľských zariadení musia vývojári vždy podpísať aplikácie pomocou svojho súkromného kľúča / certifikátu (obsiahnutého v súbore .keystore). Podpisový certifikát musí zostať konzistentný počas celej životnosti aplikácie a zvyčajne musí mať dátum vypršania platnosti 25 rokov.

Ak dôjde k akejkoľvek zmene súboru .apk, podpis aplikácie sa pokazí - nepodpísané aplikácie sa zvyčajne nedajú nainštalovať. Vieme si predstaviť, že by útočník odstránil kód na kontrolu licencií, aby napríklad povolil všetky funkcie aplikácie, a to bez platenia. Nebezpečnejším príkladom by bola zmena súboru .apk na zahrnutie malvéru do legitímnej aplikácie na zber citlivých údajov používateľov. Aby mohol byť zmenený .apk nainštalovaný, musí ho útočník rezignovať.

nový program PiracyChecker (toto)

.enableSigningCertificate (“478yYkKAQF + KST8y4ATKvHkYibo =”) // Originálny podpis APK pre verziu PRODUCTION

...

.start ();

BUĎ OPATRNÝ!! Váš podpis aplikácie je možné načítať pomocou metódy PiracyCheckerUtils. Uistite sa, že ste svoj APK podpísali pomocou skladu kľúčov PRODUCTION (nepoužívate DEBUG) a nainštalovali verziu, ktorú plánujete distribuovať. Potom skopírujte podpis vrátený touto metódou na konzolu a vložte do .enableSigningCertificate („YOUR_APK_SIGNATURE“)

// Táto metóda vytlačí podpis vašej aplikácie do konzoly

Log.e („PODPIS“, PiracyCheckerUtils.getAPKSignature (toto));

Overte inštalačný program

Ak plánujete distribúciu aplikácie iba v konkrétnom obchode, táto technika zabráni inštalácii aplikácie v inom obchode.

Podporované obchody: Google Play, Amazon App Store a Samsung Galaxy Apps.

nový program PiracyChecker (toto)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

.enableInstallerId (InstallerID.GALAXY_APPS)

...

.start ();

BUĎ OPATRNÝ!! Toto je skutočne obmedzujúca technika, pretože bude blokovať inštaláciu vašej aplikácie na inom trhu alebo priamu inštaláciu súboru .apk na zariadenie. Vo väčšine prípadov sa to neodporúča.

Overte použitie pirátskych aplikácií

Ak chcete skontrolovať, či má používateľ nainštalované pirátske aplikácie, môžete použiť tento kód.

Skontroluje: Lucky Patcher, Uret Patcher, Freedom a CreeHack.

nový program PiracyChecker (toto)

.enableUnauthorizedAppsCheck ()

...

.start ();

Aplikáciu môžete zablokovať, aj keď bola táto pirátska aplikácia odinštalovaná. Toto zabráni tomu, aby bola aplikácia opravená a potom pirátsku aplikáciu odinštalovala, aby ste ju mohli naďalej používať. Knižnica uloží hodnotu SharedPreference, aby vedela, kedy bola zistená pirátska aplikácia.

Existujú dva spôsoby, ako to urobiť:

Definujte SharedPreferences a názov predvoľby, kam chcete uložiť výsledok.

nový program PiracyChecker (toto)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (predvoľby, „app_unauthorized“) // Zmeňte „app_unauthorized“ na svoju vlastnú hodnotu

...

.start ();

Definujte názov SharedPreferences a názov predvoľby, kam chcete výsledok uložiť.

nový program PiracyChecker (toto)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled („license_preferences“, „app_unauthorized“) // Zmeňte „license_preferences“ a „app_unauthorized“ na svoju vlastnú hodnotu

...

.start ();

Overte použitie aplikácií v obchode tretích strán

Ak chcete skontrolovať, či má používateľ nainštalované aplikácie pre obchody tretích strán, môžete použiť tento kód.

Skontroluje: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe a ACMarket.

nový program PiracyChecker (toto)

.enableStoresCheck ()

...

.start ();

Overte, či je aplikácia zostavením ladenia

Ak je vaša aplikácia spustená na emulátore mimo vývojového procesu, naznačuje to, že sa ju pokúša analyzovať niekto iný ako vy.

nový program PiracyChecker (toto)

.enableDebugCheck ()

...

.start ();

Skontrolujte, či je aplikácia spustená v emulátore

Mimo vývoja je nepravdepodobné, že by vaša aplikácia mala bežať na emulátore. Vydávanie aplikácií s povoleným laditeľným prostriedkom sa neodporúča, pretože umožňuje pripojeným počítačom získať prístup a ladiť aplikáciu prostredníctvom nástroja Android Debug Bridge.

boolean deep = false;

nový program PiracyChecker (toto)

.enableEmulatorCheck (hlboko)

...

.start ();

Poznámka: deep boolean s make the library do extra checks to determine if device is the emulator or not. Môže to viesť k zvláštnym nehodám, takže pri jeho používaní buďte múdri.

Výsledok kontroly licencie uložte do priečinka SharedPreferences

Uloženie výsledku kontroly licencie je užitočné na kontrolu stavu licencie bez opakovaného volania .start ().

Existujú dva spôsoby, ako to urobiť:

Definujte SharedPreferences a názov predvoľby, kam chcete uložiť výsledok.

nový program PiracyChecker (toto)

.saveResultToSharedPreferences (predvoľby, „valid_license“) // Zmeňte „valid_license“ na svoju vlastnú hodnotu

...

.start ();

Definujte názov SharedPreferences a názov predvoľby, kam chcete výsledok uložiť.

nový program PiracyChecker (toto)

.saveResultToSharedPreferences („license_preferences“, „valid_license“) // Zmeňte „license_preferences“ a „valid_license“ s vlastnou hodnotou

...

.start ();

Prispôsobenia

Zobraziť výsledky v dialógovom okne alebo novej aktivite

Ak licencia nie je platná, odporúča sa namiesto dialógového okna zobraziť nová aktivita. Týmto spôsobom sa uistíte, že je dokončená hlavná aktivita aplikácie.

V predvolenom nastavení sa zobrazí nezrušiteľný dialóg.

nový program PiracyChecker (toto)

.display (Display.ACTIVITY)

...

.start ();

V predvolenom nastavení bude použitá aktivita používať farby knižnice. Ak chcete použiť vlastnú primárnu a primárnu tmavú farbu a definovať, či sa má aktivita zobrazovať v normálnom alebo svetlom stavovom riadku, použite:

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

Pre tento obsah aktivity môžete tiež definovať vlastné rozloženie xml pomocou:

.withActivityLayout (R.layout.my_custom_layout)

Používanie vlastných spätných volaní

Pridanie spätného volania do nástroja na tvorbu umožňuje prispôsobiť, čo sa stane po kontrole licencie, a spravovať chyby kontroly licencie, ak používateľ nemôže používať aplikáciu. Majte na pamäti, že pri použití tejto metódy musíte vedieť o blokovaní aplikácie pred neoprávnenými používateľmi .

Knižnica predvolene zobrazí nezrušiteľné dialógové okno, ak používateľ nemôže používať aplikáciu, inak sa nič nestane.

Použite staviteľ a pridajte nasledujúce:

.callback (nový PiracyCheckerCallback () {

@ Override

public void allow () {

// Urobte niečo, keď má používateľ povolené používať aplikáciu

}

@ Override

public void dontAllow (chyba @NonNull PiracyCheckerError, aplikácia @Nullable PirateApp) {

// Ak používateľ nemá povolenie na používanie aplikácie, môžete urobiť niečo konkrétne

// Alebo chybu spravujte sami pomocou parametra „error“ (chyby skontrolujte na {@link PiracyCheckerError}).

// Ak ste navyše povolili kontrolu pirátskych aplikácií a / alebo obchodov tretích strán, parameter „app“

// je aplikácia, ktorá bola zistená v zariadení. Aplikácia môže mať nulovú hodnotu, a keď je nulová, znamená to, že nebola nájdená žiadna pirátska aplikácia alebo obchod,

// alebo ste deaktivovali kontrolu týchto aplikácií.

// Toto vám umožní informovať používateľov o možných dôvodoch, prečo je licencia neplatná.

}

@ Override

public void onError (@NonNull PiracyCheckerError error) {

// Túto metódu nie je potrebné implementovať / prepísať, ale…

// Môžete urobiť niečo konkrétne, keď sa pri kontrole preukazu vyskytne chyba,

// Alebo chybu spravujte sami pomocou parametra „error“ (chyby skontrolujte na {@link PiracyCheckerError}).

}

})

6 minút prečítania