Како Андроид програмери могу заштитити своје апликације од ИАП хакера



Испробајте Наш Инструмент За Елиминисање Проблема

Овај водич је намењен програмерима Андроид апликација који зарађују од ИАП-а и желе да се заштите од хакера и лажних куповина помоћу алата за хаковање. Постоји неколико добро познатих алата за хаковање ИАП-а, које овде нећу наводити, али у основи ови алати шаљу лажне рачуне за куповину у вашу апликацију како би омогућили кориснику да ужива у бесплатним ИАП-овима. То може бити било шта, од месечних претплата до жетона у игри.





Иако се нове верзије ових алата за хаковање увек издају, а марљивост у чувању њихових најновијих исправки и метода је веома важна, постоји неколико ствари које можете учинити да заштитите ИАП-ове својих апликација од крађе. Најважније је да морате омогућити неколико метода верификације ИАП-а на страни сервера, које ћу детаљно објаснити у наставку.



Овај водич није намењен почетницима, већ искусним програмерима апликација који ће разумети различите језике у овом водичу.

Коришћење додатка Гит Репо, посебно у ове сврхе:

ПирациЦхецкер

Додајте спремиште у свој пројекат буилд.градле :



репозиторијуми {

мавен {

урл „хттпс://јитпацк.ио“

}

}

И додајте библиотеку у свој модул буилд.градле :

зависности {

компајлирати „цом.гитхуб.јавиерсантос: ПирациЦхецкер: 1.1“

}

Препоруке

  • Увек омогућите ПроГуард у производним издањима.
  • ПирациЦхецкер треба да буде укључен у ваш метод онЦреате како бисте што пре проверили важећу лиценцу.
  • Препоручује се приказивање нове активности уместо дијалога када лиценца није важећа. На овај начин осигуравате да је главна активност апликације завршена. Погледајте „ Приказ резултата у дијалогу или новој активности '.

Верификујте Гоогле Плаи лиценцирање (ЛВЛ)

Гоогле Плаи нуди услугу лиценцирања која вам омогућава спровођење смерница за лиценцирање апликација које објављујете на Гоогле Плаи-у. Помоћу Гоогле Плаи лиценцирања ваша апликација може да затражи од Гоогле Плаи-а да добије статус лиценцирања за тренутног корисника.

Свака апликација коју објавите путем Гоогле Плаи-а може да користи услугу лиценцирања Гоогле Плаи-а. Није потребан посебан рачун или регистрација.

нови ПирациЦхецкер (овај)

.енаблеГооглеПлаиЛиценсинг („БАСЕ_64_ЛИЦЕНСЕ_КЕИ“)

...

.почетак();

Да бисте преузели кључ лиценце БАСЕ64, ваша апликација мора бити отпремљена на Гоогле Плаи Девелопер Цонсоле . Затим приступите својој апликацији -> Услуге и АПИ-ји.

Када користите лиценцирање Гоогле Плаи-а, требате да позовете .дестрои () у методи онДестрои () своје активности да бисте избегли вишеструку инстанцу покретања услуге.

Верификујте сертификат о потписивању апликације (потпис)

Програмери морају увек да потпишу апликације својим приватним кључем / сертификатом (садржаним у .кеисторе датотеци) пре него што се апликација може инсталирати на корисничке уређаје. Потврда о потписивању мора остати доследна током живота апликације и обично има датум истека од 25 година.

Потпис апликације ће бити сломљен ако је .апк промењен на било који начин - непотписане апликације обично не могу да се инсталирају. Можемо замислити да нападач уклања код за проверу лиценце како би, на пример, омогућио комплетне функције апликације без плаћања. Опаснији пример би био промена .апк-а тако да у легитимну апликацију укључује малвер ради прикупљања осетљивих корисничких података. Да би измењени .апк могао бити инсталиран, нападач мора да поднесе оставку.

нови ПирациЦхецкер (овај)

.енаблеСигнингЦертифицате (“478иИкКАКФ + КСТ8и4АТКвХкИибо =”) // Оригинални АПК потпис за верзију ПРОДУКЦИЈЕ

...

