Kuinka Android-kehittäjät voivat suojata sovelluksiaan IAP-hakkereilta



Kokeile Instrumenttia Ongelmien Poistamiseksi

Tämä opas on tarkoitettu Android-sovelluskehittäjille, jotka ansaitsevat tuloja Internet-sovelluksista ja haluavat suojautua hakkereilta ja vilpillisiltä ostoksilta hakkerointityökalujen avulla. Siellä on useita tunnettuja IAP-hakkerointityökaluja, joita en luetella tässä, mutta pohjimmiltaan nämä työkalut lähettävät väärät ostokuitit sovellukseesi, jotta käyttäjä voi nauttia ilmaisista IAP: ista. Tämä voi olla mitä tahansa kuukausitilauksista pelien sisäisiin rahakkeisiin.





Vaikka näiden hakkerointityökalujen uusia versioita julkaistaan ​​aina, ja huolellisuus niiden uusimpien päivitysten ja menetelmien tuntemisessa on erittäin tärkeää, voit suojata sovellusten IAP-sovelluksia varastamiselta muutamalla tavalla. Erityisesti sinun on otettava käyttöön useita palvelinpuolen IAP-vahvistuksen menetelmiä, jotka tarkennan alla.



Tätä opasta ei ole tarkoitettu aloittelijoille, mutta kokeneille sovelluskehittäjille, jotka ymmärtävät tämän oppaan erilaiset kielet.

Git Repo -laajennuksen käyttäminen erityisesti tähän tarkoitukseen:

PiracyChecker

Lisää arkisto projektiisi build.gradle :



arkistot {

maven {

URL-osoite “https://jitpack.io”

}

}

Ja lisää kirjasto moduuliin build.gradle :

riippuvuudet {

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

}

Suositukset

  • Ota ProGuard käyttöön aina tuotantojulkaisuissasi.
  • PiracyChecker tulisi sisällyttää onCreate-menetelmään, jotta voisit tarkistaa voimassa olevan lisenssin mahdollisimman pian.
  • On suositeltavaa näyttää uusi toiminto valintaikkunan sijaan, kun lisenssi ei ole kelvollinen. Näin varmistat, että sovelluksen päätoiminta on valmis. Katso “ Näytä tulokset -valintaikkuna tai uusi toiminto '.

Vahvista Google Play -lisensointi (LVL)

Google Play tarjoaa lisenssipalvelun, jonka avulla voit valvoa Google Playssa julkaisemiesi sovellusten käyttöoikeuskäytäntöjä. Google Play -lisensoinnin avulla sovelluksesi voi kysyä Google Playlta nykyisen käyttäjän lisenssitilan saamiseksi.

Kaikki Google Playn kautta julkaisemasi sovellukset voivat käyttää Google Play -lisenssipalvelua. Erityistä tiliä tai rekisteröintiä ei tarvita.

uusi PiracyChecker (tämä)

.enableGooglePlayLicensing ('BASE_64_LICENSE_KEY')

...

.alkaa();

BASE64-lisenssiavain noutamiseksi sovelluksesi on ladattava Google Play -kehittäjäkonsoli . Käytä sitten sovellustasi -> Palvelut ja sovellusliittymät.

Kun käytät Google Play -lisensointia, sinun tulisi kutsua .destroy () toimintosi onDestroy () -menetelmässä, jotta vältetään palvelun useiden esiintymien esiintyminen.

Vahvista sovelluksesi allekirjoitustodistus (allekirjoitus)

Kehittäjien on aina allekirjoitettava sovellukset yksityisellä avaimellaan / varmenteellaan (sisältyy .keystore-tiedostoon), ennen kuin sovellus voidaan asentaa käyttäjän laitteisiin. Allekirjoitustodistuksen on pysyttävä yhtenäisenä koko sovelluksen käyttöiän ajan, ja sen viimeinen voimassaolopäivä on yleensä 25 vuotta.

Sovelluksen allekirjoitus rikkoutuu, jos .apk-tiedostoa muutetaan millään tavalla - allekirjoittamattomia sovelluksia ei yleensä voida asentaa. Voimme kuvitella hyökkääjän poistavan lisenssitarkistuskoodin, jotta sovelluksen ominaisuudet voidaan ottaa käyttöön maksamatta. Vaarallisempi esimerkki olisi .apk: n muuttaminen sisällyttämällä haittaohjelma lailliseen sovellukseen arkaluonteisten käyttäjätietojen keräämiseksi. Jotta muutettu .apk voidaan asentaa, hyökkääjän on erotettava se.

