Paano mapoprotektahan ng mga developer ng Android ang kanilang mga app mula sa mga hacker ng IAP



Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema

Ang gabay na ito ay para sa mga developer ng Android app na kumikita mula sa mga IAP, at nais na protektahan ang kanilang sarili mula sa mga hacker at mapanlinlang na pagbili sa pamamagitan ng mga tool sa pag-hack. Mayroong maraming kilalang mga tool sa pag-hack ng IAP doon, na hindi ko ililista dito, ngunit karaniwang nagpapadala ang mga tool na ito ng mga maling resibo sa pagbili sa iyong app upang payagan ang gumagamit na mag-enjoy ng mga libreng IAP. Maaari itong maging anumang mula sa buwanang mga subscription sa mga in-game na token.





Habang ang mga bagong bersyon ng mga tool sa pag-hack na ito ay palaging inilalabas, at ang kasipagan sa pananatiling alam ang kanilang pinakabagong mga pag-update at pamamaraan ay napakahalaga, may ilang mga bagay na magagawa mong protektahan ang iyong mga app na IAP mula sa ninakaw. Karamihan sa kapansin-pansin, kailangan mong paganahin ang maraming mga pamamaraan ng pag-verify sa IAP sa server, na ididetalye ko sa ibaba.



Ang gabay na ito ay hindi inilaan para sa mga bago, ngunit may karanasan na mga developer ng app na mauunawaan ang iba't ibang mga lingo sa gabay na ito.

Paggamit ng isang Git Repo Plug-in Partikular para sa hangaring ito:

PiracyChecker

Idagdag ang repository sa iyong proyekto magtayo.gradle :



mga repositoryo {

maven {

url “https://jitpack.io”

}

}

At idagdag ang library sa iyong module magtayo.gradle :

mga dependency {

ipunin ang 'com.github.javiersantos: PiracyChecker: 1.1'

}

Mga Rekumendasyon

  • Palaging paganahin ang ProGuard sa iyong mga paglabas ng produksyon.
  • Ang PiracyChecker ay dapat na isama sa iyong onCreate na pamamaraan upang suriin para sa isang wastong lisensya sa lalong madaling panahon.
  • Inirerekumenda na magpakita ng isang bagong Aktibidad sa halip na isang Dialog kapag ang lisensya ay hindi wasto. Sa ganitong paraan siguraduhin mong natapos ang pangunahing aktibidad ng app. Tingnan ang “ Ipakita ang mga resulta sa isang Dialog o isang bagong Aktibidad '.

I-verify ang Paglilisensya ng Google Play (LVL)

Nag-aalok ang Google Play ng serbisyo sa paglilisensya na nagbibigay-daan sa iyong ipatupad ang mga patakaran sa paglilisensya para sa mga application na nai-publish mo sa Google Play. Sa Paglilisensya ng Google Play, maaaring magtanong ang iyong application sa Google Play upang makuha ang katayuan sa paglilisensya para sa kasalukuyang gumagamit.

Ang anumang application na nai-publish mo sa pamamagitan ng Google Play ay maaaring gumamit ng serbisyo sa Paglilisensya ng Google Play. Hindi kinakailangan ng espesyal na account o pagpaparehistro.

bagong PiracyChecker (ito)

.enableGooglePlayLicensing (“BASE_64_LICENSE_KEY”)

...

.start ();

Upang makuha ang iyong key ng lisensya ng BASE64 dapat i-upload ang iyong app sa Google Play Developer Console . Pagkatapos mag-access sa iyong app -> Mga Serbisyo at API.

Kapag gumagamit ng Paglilisensya ng Google Play dapat kang tumawag sa .destroy () sa onDestroy () na paraan ng iyong Aktibidad upang maiwasan ang maraming mga pagkakataon ng pagpapatakbo ng serbisyo.

I-verify ang sertipiko ng pag-sign ng iyong app (lagda)

Dapat laging lagdaan ng mga developer ang mga application gamit ang kanilang pribadong key / sertipiko (nakapaloob sa isang .keystore file) bago mai-install ang app sa mga aparato ng gumagamit. Ang sertipiko sa pag-sign ay dapat manatiling pare-pareho sa buong buhay ng app, at karaniwang may isang expiry date na 25 taon.

Masisira ang lagda ng app kung ang .apk ay binago sa anumang paraan - hindi karaniwang mai-install ang mga hindi naka-sign na app. Maaari naming isipin ang isang umaatake na tinatanggal ang code ng pagsuri sa lisensya upang paganahin ang buong mga tampok ng app nang hindi nagbabayad, halimbawa. Ang isang mas mapanganib na halimbawa ay ang pagbabago ng .apk upang isama ang malware sa isang lehitimong app upang mag-ani ng sensitibong data ng gumagamit. Upang mai-install ang nabago na .apk, dapat na bitiw ito ng umaatake.