.почетак();

БИТИ ПАЖЉИВ!! Потпис ваше апликације може се преузети помоћу методе ПирациЦхецкерУтилс. Уверите се да сте потписали свој АПК користећи своју ПРОДУКЦИЈСКУ складиште кључева (не користећи ДЕБУГ) и инсталирали верзију коју планирате да дистрибуирате. Затим копирајте потпис враћен овом методом на конзолу и залепите у .енаблеСигнингЦертифицате („ИОУР_АПК_СИГНАТУРЕ“)

// Овај метод ће исписати потпис ваше апликације у конзоли

Лог.е („СИГНАТУРЕ“, ПирациЦхецкерУтилс.гетАПКСигнатуре (тхис));

Потврдите инсталациони програм

Ако апликацију планирате да дистрибуирате само у одређеној продавници, ова техника ће блокирати инсталирање апликације у било којој другој продавници.

Подржане продавнице: Гоогле Плаи, Амазон Апп Сторе и Самсунг Галаки Аппс.

нови ПирациЦхецкер (овај)

.енаблеИнсталлерИд (ИнсталлерИД.ГООГЛЕ_ПЛАИ)

.енаблеИнсталлерИд (ИнсталлерИД.АМАЗОН_АПП_СТОРЕ)

.енаблеИнсталлерИд (ИнсталлерИД.ГАЛАКСИ_АППС)

...

.почетак();

БИТИ ПАЖЉИВ!! Ово је заиста рестриктивна техника јер ће блокирати инсталирање ваше апликације помоћу другог тржишта или директно инсталирање .апк на уређај. Не препоручује се за већину случајева.

Потврдите употребу пиратских апликација

Ако желите да проверите да ли је корисник инсталирао пиратске апликације, можете да користите овај код.

Провериће: Луцки Патцхер, Урет Патцхер, Фреедом и ЦрееХацк.

нови ПирациЦхецкер (овај)

.енаблеУнаутхоризедАппсЦхецк ()

...

.почетак();

Можете блокирати апликацију чак и када је ова пиратска апликација деинсталирана. Ово спречава закрпање апликације, а затим деинсталирање пиратске апликације да бисте наставили да је користите. Библиотека ће сачувати вредност СхаредПреференце да би знала када је откривена пиратска апликација.

Постоје два начина за то:

Дефинишите СхаредПреференцес и име преференције на којој желите да сачувате резултат.

нови ПирациЦхецкер (овај)

.енаблеУнаутхоризедАппсЦхецк ()

.блоцкИфУнаутхоризедАппУнинсталлед (преференције, „апп_унаутхоризед“) // Промените „апп_унаутхоризед“ са сопственом вредношћу

...

.почетак();

Дефинишите име СхаредПреференцес и име преференције на којој желите да сачувате резултат.

нови ПирациЦхецкер (овај)

.енаблеУнаутхоризедАппсЦхецк ()

.блоцкИфУнаутхоризедАппУнинсталлед („лиценце_преференцес“, „апп_унаутхоризед“) // Промените „лиценсе_преференцес“ и „апп_унаутхоризед“ са сопственом вредношћу

...

.почетак();

Потврдите употребу апликација независних продавница

Ако желите да проверите да ли је корисник инсталирао апликације независних продавница, можете да користите овај код.

Провериће: Аптоиде, БлацкМарт, Мобогение, 1Мобиле, ГетАпк, ГетЈар, СлидеМе и АЦМаркет.

нови ПирациЦхецкер (овај)

.енаблеСторесЦхецк ()

...

.почетак();

Проверите да ли је апликација направљена за отклањање грешака

Ако ваша апликација ради на емулатору изван процеса развоја, то показује да неко други осим вас покушава да анализира апликацију.

нови ПирациЦхецкер (овај)

.енаблеДебугЦхецк ()

...

.почетак();

Проверите да ли се апликација покреће у емулатору

Изван развоја, мало је вероватно да би ваша апликација требало да ради на емулатору, а пуштање апликација са омогућеним отклањањем грешака се не препоручује јер повезаним рачунарима омогућава приступ и отклањање грешака у апликацији преко Андроид Дебуг Бридге-а.