uusi PiracyChecker (tämä)

.enableSigningCertificate (“478yYkKAQF + KST8y4ATKvHkYibo =”) // PRODUCTION-version alkuperäinen APK-allekirjoitus

...

.alkaa();

OLE VAROVAINEN!! Sovelluksen allekirjoitus voidaan noutaa PiracyCheckerUtils-menetelmällä. Varmista, että olet allekirjoittanut APK: n käyttämällä PRODUCTION-avainvarastoa (ei DEBUG-versiota) ja asentanut version, jonka aiot jakaa. Kopioi sitten tällä menetelmällä palautettu allekirjoitus konsoliin ja liitä .enableSigningCertificate ('YOUR_APK_SIGNATURE')

// Tämä menetelmä tulostaa sovelluksen allekirjoituksen konsoliin

Log.e (“ALLEKIRJOITUS”, PiracyCheckerUtils.getAPKSignature (tämä));

Tarkista asennusohjelma

Jos aiot levittää sovellusta vain tietyssä kaupassa, tämä tekniikka estää sovelluksen asentamisen jollakin muulla kaupalla.

Tuetut kaupat: Google Play, Amazon App Store ja Samsung Galaxy Apps.

uusi PiracyChecker (tämä)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

.enableInstallerId (InstallerID.GALAXY_APPS)

...

.alkaa();

OLE VAROVAINEN!! Tämä on todella rajoittava tekniikka, koska se estää sovellustasi asentamasta muita markkinoita tai asentamasta .apk-laitetta suoraan laitteeseen. Sitä ei suositella useimmissa tapauksissa.

Tarkista merirosvosovellusten käyttö

Jos haluat tarkistaa, onko käyttäjälle asennettu merirosvosovelluksia, voit käyttää tätä koodia.

Se tarkistaa: Lucky Patcher, Uret Patcher, Freedom ja CreeHack.

uusi PiracyChecker (tämä)

.enableUnauthorizedAppsCheck ()

...

.alkaa();

Voit estää sovelluksen, vaikka tämä merirosvosovellus olisi poistettu. Tämä estää sovelluksen korjaamisen ja poistaa sitten merirosvosovelluksen jatkaaksesi sovelluksesi käyttöä. Kirjasto tallentaa SharedPreference-arvon tiedoksi, kun merirosvosovellus on havaittu.

Voit tehdä tämän kahdella tavalla:

Määritä SharedPreferences ja sen asetuksen nimi, johon haluat tallentaa tuloksen.

uusi PiracyChecker (tämä)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled (asetukset, 'app_unauthorized') // Muuta 'app_unauthorized' omalla arvolla

...

.alkaa();

Määritä SharedPreferences-nimi ja sen asetuksen nimi, johon haluat tallentaa tuloksen.

uusi PiracyChecker (tämä)

.enableUnauthorizedAppsCheck ()

.blockIfUnauthorizedAppUninstalled ('license_preferences', 'app_unauthorized') // Muuta 'license_preferences' ja 'app_unauthorized' omalla arvolla

...

.alkaa();

Tarkista kolmansien osapuolten myymäläsovellusten käyttö

Jos haluat tarkistaa, onko käyttäjällä kolmannen osapuolen myymäläsovelluksia asennettu, voit käyttää tätä koodia.

Se tarkistaa: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe ja ACMarket.

uusi PiracyChecker (tämä)

.enableStoresCheck ()

...

.alkaa();

Tarkista, onko sovellus virheenkorjausrakenne

Jos sovelluksesi toimii emulaattorilla kehitysprosessin ulkopuolella, se osoittaa, että joku muu kuin sinä yrittää analysoida sovellusta.

uusi PiracyChecker (tämä)

.enableDebugCheck ()

...

.alkaa();

Tarkista, suoritetaanko sovellusta emulaattorissa

Kehityksen ulkopuolella on epätodennäköistä, että sovelluksesi pitäisi toimia emulaattorissa, eikä sovellusten julkaisemista, jossa virheenkorjaus on käytössä, ei suositella, koska se sallii liitettyjen tietokoneiden pääsyn sovellukseen ja virheenkorjauksen Android Debug Bridgen kautta.

looginen syvä = epätosi;

uusi PiracyChecker (tämä)

.enableEmulatorCheck (syvä)

...