bagong PiracyChecker (ito)

.enableSigningCertavale ('478yYkKAQF + KST8y4ATKvHkYibo =') // Ang orihinal na lagda ng APK para sa bersyon ng PRODUKSYON

...

.start ();

MAG-INGAT KA!! Maaaring makuha ang lagda ng iyong app gamit ang isang pamamaraang PiracyCheckerUtils. Tiyaking nilagdaan mo ang iyong APK gamit ang iyong keystore ng PRODUKSYON (hindi ginagamit ang DEBUG) at na-install ang bersyon na balak mong ipamahagi. Pagkatapos kopyahin ang lagda na ibinalik ng pamamaraang ito sa console at i-paste sa .enableSigningCertavale ('IYONG_APK_SIGNATURE')

// Ang pamamaraang ito ay mai-print ang lagda ng iyong app sa console

Log.e ('SIGNATURE', PiracyCheckerUtils.getAPKSignature (ito));

Patunayan ang installer

Kung plano mo lamang ipamahagi ang app sa isang partikular na tindahan ang diskarteng ito ay hahadlang mula sa pag-install ng app gamit ang anumang iba pang tindahan.

Mga sinusuportahang tindahan: Google Play, Amazon App Store at Samsung Galaxy Apps.

bagong PiracyChecker (ito)

.enableInstallerId (InstallerID.GOOGLE_PLAY)

.enableInstallerId (InstallerID.AMAZON_APP_STORE)

.enableInstallerId (InstallerID.GALAXY_APPS)

...

.start ();

MAG-INGAT KA!! Ito ay isang talagang mahigpit na pamamaraan dahil mai-block nito ang iyong app mula sa pag-install gamit ang isa pang merkado o direktang pag-install ng .apk sa aparato. Hindi ito inirerekomenda para sa karamihan ng mga kaso.

I-verify ang paggamit ng mga pirate app

Kung nais mong suriin kung may naka-install na mga app ng pirata ng gumagamit, maaari mong gamitin ang code na ito.

Susuriin nito ang: Lucky Patcher, Uret Patcher, Freedom at CreeHack.

bagong PiracyChecker (ito)

.enableUnauthorisedAppsCheck ()

...

.start ();

Maaari mong harangan ang app kahit na ang mga pirate app na ito ay na-uninstall. Pinipigilan nito ang app na ma-patch at pagkatapos ay i-uninstall ang pirate app upang magpatuloy na magamit ang iyong app. Magse-save ang library ng isang halaga ng SharedPreferensya upang malaman kung may napansin na isang pirata app.

Mayroong dalawang paraan upang magawa ito:

Tukuyin ang Mga Naibahagi na Kagustuhan at ang pangalan ng kagustuhan kung saan mo nais i-save ang resulta.

bagong PiracyChecker (ito)

.enableUnauthorisedAppsCheck ()

.blockIfUnauthorisedAppUninstall (mga kagustuhan, 'app_unauthorised') // Palitan ang 'app_unauthorised' gamit ang iyong sariling halaga

...

.start ();

Tukuyin ang pangalan ng Mga Naibahagi na Kagustuhan at ang pangalan ng kagustuhan kung saan mo nais i-save ang resulta.

bagong PiracyChecker (ito)

.enableUnauthorisedAppsCheck ()

.blockIfUnauthorisedAppUninstall ('lisensya_preferensya', 'app_unauthorized') // Palitan ang 'lisensya_preferensya' at 'app_unauthorized' gamit ang iyong sariling halaga

...

.start ();

I-verify ang paggamit ng mga app ng store ng third-party

Kung nais mong suriin kung ang app ay may naka-install na mga app ng store ng third-party, maaari mong gamitin ang code na ito.

Susuriin nito ang: Aptoide, BlackMart, Mobogenie, 1Mobile, GetApk, GetJar, SlideMe at ACMarket.

bagong PiracyChecker (ito)

.enableStoresCheck ()

...

.start ();

I-verify kung ang app ay isang pagbuo ng pag-debug

Kung ang iyong app ay tumatakbo sa isang emulator sa labas ng proseso ng pag-unlad, nagbibigay ito ng pahiwatig na may isang taong iba sa iyo na sumusubok na pag-aralan ang app.

bagong PiracyChecker (ito)

.enableDebugCheck ()

...

.start ();

I-verify kung ang app ay pinapatakbo sa isang emulator

Sa labas ng pag-unlad, hindi malamang na ang iyong app ay dapat na tumatakbo sa isang emulator, at ang paglabas ng mga app na may naka-debug na pinagana ay nasisiraan ng loob dahil pinapayagan nitong mai-access at mai-debug ang app sa pamamagitan ng Android Debug Bridge.

boolean deep = false;

bagong PiracyChecker (ito)

.enableEmulatorCheck (malalim)