боолеан дееп = фалсе;

нови ПирациЦхецкер (овај)

.енаблеЕмулаторЦхецк (дубоко)

...

.почетак();

Белешка: дееп боолеан са чине да библиотека врши додатне провере да би открила да ли је уређај емулатор или није. То би могло довести до неких чудних падова, па будите мудри када га користите.

Сачувајте резултат провере лиценце у СхаредПреференцес

Спремање резултата провјере лиценце корисно је за провјеру статуса лиценце без позивања .старт () више пута.

Постоје два начина за то:

Дефинишите СхаредПреференцес и име преференције на којој желите да сачувате резултат.

нови ПирациЦхецкер (овај)

.савеРесултТоСхаредПреференцес (преференце, „валид_лиценсе“) // Промените „валид_лиценсе“ са сопственом вредношћу

...

.почетак();

Дефинишите име СхаредПреференцес и име преференције на којој желите да сачувате резултат.

нови ПирациЦхецкер (овај)

.савеРесултТоСхаредПреференцес („лиценце_преференцес“, „валид_лиценсе“) // Промените „лиценсе_преференцес“ и „валид_лиценсе“ са својом вредношћу

...

.почетак();

Прилагођавања

Приказ резултата у дијалогу или новој активности

Препоручује се приказивање нове активности уместо дијалога када лиценца није важећа. На овај начин осигуравате да је главна активност апликације завршена.

Подразумевано ће се приказати дијалог који се не може отказати.

нови ПирациЦхецкер (овај)

.дисплаи (Дисплаи.АЦТИВИТИ)

...

.почетак();

Приказана Активност ће подразумевано користити боје библиотеке. Да бисте применили прилагођену примарну и примарну тамну боју и дефинисали да ли активност треба да приказује нормалну или светлу траку статуса, користите:

.витхАцтивитиЦолорс (Р.цолор.цолорПримари, Р.цолор.цолорПримариДарк, витхЛигхтСтатусБар)

Такође можете дефинисати прилагођени изглед кмл за овај садржај активности, користећи:

.витхАцтивитиЛаиоут (Р.лаиоут.ми_цустом_лаиоут)

Коришћење прилагођених повратних позива

Додавање повратног позива градитељу омогућава вам да прилагодите шта ће се догодити када је лиценца проверена и управљате грешкама при провери лиценце ако корисник не сме да користи апликацију. Имајте на уму да када користите ову методу морате бити свесни блокирања апликације од неовлашћених корисника .

Подразумевано, библиотека ће приказати дијалог који се не може отказати ако корисник не сме да користи апликацију, иначе се ништа неће догодити.

Користите градитељ и додајте следеће:

.цаллбацк (нови ПирациЦхецкерЦаллбацк () {

@Прегазити

јавна празнина аллов () {

// Учините нешто када је кориснику дозвољено да користи апликацију

}

@Прегазити

јавна празнина донтАллов (@НонНулл ПирациЦхецкерЕррор еррор, @Нуллабле ПиратеАпп апп) {

// Можете да урадите нешто одређено када корисник не сме да користи апликацију

// Или сами управљајте грешком, користећи параметар „грешка“ (Проверите грешке на {@линк ПирациЦхецкерЕррор}).

// Поред тога, ако сте омогућили проверу пиратских апликација и / или независних продавница, параметар „апп“

// је апликација која је откривена на уређају. Апликација може бити нулл, а када је нулл, то значи да није пронађена ниједна пиратска апликација или продавница,

// или сте онемогућили проверу за те апликације.

// Ово вам омогућава да обавестите кориснике о могућим разлозима због којих је лиценца неважећа.

}

@Прегазити

јавна празнина онЕррор (грешка @НонНулл ПирациЦхецкерЕррор) {

// Ова метода није потребна за примену / поништавање, али ...

// Можете урадити нешто одређено када дође до грешке приликом провере лиценце,

// Или сами управљајте грешком, користећи параметар „грешка“ (Проверите грешке на {@линк ПирациЦхецкерЕррор}).

}

})

6 минута читања