.alkaa();

merkintä: syvä looginen luku kirjaston kanssa tekee ylimääräisistä tarkastuksista havaitsemaan onko laite emulaattori vai ei. Se voi johtaa outoihin kaatumisiin, joten ole viisas käyttäessäsi sitä.

Tallenna lisenssitarkistuksen tulos SharedPreferences-osioon

Lisenssitarkistuksen tuloksen tallentaminen on hyödyllistä lisenssin tilan tarkistamiseksi soittamatta .start () -sovellusta useita kertoja.

Voit tehdä tämän kahdella tavalla:

Määritä SharedPreferences ja sen asetuksen nimi, johon haluat tallentaa tuloksen.

uusi PiracyChecker (tämä)

.saveResultToSharedPreferences (asetukset, “valid_license”) // Muuta ”valid_license” omalla arvolla

...

.alkaa();

Määritä SharedPreferences-nimi ja sen asetuksen nimi, johon haluat tallentaa tuloksen.

uusi PiracyChecker (tämä)

.saveResultToSharedPreferences ('lisenssin_kohdat', 'kelvollinen_lisenssi') // Muuta 'lisenssin_kohdat' ja 'voimassa oleva lisenssi' omalla arvolla

...

.alkaa();

Mukautukset

Näytä tulokset -valintaikkuna tai uusi toiminto

On suositeltavaa näyttää uusi toiminto valintaikkunan sijaan, kun lisenssi ei ole kelvollinen. Näin varmistat, että sovelluksen päätoiminta on valmis.

Oletusarvoisesti valinta, jota ei voi peruuttaa, tulee näkyviin.

uusi PiracyChecker (tämä)

.display (Display.ACTIVITY)

...

.alkaa();

Oletusarvon mukaan näytössä oleva toiminto käyttää kirjaston värejä. Käytä mukautettua ensisijaista ja ensisijaista tummaa väriä ja määritä, näytetäänkö toiminnassa normaali vai vaalea tilarivi, seuraavasti:

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

Voit myös määrittää mukautetun asettelun xml tälle aktiviteettisisällölle käyttämällä:

.withActivityLayout (R.layout.my_custom_layout)

Mukautettujen soittopyyntöjen käyttäminen

Soittopyynnön lisääminen rakentajaan antaa sinun muokata mitä tapahtuu, kun lisenssi on tarkistettu, ja hallita lisenssin tarkistusvirheitä, jos käyttäjä ei saa käyttää sovellusta. Muista, että kun käytät tätä menetelmää sinun on oltava tietoinen sovelluksen estämisestä luvattomilta käyttäjiltä .

Oletusarvoisesti kirjasto näyttää valintaikkunan, jota ei voi peruuttaa, jos käyttäjä ei saa käyttää sovellusta, muuten mitään ei tapahdu.

Käytä rakennustyökalua ja lisää seuraava:

.callback (uusi PiracyCheckerCallback () {

@Ohittaa

public void allow () {

// Tee jotain, kun käyttäjän sallitaan käyttää sovellusta

}

@Ohittaa

public void dontAllow (@NonNull PiracyCheckerError -virhe, @Nullable PirateApp -sovellus) {

// Voit joko tehdä jotain tiettyä, kun käyttäjä ei saa käyttää sovellusta

// Tai hallitse virhe itse käyttämällä virheparametriä (tarkista virheet osoitteessa {@link PiracyCheckerError}).

// Lisäksi, jos otit käyttöön merirosvosovellusten ja / tai kolmansien osapuolten myymälöiden tarkistuksen, sovelluksen parametri

// on laitteessa havaittu sovellus. Sovellus voi olla tyhjä, ja kun se on tyhjä, se tarkoittaa, ettei merirosvosovellusta tai myymälää löydetty,

// tai olet poistanut kyseisten sovellusten tarkistuksen käytöstä.

// Tämän avulla voit kertoa käyttäjille mahdollisista syistä, miksi lisenssi on ollut virheellinen.

}

@Ohittaa

public void onError (@NonNull PiracyCheckerError -virhe) {

// Tätä menetelmää ei tarvitse ottaa käyttöön / ohittaa, mutta…

// Voit joko tehdä jotain erityistä, kun lisenssin tarkistuksessa tapahtuu virhe,

// Tai hallitse virhe itse käyttämällä virheparametriä (tarkista virheet osoitteessa {@link PiracyCheckerError}).

}

})

6 minuuttia luettu