...

.start ();

Tandaan: ang malalim na boolean na may gumawa ng library gumawa ng karagdagang mga pagsusuri upang makita kung ang aparato ay isang emulator o hindi. Maaari itong humantong sa ilang mga kakaibang pag-crash, kaya't maging matalino kapag ginagamit ito.

I-save ang resulta ng tseke ng lisensya sa SharedPreferences

Ang pag-save sa resulta ng tseke ng lisensya ay kapaki-pakinabang para sa pagsuri sa katayuan ng lisensya nang hindi tumatawag .start () ng maraming beses.

Mayroong dalawang paraan upang magawa ito:

Tukuyin ang Mga Naibahagi na Kagustuhan at ang pangalan ng kagustuhan kung saan mo nais i-save ang resulta.

bagong PiracyChecker (ito)

.saveResultToSharedPreferences (mga kagustuhan, 'valid_license') // Baguhin ang 'valid_license' gamit ang iyong sariling halaga

...

.start ();

Tukuyin ang pangalan ng Mga Naibahagi na Kagustuhan at ang pangalan ng kagustuhan kung saan mo nais i-save ang resulta.

bagong PiracyChecker (ito)

.saveResultToSharedPreferences ('lisensya_preferensya', 'valid_license') // Palitan ang 'lisensya_preferensya' at 'valid_license' gamit ang iyong sariling halaga

...

.start ();

Mga pagpapasadya

Ipakita ang mga resulta sa isang Dialog o isang bagong Aktibidad

Inirerekumenda na magpakita ng isang bagong Aktibidad sa halip na isang Dialog kapag ang lisensya ay hindi wasto. Sa ganitong paraan siguraduhin mong natapos ang pangunahing aktibidad ng app.

Bilang default ay ipapakita ang isang hindi nakanselang Dialog.

bagong PiracyChecker (ito)

.display (Display.ACTIVITY)

...

.start ();

Bilang default, ang ipinapakitang Aktibidad ay gagamit ng mga kulay ng library. Upang maglapat ng isang pasadyang pangunahin at pangunahing madilim na kulay, at upang tukuyin kung ang aktibidad ay dapat magpakita ng normal o light status bar, gamitin ang:

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

Maaari mo ring tukuyin ang isang pasadyang layout xml para sa nilalaman ng aktibidad na ito, gamit ang:

.withActivityLayout (R.layout.my_custom_layout)

Gumagamit ng mga pasadyang callback

Ang pagdaragdag ng isang callback sa tagabuo ay nagbibigay-daan sa iyo upang ipasadya kung ano ang mangyayari kapag ang lisensya ay nasuri at pamahalaan ang mga error sa pag-check ng lisensya kung hindi pinapayagan ang gumagamit na gamitin ang app. Tandaan na kapag ginagamit ang pamamaraang ito dapat mong magkaroon ng kamalayan sa pag-block ng app mula sa hindi awtorisadong mga gumagamit .

Bilang default, magpapakita ang library ng isang hindi nakanselang dialog kung hindi pinapayagan ang gumagamit na gamitin ang app, kung hindi man ay walang mangyayari.

Gamitin ang tagabuo at idagdag ang sumusunod:

.callback (bagong PiracyCheckerCallback () {

@Orrride

pahintulot sa publiko na walang bisa () {

// Gumawa ng isang bagay kapag pinapayagan ang gumagamit na gamitin ang app

}

@Orrride

public void dontAllow (error sa @NonNull PiracyCheckerError, @Nullable PirateApp app) {

// Maaari kang gumawa ng partikular na bagay kung hindi pinapayagan ang gumagamit na gamitin ang app

// O pamahalaan ang error, gamit ang parameter na ‘error’, ang iyong sarili (Suriin ang mga error sa {@ link PiracyCheckerError}).

// Bilang karagdagan, kung pinagana mo ang tseke ng mga pirate app at / o mga third-party na tindahan, ang ‘app’ param

// ay ang app na napansin sa aparato. Ang app ay maaaring maging null, at kapag null, nangangahulugan ito na walang natagpuang app ng pirate o tindahan,

// o hindi mo pinagana ang tseke para sa mga app na iyon.

// Pinapayagan kang ipaalam sa mga gumagamit ang mga posibleng dahilan kung bakit hindi wasto ang lisensya.

}

@Orrride

pampublikong walang bisa saError (error sa @NonNull PiracyCheckerError) {

// Ang pamamaraang ito ay hindi kinakailangan upang maipatupad / overriden ngunit…

// Maaari kang gumawa ng partikular na bagay kapag may naganap na error habang sinusuri ang lisensya,

// O pamahalaan ang error, gamit ang parameter na ‘error’, ang iyong sarili (Suriin ang mga error sa {@ link PiracyCheckerError}).

}

})

6 minuto basahin