Potpisivanje .apk datoteke pomoću uslužnog programa jarsigner. Kako potpisati APK koristeći Gradle Što učiniti ako je ključ izgubljen ili hakiran

Sa značajkom potpisivanja aplikacije Google Playa, Google može upravljati ključem za potpisivanje vaše aplikacije, kao i zaštititi taj ključ i koristiti ga za potpisivanje vaših APK-ova za distribuciju. Ova metoda pohrane će vas zaštititi u slučaju da ključ izgubite ili hakirate.

Važno! Da biste koristili Android App Bundle (preporučeni format za objavljivanje aplikacije), morate se prijaviti u Google Play App Signing Program prije učitavanja App Bundlea na Play konzolu.

Registracija je otvorena za vlasnike računa i korisnike s dozvolama za globalno upravljanje proizvodnjom koji su prihvatili Uvjete pružanja usluge. Možete registrirati samo jednu aplikaciju istovremeno s Google Play programom za potpisivanje aplikacija.

Principi rada

Kada upotrebljavate značajku potpisivanja aplikacije Google Playa, vaši ključevi pohranjuju se u istoj infrastrukturi kao Googleovi ključevi i zaštićeni su namjenskom uslugom upravljanja ključevima. Detaljne informacije o Googleovoj tehničkoj infrastrukturi možete pronaći u dokumentaciji Google Cloud Security.

Android aplikacije potpisane su privatnim ključem. Svaki takav ključ povezan je s javnim certifikatom pomoću kojeg uređaji i servisi mogu provjeriti sigurnost aplikacija i njihovih ažuriranja. Na uređaje se instaliraju samo ona ažuriranja čiji potpis odgovara potpisu instalirane aplikacije. Ako dopustite Googleu da upravlja vašim ključem za potpisivanje aplikacije, postupak će biti sigurniji.

Bilješka. Upotreba značajke potpisivanja aplikacije Google Playa nije obavezna. Možete preuzeti APK-ove i upravljati vlastitim ključevima bez upotrebe paketa aplikacija. Međutim, ako izgubite pristup spremištu ključeva ili je ono ugroženo, nećete moći ažurirati svoju aplikaciju i morat ćete je ponovno objaviti s drugim nazivom paketa.

Opisi ključeva, predmeta i alata
Uvjeti Opis
Ključ za potpisivanje aplikacije

Ključ koji koristi Google Play za potpisivanje APK datoteka isporučenih na uređaj korisnika. Kada se prijavite za Google Play program potpisivanja aplikacija, možete učitati postojeći ključ za potpisivanje ili dopustiti Googleu da generira novi.

Ključ za preuzimanje

Postoje dva načina za generiranje ključa za preuzimanje:

  • Koristite ključ za potpisivanje aplikacije. Ako ste dopustili Googleu da generira ključ za potpisivanje aplikacije kada ste se prijavili za program, ključ za prijenos bit će ključ koji ste upotrijebili za potpisivanje prvog izdanja aplikacije.
  • Koristite zasebni ključ za preuzimanje. Ako ste dali vlastiti ključ za potpisivanje aplikacije prilikom registracije za program, možete generirati novi ključ za preuzimanje radi sigurnosti. Ako to ne želite učiniti, upotrijebite ključ za potpisivanje aplikacije kao ključ za preuzimanje za potpisivanje novih izdanja.
Certifikat (.der ili .pem)

Certifikat koji sadrži javni ključ i dodatne informacije o njegovom vlasniku. Certifikat javnog ključa omogućuje svima da znaju tko je potpisao App Bundle ili APK datoteku. Ovaj se certifikat može dijeliti jer ne uključuje privatni ključ.

Da biste registrirali svoje ključeve kod davatelja API-ja, možete preuzeti javni certifikat za svoj ključ za potpisivanje aplikacije s Potpisivanje zahtjeva u Play konzoli. Certifikat javnog ključa može se dijeliti sa svima jer ne uključuje privatni ključ.

Digitalni otisak prsta certifikata

Kratak i jedinstven identifikator za certifikat. API pružatelji često traže otisak prsta zajedno s nazivom paketa kako bi omogućili pristup svojim uslugama.

Digitalni otisci prstiju MD5, SHA-1 i SHA-256 certifikata za preuzimanje i potpis aplikacije mogu se pronaći na stranici Potpisivanje zahtjeva u Play konzoli. Također možete primiti drugu vrstu digitalnog otiska prsta. Da biste to učinili, preuzmite izvorni certifikat u DER formatu na istoj stranici.

Java skladište ključeva (.jks ili .keystore) Pohrana sigurnosnih certifikata i privatnih ključeva.
PEPK alat

Alat za izvoz privatnih ključeva iz Java pohrane i njihovo šifriranje za prijenos na Google Play.

Nakon što Googleu dostavite svoj ključ za potpisivanje aplikacije, odaberite izvoz i preuzimanje vlastitog ključa (i po izboru njegovog javnog certifikata), zatim slijedite upute za preuzimanje i korištenje alata. Također možete preuzeti, pogledati i koristiti PEPK alat otvorenog koda.

Proces potpisivanja zahtjeva

Možete preuzeti APK datoteke potpisane izvornim ključem za potpisivanje aplikacije prije ili nakon potpisivanja aplikacije na Google Playu.

Ako prelazite na Android App Bundles, možete ih testirati u testnim verzijama i koristiti postojeće APK-ove u proizvodnim verzijama. Evo kako to funkcionira:

  1. Potpisujete App Bundle ili APK i prenosite ga na Play konzolu.
  2. Postupak potpisivanja aplikacije ovisi o tome što preuzimate.
    • App Bundle. Google optimizira APK datoteke iz App Bundlea i zatim ih potpisuje ključem za potpisivanje aplikacije.
    • APK datoteka potpisana ključem za preuzimanje. Google provjerava vaš potpis, uklanja ga i ponovno potpisuje APK-ove ključem za potpisivanje aplikacije.
    • APK datoteka potpisana ključem za potpisivanje aplikacije. Google provjerava potpis.
  3. Google isporučuje potpisane APK datoteke korisnicima.

Kako se prijaviti za Google Play program potpisivanja aplikacija

Nove aplikacije

1. korak: izradite ključ za preuzimanje

  1. Izradite ključ za preuzimanje slijedeći upute.
  2. Potpišite novu APK datoteku ključem za preuzimanje.

Korak 2: Pripremite izdanje

  1. , slijedeći upute.
  2. Nakon što odaberete vrstu svoje verzije, konfigurirajte svoje postavke za potpisivanje aplikacije u odjeljku "Neka Google zaštiti i upravlja vašim ključem za potpisivanje aplikacije".
  3. Ako kliknete Nastaviti, generirani ključ postat će ključ za preuzimanje koji će se koristiti za potpisivanje budućih izdanja. Također možete odabrati sljedeće Napredne postavke:
    • Koristite jedan ključ za različite aplikacije na računu razvojnog programera (opcija 2).
    • Učitajte ključ za potpisivanje postojeće aplikacije (opcija 2, 3 i 4), odabirom najprikladnije metode izvoza i preuzimanja. Nakon što preuzmete ključ za potpisivanje aplikacije i njen javni certifikat, možete ih koristiti kao ključ za potpisivanje aplikacije.

Bilješka. Da biste nastavili, morate prihvatiti Uvjete korištenja i prijaviti se u Program potpisivanja aplikacije.

3. korak: registrirajte ključ za potpisivanje aplikacije kod svojih pružatelja API-ja

Ako vaša aplikacija koristi API, tada ćete za autentifikaciju najvjerojatnije morati registrirati certifikat ključa koji Google koristi za potpisivanje vaše aplikacije. Da biste pronašli certifikat:

  1. Prijavite se na Play konzolu.
  2. Odaberite aplikaciju.
  3. U izborniku s lijeve strane odaberite Upravljanje izdanjem > Potpisi aplikacije.
    • Ako pružatelj API-ja zahtijeva drugu vrstu otiska prsta, možete preuzeti izvorni certifikat u DER formatu i prema potrebi ga pretvoriti pomoću odgovarajućih alata.
Objavljene aplikacije

1. korak: prijavite se za Google Play program potpisivanja aplikacija

  1. Prijavite se na Play konzolu.
  2. Odaberite aplikaciju.
  3. U izborniku s lijeve strane odaberite Upravljanje izdanjem > Potpisi aplikacije.
  4. Po potrebi pročitajte Uvjete korištenja i kliknite Prihvatiti.

Korak 2: Pošaljite originalni ključ Googleu i izradite ključ za preuzimanje

  1. Pronađite izvorni ključ za potpisivanje aplikacije.
  2. Prijavite se na Play konzolu.
  3. Odaberite aplikaciju.
  4. U izborniku s lijeve strane odaberite Upravljanje izdanjem > Potpisi aplikacije.
  5. Prenesite postojeći ključ za potpisivanje aplikacije na način koji najbolje odgovara vašem procesu izdavanja.
  1. i prenesite certifikat na Google Play.
    • Također možete koristiti ključ za potpisivanje aplikacije kao ključ za preuzimanje.
  2. Kopirajte digitalne otiske prstiju (MD5, SHA-1 i SHA-256) certifikata za potpisivanje aplikacije.
    • Za provođenje testiranja možda ćete morati registrirati certifikat ključa za pokretanje kod davatelja API-ja pomoću otiska prsta certifikata i ključa za potpisivanje aplikacije.

Korak 4: Potpišite sljedeće ažuriranje aplikacije svojim ključem za preuzimanje

Objavljena ažuriranja aplikacije moraju biti potpisana ključem za preuzimanje.

Kako stvoriti ključ za preuzimanje i ažurirati pohranu ključeva

Ključ za preuzimanje možete izraditi kada se prijavite za Google Play program potpisivanja aplikacija ili ga možete generirati kasnije u Upravljanje izdanjem > Potpisi aplikacije.

Da biste izradili ključ za preuzimanje, slijedite ove korake:

  1. Slijedite upute na web stranici Android Developers. Čuvajte ključ na sigurnom mjestu.
  2. Izvezite certifikat za ključ za pokretanje u PEM formatu. Zamijenite sljedeće argumente podvlakom:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Kada se od vas zatraži tijekom postupka izdavanja, preuzmite certifikat da biste ga registrirali na Googleu.

Ako koristite ključ za preuzimanje:

  • Ključ za preuzimanje registriran je kod Googlea samo za provjeru identiteta kreatora aplikacije.
  • Vaš se potpis uklanja sa svih preuzimanja APK-a prije nego što dođu do korisnika.
Ograničenja
  • Ključ za preuzimanje mora koristiti RSA enkripciju i mora imati najmanje 2048 bita.
  • DSA i EC ključevi nisu podržani, niti su RSA ključevi manji od 2048 bita.
Ažuriranje spremišta ključeva

Nakon što ste izradili svoj ključ za preuzimanje, provjerite i ažurirajte sljedeće lokacije ako je potrebno:

  • lokalni sustav;
  • sigurni lokalni poslužitelj (s različitim listama kontrole pristupa);
  • sustav u oblaku (s raznim listama kontrole pristupa);
  • posebne usluge upravljanja ključevima;
  • Git spremišta.

Kako ažurirati ključ za potpisivanje za nove instalacije aplikacija

U nekim slučajevima možda ćete moći zatražiti ažuriranje ključa za potpisivanje aplikacije. Novi ključ će se koristiti za potpisivanje novih instalacija i ažuriranja aplikacije, a zastarjeli će se koristiti za ažuriranje potpisanih verzija koje su korisnici već instalirali.

Ključ za potpisivanje može se ažurirati samo jednom za svaku aplikaciju. U malo vjerojatnom slučaju da koristite isti ključ za potpisivanje za više aplikacija za njihovo pokretanje u istom procesu, ključ se ne može ažurirati.

Trebali biste zatražiti ažuriranje ključa za potpisivanje aplikacije u sljedećim slučajevima:

  • Trebate sigurniji ključ.
  • Ključ za potpisivanje aplikacije je ugrožen.

Bilješka. Zahtjev za ažuriranje ključa za potpisivanje aplikacije na Play konzoli nije povezan sa zamjenom ključeva u Androidu P i novijim verzijama. Google Play trenutno ne podržava ovu zamjenu ključa.

Važne napomene o ažuriranju ključeva

Prije nego što zatražite ažuriranje ključa, važno je razumjeti koje će promjene to uključivati.

  • Ako koristite isti ključ za potpisivanje za više aplikacija za korištenje istog koda ili podataka, morat ćete ažurirati aplikacije da prepoznaju i novi i naslijeđeni ključ.
  • Ako vaša aplikacija koristi API, svakako registrirajte certifikate za nove i naslijeđene ključeve za potpisivanje aplikacije kod pružatelja API-ja prije nadogradnje svoje aplikacije. Certifikati su dostupni na stranici Potpisivanje zahtjeva Play Console.
  • Ako mnogi korisnici vaše aplikacije instaliraju ažuriranja putem mreža za dijeljenje datoteka, moći će instalirati samo ažuriranja potpisana istim ključem kao aplikacija instalirana na njihovim uređajima. Ako se aplikacije ne mogu ažurirati jer je instalirana verzija potpisana drugim ključem, korisnici je mogu deinstalirati i ponovno instalirati kako bi primali ažuriranja.
Zatražite ažuriranje ključa za nove instalacije. Da biste to učinili, slijedite ove korake:
  1. Prijavite se na Play konzolu.
  2. Odaberite aplikaciju.
  3. U izborniku s lijeve strane odaberite Upravljanje izdanjem > Potpisi aplikacije.
  4. Odaberite na kartici "Ažuriranje ključa za potpisivanje za nove instalacije aplikacija". Zatražite ažuriranje ključa.
  5. Odaberite što ćete učiniti s uređajem.
    • Ovisno o opciji koju odaberete, možda ćete morati kontaktirati podršku da dovršite svoj zahtjev.
  6. Dopustite Google Playu da generira novi ključ za potpisivanje aplikacije (preporučeno) ili ga preuzmite.
    • Nakon ažuriranja ključa za potpisivanje aplikacije, ako ključ odgovara ključu za preuzimanje, možete nastaviti koristiti stari ključ za potpisivanje aplikacije kao ključ za preuzimanje ili izraditi novi.
  • Ako ste također objavili svoju aplikaciju izvan Google Playa ili to planirate učiniti, možete generirati zajednički ključ za potpisivanje aplikacije i prenijeti ga na Google kada se prijavite za Google Play App Signing Program.
  • Kako biste zaštitili svoj račun, omogućiti provjeru u dva koraka za sve račune koji imaju pristup Play konzoli.
  • Nakon što objavite App Bundle u testnoj ili proizvodnoj verziji, možete otvoriti App Bundle Browser i preuzeti ZIP arhivu koja sadrži sve APK datoteke za određeni uređaj. Ove APK datoteke već su potpisane ključem za potpisivanje aplikacije. Možete ih instalirati na svoj uređaj iz ZIP arhive pomoću uslužnog programa naredbenog retka bundletool.
  • Za veću sigurnost generirajte novi ključ za preuzimanje koji se razlikuje od ključa za potpisivanje aplikacije.
  • Ako želite testirati APK potpisan ključem za učitavanje, registrirajte ključ na usluzi ili API-ju koji koristi potpis aplikacije za provjeru autentičnosti (kao što je Google Maps API ili Facebook Developer Kit).
  • Ako koristite Google API, možete registrirati svoj certifikat za prijenos u Google Cloud Console.

Što učiniti ako je ključ izgubljen ili hakiran

Ako ste izgubili pristup svom privatnom ključu za preuzimanje ili je hakiran, pitajte vlasnika svog računa. Prilikom kontaktiranja podrške, vlasnik računa mora priložiti datoteku upload_certificate.pem.

Kada tim za podršku registrira novi ključ za preuzimanje, primit ćete e-poruku i tada možete ažurirati svoje pohrane ključeva i registrirati ključ kod pružatelja API-ja.

Važno! Poništavanje ključa za preuzimanje ne utječe na ključ za potpisivanje aplikacije, koji Google Play koristi za potpisivanje APK datoteka prije slanja korisnicima.

Jesu li ove informacije bile korisne?

Kako se ovaj članak može poboljšati?

Ponekad neke aplikacije na Androidu na neki način ne odgovaraju korisniku. Primjer je nametljivo oglašavanje. A također se događa da je program dobar za sve, ali prijevod u njemu je kriv ili potpuno odsutan. Ili, na primjer, program je probni, ali ne postoji način da dobijete punu verziju. Kako promijeniti situaciju?

Uvod

U ovom ćemo članku govoriti o tome kako rastaviti APK paket s aplikacijom, pogledati njegovu unutarnju strukturu, rastaviti i dekompilirati bajt kod, a također ćemo pokušati napraviti nekoliko promjena u aplikacijama koje nam mogu donijeti jednu ili drugu korist.

Da biste sve ovo napravili sami, trebat će vam barem osnovno poznavanje jezika Java, na kojem su Android aplikacije napisane, te XML jezika, koji se u Androidu koristi posvuda - od opisa same aplikacije i njezinih prava pristupa do pohranjivanja stringova koji će se prikazati na ekranu. Također ćete trebati sposobnost korištenja specijaliziranog softvera konzole.

Dakle, što je APK paket u kojem se distribuira apsolutno sav Android softver?

Dekompilacija aplikacije

U ovom smo članku radili samo s rastavljenim kodom aplikacije, ali ako se uvedu ozbiljnije promjene u velike aplikacije, razumijevanje smali koda bit će mnogo teže. Srećom, možemo dekompilirati dex kod u Java kod, koji je, iako nije originalan i nije ponovno kompajliran, mnogo lakši za čitanje i razumijevanje logike aplikacije. Da bismo to učinili, trebat će nam dva alata:

  • dex2jar je prevoditelj Dalvik bytecode-a u JVM bytecode, na temelju kojeg možemo dobiti kod u jeziku Java;
  • jd-gui je sam dekompiler koji vam omogućuje da dobijete čitljiv Java kod iz JVM bajtkoda. Kao alternativu, možete koristiti Jad (www.varaneckas.com/jad); Iako je prilično star, u nekim slučajevima generira čitljiviji kod od Jd-guija.

Ovako ih treba koristiti. Prvo pokrećemo dex2jar, navodeći put do apk paketa kao argument:

% dex2jar.sh mail.apk

Kao rezultat toga, Java paket mail.jar će se pojaviti u trenutnom direktoriju, koji se već može otvoriti u jd-gui za pregled Java koda.

Dogovaranje APK paketa i preuzimanje istih

Paket Android aplikacija u biti je obična ZIP datoteka koja ne zahtijeva nikakve posebne alate za pregled sadržaja ili izdvajanje. Dovoljno je imati arhiver - 7zip za Windows ili konzolni unzip na Linuxu. Ali to se tiče omota. Što je unutra? Općenito, unutra imamo sljedeću strukturu:

  • META-INF/- sadrži digitalni certifikat aplikacije koji identificira njezina kreatora i kontrolne zbrojeve datoteka paketa;
  • res/ - različiti resursi koje aplikacija koristi u svom radu, poput slika, deklarativnog opisa sučelja, kao i drugi podaci;
  • AndroidManifest.xml- opis aplikacije. To uključuje, primjerice, popis potrebnih dozvola, potrebnu verziju Androida i potrebnu razlučivost zaslona;
  • razredi.dex- kompajlirani bajt kod aplikacije za Dalvik virtualni stroj;
  • resursi.arsc- također resursi, ali drugačije vrste - posebno, nizovi (da, ova se datoteka može koristiti za rusificiranje!).

Navedene datoteke i direktoriji nalaze se, ako ne u svim, onda, možda, u velikoj većini APK-ova. Međutim, postoji još nekoliko ne tako uobičajenih datoteka/direktorija koje vrijedi spomenuti:

  • imovina- analog resursa. Glavna je razlika u tome što za pristup resursu morate znati njegov identifikator, ali popis imovine može se dobiti dinamički pomoću metode AssetManager.list() u kodu aplikacije;
  • lib- izvorne Linux biblioteke napisane pomoću NDK (Native Development Kit).

Ovaj direktorij koriste proizvođači igara koji tamo postavljaju svoje motore igara napisane u C/C++, kao i kreatori aplikacija visokih performansi (na primjer, Google Chrome). Shvatili smo uređaj. Ali kako doći do datoteke paketa aplikacije koja vas zanima? Budući da nije moguće preuzeti APK datoteke s uređaja bez root-a (nalaze se u direktoriju /data/app), a rootanje nije uvijek preporučljivo, postoje najmanje tri načina za preuzimanje datoteke aplikacije na vaše računalo:

  • APK Downloader proširenje za Chrome;
  • Aplikacija Real APK Leecher;
  • razni hosting datoteka i Vareznici.

Koju koristiti je stvar ukusa; radije koristimo zasebne aplikacije, pa ćemo opisati korištenje Real APK Leechera, pogotovo jer je napisan u Javi i, sukladno tome, radit će ili u Windowsima ili Nixu.

Nakon pokretanja programa potrebno je ispuniti tri polja: Email, Password i Device ID - te odabrati jezik. Prva dva su e-mail i lozinka vašeg Google računa koji koristite na uređaju. Treći je identifikator uređaja, a može se dobiti upisivanjem koda na brojčanik # #8255## a zatim pronalaženje retka ID uređaja. Prilikom ispunjavanja potrebno je unijeti samo ID bez prefiksa android-.

Nakon popunjavanja i spremanja često se pojavljuje poruka "Greška pri povezivanju s poslužiteljem". To nema nikakve veze s Google Playom, stoga ga slobodno zanemarite i potražite pakete koji vas zanimaju.

Pregledajte i izmijenite

Recimo da ste pronašli paket koji vas zanima, preuzeli ga, raspakirali... i kada ste pokušali pogledati neku XML datoteku, iznenadili ste se kada ste otkrili da datoteka nije tekstualna. Kako ga dekompilirati i kako općenito raditi s paketima? Je li stvarno potrebno instalirati SDK? Ne, uopće nije potrebno instalirati SDK. Zapravo, svi koraci za izdvajanje, modificiranje i pakiranje APK paketa zahtijevaju sljedeće alate:

  • ZIP arhiver za raspakiranje i pakiranje;
  • mali- Asembler/rastavljač bajt koda Dalvik virtualnog stroja (code.google.com/p/smali);
  • aapt- alat za pakiranje resursa (prema zadanim postavkama resursi se pohranjuju u binarnom obliku radi optimizacije performansi aplikacije). Uključeno u Android SDK, ali se može nabaviti zasebno;
  • potpisnik- alat za digitalno potpisivanje modificiranog paketa (bit.ly/Rmrv4M).

Sve ove alate možete koristiti odvojeno, ali to je nezgodno, pa je bolje koristiti softver više razine izgrađen na njihovoj osnovi. Ako koristite Linux ili Mac OS X, postoji alat koji se zove apktool. Omogućuje vam da raspakirate resurse u njihovom izvornom obliku (uključujući binarne XML i arsc datoteke), ponovno izgradite paket s promijenjenim resursima, ali ne zna kako potpisati pakete, tako da ćete morati ručno pokrenuti uslužni program za potpis. Unatoč činjenici da je uslužni program napisan u Javi, njegova instalacija prilično je nestandardna. Prvo morate nabaviti samu jar datoteku:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ izvoz PATH=~/bin:$PATH

Ako radite na Windowsima, onda za to postoji izvrstan alat pod nazivom Virtuous Ten Studio, koji također akumulira sve te alate (uključujući i sam apktool), ali umjesto CLI sučelja korisniku pruža intuitivno grafičko sučelje pomoću kojeg možete obavljati operacije za raspakiranje, rastavljanje i dekompiliranje u nekoliko klikova. Ovaj alat je Donation-ware, to jest, ponekad se pojavljuju prozori koji traže da dobijete licencu, ali na kraju se to može tolerirati. Nema smisla opisivati ​​ga jer sučelje možete razumjeti za nekoliko minuta. Ali apktool, zbog svoje konzolne prirode, treba raspraviti detaljnije.


Pogledajmo opcije apktoola. Ukratko, postoje tri osnovne naredbe: d (decode), b (build) i if (install framework). Ako je s prve dvije naredbe sve jasno, što onda radi treća, uvjetna naredba? Raspakira navedeni okvir korisničkog sučelja, što je neophodno u slučajevima kada secirate bilo koji paket sustava.

Pogledajmo najzanimljivije opcije prve naredbe:

  • -s- nemojte rastavljati dex datoteke;
  • -r- ne raspakirajte resurse;
  • -b- nemojte umetati informacije o ispravljanju pogrešaka u rezultate rastavljanja dex datoteke;
  • --staza-okvira- koristite navedeni okvir korisničkog sučelja umjesto onog ugrađenog u apktool. Sada pogledajmo nekoliko opcija za naredbu b:
  • -f- prisilna montaža bez provjere promjena;
  • -a- navedite put do aapta (alat za izgradnju APK arhive), ako ga iz nekog razloga želite koristiti iz drugog izvora.

Korištenje apktoola je vrlo jednostavno; samo navedite jednu od naredbi i put do APK-a, na primjer:

$ apktool d mail.apk

Nakon toga, sve ekstrahirane i rastavljene datoteke paketa pojavit će se u direktoriju pošte.

Priprema. Onemogućavanje oglašavanja

Teorija je, naravno, dobra, ali zašto je potrebna ako ne znamo što ćemo s neraspakiranim paketom? Pokušajmo primijeniti teoriju u našu korist, naime, modificirajmo neki softver tako da nam ne prikazuje reklame. Na primjer, neka to bude Virtual Torch - virtualna baklja. Ovaj je softver idealan za nas jer je do kraja ispunjen dosadnim reklamama i, štoviše, dovoljno je jednostavan da se ne izgubimo u džungli koda.


Dakle, pomoću jedne od gore navedenih metoda preuzmite aplikaciju s tržišta. Ako odlučite koristiti Virtuous Ten Studio, jednostavno otvorite APK datoteku u aplikaciji i raspakirajte je, izradite projekt (Datoteka -> Novi projekt), zatim odaberite Uvezi datoteku u kontekstnom izborniku projekta. Ako je vaš izbor pao na apktool, samo pokrenite jednu naredbu:

$ apktool d com.kauf.particle.virtualtorch.apk

Nakon toga će se u direktoriju com.kauf.particle.virtualtorch pojaviti stablo datoteka slično onom opisanom u prethodnom odjeljku, ali s dodatnim direktorijem smali umjesto dex datoteka i datotekom apktool.yml. Prvi sadrži rastavljeni kod izvršne dex datoteke aplikacije, drugi sadrži servisne informacije potrebne apktoolu za ponovno sastavljanje paketa.

Prvo mjesto koje bismo trebali pogledati je, naravno, AndroidManifest.xml. I tu odmah nailazimo na sljedeći redak:

Nije teško pogoditi da je odgovoran za davanje dopuštenja aplikaciji za korištenje internetske veze. Zapravo, ako se samo želimo riješiti oglašavanja, najvjerojatnije ćemo samo trebati blokirati aplikaciju s interneta. Pokušajmo to učiniti. Brišemo navedeni redak i pokušavamo izgraditi softver koristeći apktool:

$ apktool b com.kauf.particle.virtualtorch

Rezultirajuća APK datoteka pojavit će se u direktoriju com.kauf.particle.virtualtorch/build/. Međutim, neće ga biti moguće instalirati jer nema digitalni potpis i kontrolne zbrojeve datoteka (jednostavno nema META-INF/ imenik). Paket moramo potpisati pomoću uslužnog programa apk-signer. Pokrenut. Sučelje se sastoji od dva taba - na prvom (Key Generator) kreiramo ključeve, na drugom (APK Signer) potpisujemo. Za izradu privatnog ključa ispunite sljedeća polja:

  • Ciljna datoteka- izlazna datoteka spremišta ključeva; obično pohranjuje jedan par ključeva;
  • Lozinka I Potvrdi- lozinka za pohranu;
  • Alias- naziv ključa u spremištu;
  • Alias ​​lozinka I Potvrdi- lozinka tajnog ključa;
  • Valjanost- rok valjanosti (u godinama). Zadana vrijednost je optimalna.

Ostala polja su, općenito, izborna - ali barem jedno mora biti popunjeno.


UPOZORENJE

Da biste potpisali aplikaciju pomoću apk-signera, morate instalirati Android SDK i navesti punu putanju do njega u postavkama aplikacije.

Sve informacije su dane samo u informativne svrhe. Ni urednici ni autor nisu odgovorni za bilo kakvu moguću štetu prouzročenu materijalima ovog članka.

Sada možete potpisati APK ovim ključem. Na kartici Potpisnik APK-a odaberite novogeneriranu datoteku, unesite zaporku, alias ključa i zaporku, zatim pronađite APK datoteku i hrabro kliknite gumb "Potpiši". Ako sve bude u redu, paket će biti potpisan.

INFO

Budući da smo paket potpisali vlastitim ključem, on će biti u sukobu s originalnom aplikacijom, što znači da ćemo pri pokušaju ažuriranja softvera putem marketa dobiti grešku.

Digitalni potpis potreban je samo za softver treće strane, pa ako mijenjate sistemske aplikacije koje su instalirane kopiranjem u direktorij /system/app/, tada ih ne morate potpisivati.

Nakon toga preuzmite paket na svoj pametni telefon, instalirajte ga i pokrenite. Voila, oglas je nestao! Umjesto toga, međutim, pojavila se poruka da nemamo internet ili da nemamo odgovarajuće dozvole. U teoriji, ovo bi moglo biti dovoljno, ali poruka izgleda neugodno, a da budemo iskreni, upravo smo imali sreće s glupom aplikacijom. Normalno napisani softver će najvjerojatnije razjasniti svoje vjerodajnice ili provjeriti internetsku vezu, au suprotnom jednostavno odbiti pokretanje. Kako biti u ovom slučaju? Naravno, uredite kod.

Obično autori aplikacija kreiraju posebne klase za prikazivanje reklama i pozivaju metode tih klasa kada se aplikacija ili jedna od njezinih “aktivnosti” (jednostavno rečeno, zasloni aplikacije) pokrene. Pokušajmo pronaći ove klase. Idemo u direktorij smali, zatim com (org sadrži samo otvorenu grafičku biblioteku cocos2d), pa kauf (ovdje je, jer je ovo ime programera i sav njegov kod) - i evo ga, marketinški imenik. Unutra nalazimo hrpu datoteka s nastavkom smali. To su klase, a najistaknutija među njima je klasa Ad.smali iz čijeg naziva je lako pogoditi da je ona ta koja prikazuje reklame.

Mogli bismo promijeniti logiku njezina rada, ali bi bilo puno lakše jednostavno ukloniti pozive bilo koje od njegovih metoda iz same aplikacije. Stoga napuštamo marketinški imenik i idemo u susjedni imenik čestica, a zatim na virtualtorch. Ovdje posebnu pozornost zaslužuje datoteka MainActivity.smali. Ovo je standardna Android klasa koju kreira Android SDK i instalira kao ulazna točka u aplikaciju (analogno glavnoj funkciji u C). Otvorite datoteku za uređivanje.

Unutra je smali kod (lokalni asembler). Prilično je zbunjujuća i teška za čitanje zbog svoje prirode niske razine, pa je nećemo proučavati, već ćemo jednostavno pronaći sve reference na klasu Ad u kodu i komentirati ih. U pretragu unesemo redak "Oglas" i dođemo do retka 25:

Polje privatni oglas:Lcom/kauf/marketing/Oglas;

Ovdje se kreira oglasno polje za pohranjivanje objekta klase oglasa. Komentiramo stavljanjem znaka ### ispred retka. Nastavljamo potragu. Redak 423:

Nova instanca v3, Lcom/kauf/marketing/Ad;

Ovdje se događa stvaranje objekta. Idemo komentirati. Nastavljamo pretragu i nalazimo u redovima 433, 435, 466, 468, 738, 740, 800 i 802 pozive metodama klase Ad. Idemo komentirati. Izgleda da je to to. Uštedjeti. Sada paket treba ponovno sastaviti i provjeriti funkcionalnost i prisutnost oglašavanja. Radi čistoće eksperimenta, vraćamo red uklonjen iz AndroidManifest.xml, sastavljamo paket, potpisujemo ga i instaliramo.

Naš zamorac. Oglašavanje vidljivo

Ups! Oglašavanje je nestalo samo dok je aplikacija radila, ali je ostalo u glavnom izborniku koji vidimo kada pokrenemo softver. Dakle, čekaj, ali ulazna točka je klasa MainActivity, a reklama je nestala dok je aplikacija radila, ali je ostala u glavnom izborniku, dakle ulazna točka je drugačija? Da biste identificirali pravu ulaznu točku, ponovno otvorite datoteku AndroidManifest.xml. I da, sadrži sljedeće retke:

Oni nam govore (i, što je još važnije, androidu) da aktivnost pod nazivom Start treba pokrenuti kao odgovor na generiranje namjere (događaja) android.intent.action.MAIN iz kategorije android.intent.category.LAUNCHER. Ovaj se događaj generira kada dodirnete ikonu aplikacije u pokretaču, tako da određuje ulaznu točku, naime klasu Start. Najvjerojatnije je programer prvo napisao aplikaciju bez glavnog izbornika, čija je ulazna točka bila standardna klasa MainActivity, a zatim je dodao novi prozor (aktivnost) koji sadrži izbornik i opisan u klasi Start, te ga ručno napravio unosom točka.

Otvorite datoteku Start.smali i ponovno potražite redak "Ad", nalazimo u redovima 153 i 155 spominjanje klase FirstAd. Također se nalazi u izvornom kodu i, sudeći po nazivu, odgovoran je za prikazivanje oglasa na glavnom ekranu. Pogledajmo dalje, postoji kreiranje instance klase FirstAd i namjera koja je, prema kontekstu, povezana s tom instancom, a zatim i oznaka cond_10 na koju se uvjetni prijelaz provodi točno prije stvaranja instance razreda:

If-ne p1, v0, :cond_10 .line 74 nova instanca v0, Landroid/content/Intent; ... :cond_10

Najvjerojatnije, program nekako nasumično izračunava treba li se oglašavanje prikazati na glavnom zaslonu, a ako ne, skače izravno na cond_10. U redu, pojednostavimo njen zadatak i zamijenimo uvjetni prijelaz bezuvjetnim:

#ako-ne p1, v0, :cond_10 goto:cond_10

U kodu se više ne spominje FirstAd, pa zatvaramo datoteku i ponovno sastavljamo našu virtualnu baklju pomoću apktoola. Kopirajte ga na svoj pametni telefon, instalirajte, pokrenite. Voila, sva reklama je nestala, na čemu nam svima čestitamo.

Rezultati

Ovaj je članak samo kratki uvod u metode hakiranja i modificiranja Android aplikacija. Mnogi problemi ostali su iza kulisa, poput uklanjanja zaštite, raščlanjivanja maskiranog koda, prevođenja i zamjene resursa aplikacije, kao i modificiranja aplikacija napisanih pomoću Android NDK. Međutim, ako imate osnovno znanje, samo je pitanje vremena da sve shvatite.

Dakle, radili ste mnogo dana (a možda čak i noći) i sada je vaša prva hibridna mobilna aplikacija spremna. Prilično je stabilan, većina kritičnih grešaka je zatvorena. Ostale su male, ali sjetivši se da je perfekcionizam zlo, donosite snažnu odluku da objavite aplikaciju.

Preduvjet za to je prisutnost potpisane APK datoteke. U ovom ćete članku naučiti kako potpisati apk datoteku.

Malo povlačenje

Kad se moj ljubimac projekt približio izdanju, počeo sam tražiti informacije o tome kako brzo i bezbolno objaviti aplikaciju. Mnoge od pronađenih uputa izgledale su jednostavno. Odabrao sam upute autora Ionic frameworka na kojem je aplikacija razvijena. Nije sve uspjelo prvi put; postoji nekoliko osobitosti. Proces potpisivanja opisan je u ovom članku, s istaknutim važnim točkama.

Početni podaci

Pretpostavljam da ste sve pripremili za razvoj hibridnih mobilnih aplikacija pomoću Apache Cordove. Mora se instalirati:
  • Apache Cordova
  • Java Development Kit
  • Alati za Android SDK
Naziv projekta i aplikacije je lcf. Zamijenite nazivom projekta gdje je potrebno.

Ići

Najprije trebate izraditi verziju svoje aplikacije. Ali prije toga provjerimo jesu li svi nepotrebni dodaci uklonjeni. Na primjer, ne trebamo dodatak koji šalje informacije o otklanjanju pogrešaka na konzolu. Idemo to izbrisati:

$ cordova dodatak rm cordova-plugin-console
Da biste generirali verziju izdanja za Android, upotrijebite naredbu izgraditi sa zastavom -- otpuštanje:

$ cordova build --release android
Ova naredba će stvoriti nepotpisan APK datoteka u direktoriju:

Platforme/android/build/outputs/apk
Na primjer, platforms/android/build/outputs/apk/ android-release-unsigned.apk. Zatim ćemo morati potpisati ovu datoteku i pokrenuti uslužni program zipalign za optimizaciju i pripremu datoteke za Google Play.

Za potpisivanje datoteke potreban vam je certifikat. Kreirajmo ga pomoću uslužnog programa alat za ključeve koji je uključen u JDK:

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -validnost 10000
Važno

Vrijednost parametra -alias mora se zapamtiti ili još bolje zapisati. U gornjem primjeru jednako je lcf (na temelju prvih slova naziva aplikacije Loyal Client Free). Neću iznositi detalje ovdje, ali ako vas zanima, napišite u komentarima i reći ću vam više.

Alias ​​se koristi svaki put kada potpišete * aplikacije. Da biste ga lakše zapamtili, upotrijebite naziv datoteke spremišta ključeva kao alias, na primjer:


-keystore hello-world.keystore -alias hello-world -keystore weather-app.keystore -alias weather-app -keystore todo.keystore -alias todo
* Morate potpisati aplikaciju svaki put kada se objave ažuriranja

Korisnost alat za ključeve postavlja niz pitanja. Bit će ih ukupno 8 kako biste imali predodžbu o pitanjima i približnim odgovorima, svi su navedeni ispod spojlera.

Keytool pitanja i primjeri odgovora na njih

1. Unesite lozinku spremišta ključeva:
Ovdje morate unijeti lozinku za datoteku (najmanje 6 znakova). Unesenu lozinku potrebno je zapisati na sigurno mjesto; potrebna je pri svakom potpisivanju zahtjeva.

2. Ponovno unesite novu lozinku:
Ponovno unesite lozinku.

3. Koje je tvoje ime i prezime?
: Ivan Petrov
Vaše ime i prezime. Vrijednost u uglatim zagradama je zadana vrijednost.

4. Kako se zove vaša organizacijska jedinica?
: TO
Naziv odjela vaše tvrtke. Možete ostaviti prazno, označavam TO.

5. Kako se zove vaša organizacija?
: 2 programera
Naziv vaše organizacije. Navedite ako je dostupno.

6. Kako se zove vaš grad ili naselje?
: Moskva
Ime grada

7. Kako se zove vaša država ili pokrajina?
: M.O.
Naziv područja

8. Koji je dvoslovni kod zemlje za ovu jedinicu?
: RU
Šifra zemlje. Označavam RU.

: g

Potvrdite je li sve točno ili pritisnite Enter za ponovni ulazak.


Na kraju će se pojaviti poruka koja označava uspješno generiranje ključa. Od vas će se tražiti da postavite lozinku za privatni ključ (ako želite ostaviti istu kao za certifikat, pritisnite Enter):

Generiranje para ključeva od 2 048 bita RSA i samopotpisanog certifikata (SHA256withRSA) s valjanošću od 10 000 dana za: CN=Ivan Petrov, OU=IT, O=2developers, L=Moskva, ST=MO, C=RU Unesite ključ lozinka za (VRATI ako je ista kao zaporka spremišta ključeva):
Datoteka će se stvoriti u trenutnom direktoriju lcf.spremište ključeva.

Važno

Stvorenu datoteku morate spremiti na sigurno mjesto. Ako koristite privatno spremište, datoteka se može predati zajedno s izvornim kodom aplikacije. Općenito, bolje je pohraniti certifikate odvojeno. Ako izgubite certifikat, nećete moći izdavati ažuriranja aplikacije.

Preostala su još dva koraka i imat ćete APK datoteku spremnu za distribuciju. Idemo na potpisivanje.

Da biste potpisali apk datoteku, upotrijebite uslužni program jarsigner, koji je također uključen u JDK.

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Naziv certifikata naveden je iza parametra -skladište ključeva, alias - iza naziva datoteke.

Na kraju, za optimizaciju apk datoteke, koristit ćemo uslužni program zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Zadnji parametar je naziv datoteke koju ćete prenijeti na Google Play.

Važno.

Korisnost zipalign dio je Android SDK alata i može se pronaći ovdje:

/path/to/Android/sdk/build-tools/VERSION/zipalign

Zaključak

Sada imate apk datoteku spremnu za distribuciju koja se može prenijeti na Google Play. Ispunite opis, odredite ocjenu svoje aplikacije i slobodno kliknite na “Objavi”.

Broj pregleda objava: 5.618

Android Studio pruža široke mogućnosti kako za razvoj aplikacija tako i za povećanje automatizacije i udobnosti u programiranju.

Ako koristite sustav za izgradnju Gradle za izradu svojih aplikacija, također možete konfigurirati nekoliko opcija za stvaranje potpisa za svoje aplikacije.

Vjerojatno ne želite objaviti svoje ključeve za potpisivanje, lozinke i korisnička imena u javnom (ili čak privatnom) spremištu. Stoga možete definirati ključ, lozinku i korisničko ime kao svojstva u zasebnoj datoteci.

Prije nego počnete potpisivati ​​svoju prijavu, morate stvoriti novo svojstvo u datoteci gradle.properties. Nazovimo ga Ključevi.repo i kao vrijednost odredite put do mape u kojoj će se naknadno nalaziti pohrana ključa i datoteka sa svojstvima (npr. C:/Korisnici/Korisničko ime/.potpisivanje).

Keys.repo=C:/Users/UserName/.signing

Zatim morate stvoriti ovu mapu ili, ako ste naveli postojeću, otvoriti je. U njemu morate stvoriti datoteku YourProjectName.properties, unutar kojeg će put do spremišta ključeva, alias ključa i lozinka biti zapisani kao svojstva u sljedećem obliku.

RELEASE_STORE_FILE=/YourProjectName/KeyStoreName.jks RELEASE_STORE_PASS=****** RELEASE_ALIAS=KeyAlias ​​​​RELEASE_KEY_PASS=******

Kako stvoriti trezor ključeva?

Ako nemate spremište ključeva, možete ga jednostavno izraditi pomoću Android Studija. Da biste to učinili, odaberite stavku izbornika Izgraditi -> Generiraj potpisani APK.

U prozoru koji se pojavi potrebno je kliknuti Stvori novi... Kao rezultat toga, otvorit će se prozor u kojem možete odrediti gdje će se nalaziti pohrana ključeva (za ovu lekciju je bolje odmah odabrati put koji ste naveli u YourProjectName.properties u posjedu RELEASE_STORE_FILE), kao i ključne informacije.

Zatim morate stvoriti mapu VašProjectName i tamo prenesite potrebnu datoteku spremišta ključeva.

Sada možete izravno nastaviti s postupkom potpisivanja. Da biste to učinili, morate otvoriti datoteku u svom projektu izgraditi.gradle(nalazi se u mapi aplikacije). Unutar njega u bloku android trebate dodati sljedeći kod.

SigningConfigs ( debug ( /* ovdje nema promjena */ ) release ( if (project.hasProperty("Keys.repo")) ( def projectPropsFile = file(project.property("Keys.repo") + "/YourProjectName.properties " ) if (projectPropsFile.exists()) ( Properties props = new Properties() props.load(new FileInputStream(projectPropsFile)) storeFile file(file(project.property("Keys.repo") + props["RELEASE_STORE_FILE"] ) ) storePassword props["RELEASE_STORE_PASS"] keyAlias ​​​​props["RELEASE_ALIAS"] keyPassword props["RELEASE_KEY_PASS"] ) ) else ( println "===================== =================================" println " - Molimo konfigurirajte okruženje za kompilaciju izdanja - npr ~/. imenik za potpisivanje" println "======================================= ================== ==========" ) ) )

Koje su različite sheme za dobivanje potpisa?

Postoje dvije sheme za dobivanje APK potpisa: v1 JAR I v2 Cijeli APK.

U prvom slučaju je potpisan JAR-file, što je tradicionalni način potpisivanja. Potpisivanje v1 ne štiti neke dijelove APK-a, kao što su ZIP metapodaci. Verifikator APK-a mora obraditi mnogo nepouzdanih (još nepotvrđenih) podatkovnih struktura, a zatim odbaciti podatke koji nisu potpisani, ostavljajući puno prostora za napad. Dodatno, APK verifikator mora dekomprimirati sve komprimirane unose, što gubi puno vremena i memorije. Za rješavanje ovih problema razvijena je druga shema v2 Full APK.

Shema v2 predstavljena je u Android 7.0 Nougat (API 25) i radi počevši od verzije Android Studio 2.2 I Android Gradle dodatak 2.2. Ova shema omogućuje bržu instalaciju aplikacije i dobru zaštitu od neovlaštenih promjena APK-a. Sadržaj APK-a raspršuje se i potpisuje, a zatim rezultirajući Blok potpisa APK-a umetnut u APK.

Tijekom provjere, shema v2 tretira APK kao blob i provodi provjeru potpisa na cijeloj datoteci. Svaka izmjena APK-a, uključujući izmjene ZIP metapodataka, poništava potpis. Ovaj oblik provjere puno je brži i može otkriti više neovlaštenih izmjena.

Novi format je kompatibilan unazad, tako da se APK-ovi potpisani novom shemom mogu instalirati na starije uređaje (koji će jednostavno ignorirati novi potpis) sve dok su ti APK-ovi također potpisani shemom v1.

Potpisivanje prema zadanim postavkama koristi obje sheme tako da se aplikacije mogu instalirati na bilo kojem uređaju. Međutim, ako postoji takva potreba, možete onemogućiti v1 ili v2 potpis. Da biste to učinili, u gornjem kodu u bloku osloboditi Dovoljno je dodati sljedeće retke.

V1SigningEnabled false

V2SigningEnabled false

Također je važno napomenuti da se morate potpisati shemom v1 prije potpisivanja shemom v2, budući da APK neće proći provjeru pod shemom v2 ako je potpisan dodatnim certifikatima nakon potpisivanja shemom v2.

Nakon dodavanja koda, uključite ga u blok buildTypes iznutra osloboditi. Na primjer:

BuildTypes ( release ( minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release ) )

Sada možete sigurno u stavku izbornika Izgraditi izabrati Build APK, prethodno promijenivši vrstu sklopa iz debug na osloboditi. Kao što vidite, ova metoda je praktična jer je automatska, trebate je samo jednom konfigurirati i vaše pohrane ključeva mogu biti sigurne.

Članak sadrži snimke zaslona iz vremena kada se trgovina aplikacija zvala "Android Market". Već je odrasla generacija mačaka koje nikada nisu čule za ovo ime. Ali opći princip se nije promijenio. Ostavljeno za povijest. Ne mogu se ponovno registrirati za snimanje novih snimaka zaslona.

Budući da smo zabrinuti, vježbat ćemo na mačkama. Uzmimo, na primjer, primjer iz članka i pokušajmo ga objaviti na Google Playu. Ako sve uspije, onda će stvari biti lakše.

Prije nego što nastavite dalje, provjerite imate li spremne vlastite ikone aplikacija i naziv programa. Bit će vrlo čudno vidjeti program u trgovini aplikacija sa standardnom ikonom i nazivom "HelloWorld". Također provjerite sve unose u datoteci manifesta.

Prvi korak. On je najteži

Svaka aplikacija objavljena u trgovini mora imati potpisani certifikat. Certifikat vam omogućuje da vas se identificira kao autora programa. A ako netko pokuša prenijeti program s istim imenom kao i vaš, bit će odbijen zbog sukoba imena. Naziv aplikacije odnosi se na puni naziv paketa.

Kada pokrenete svoje aplikacije na emulatoru ili telefonu, razvojno okruženje automatski je potpisalo program s certifikatom za otklanjanje pogrešaka. Certifikat za otklanjanje pogrešaka nije prikladan za distribuciju putem trgovine i morate potpisati aplikaciju vlastitim jedinstvenim certifikatom. Besplatno je, nije potrebna registracija niti SMS.

Kreirajmo potpisanu APK datoteku, koja je nešto poput izvršne datoteke poput notepad.exe na Windowsima. Ako imate otvoreno razvojno okruženje Android Studio, odaberite s izbornika Graditi | Generiraj potpisani APK....

Pojavit će se dijaloški okvir čarobnjaka u koji trebate unijeti podatke.

U prvom polju trebate navesti put do pohrane ključeva. Ako ste prije morali stvarati programe, uključujući u Eclipseu, tada možete navesti postojeće spremište pomoću gumba Odaberite postojeće.... Ako prvi put stvarate spremište, odaberite gumb Stvori novi.... Pojavit će se novi dijaloški okvir.

U prvom polju potrebno je odabrati mapu pomoću gumba ... i unesite naziv datoteke za pohranu, kojoj će se dodijeliti nastavak jks.

Sada kreirate ključ za aplikaciju. U polju Alias(Nadimak) unesite ključno ime koje je razumljivo vama i mačkama. Nije potrebno stvarati alias za svaku aplikaciju; možete koristiti jedan alias za svoje aplikacije i zasebne aliase za prilagođene aplikacije.

Također morate stvoriti lozinku za ključ i potvrditi je.

Ključ je dizajniran za 25 godina. Polje Valjanost (godine) ostavite ga nepromijenjenim (osim ako nemate dobre razloge za suprotno).

Na kraju ispunite svoje podatke.

Nakon što ispunite polja, vratit ćete se na prvi prozor čarobnjaka.

Kliknite na gumb Sljedeći a u sljedećem prozoru unesite drugu lozinku za pristup bazi lozinki.

Možda nećete moći učiniti ovaj korak. Može se pojaviti ako ste označili opciju "Zapamti lozinku". Ne sjećam se detalja, možete sami zaključiti.

Posljednji korak je da pritisnete gumb Završi.

Ranije je ovo bio posljednji korak. Sada postoje nove zastave V1 (Jar potpis) I V2 (potpuni APK potpis). Provjerite barem prvu opciju V1- ovo odgovara starom načinu. Druga se metoda smatra pouzdanijom u smislu hakiranja i može se koristiti za kasnije API-je, prema vlastitom nahođenju (vidi dolje).

Kao rezultat složenih manipulacija dijaloškim okvirima, imat ćete dugo očekivani APK - svoju ljepotu, koja će vam otvoriti vrata u svijet bogatstva i sreće.

Pritiskom na gumb Pokaži u pretraživaču, pokrenut ćete Explorer na računalu s mapom u kojoj se nalazi potpisana datoteka.

Budite oprezni s ključem koji stvarate. On je taj koji jamči da ste novu verziju programa napisali vi. Stoga, ako izgubite kreirani ključ, morat ćete učitati program pod drugim imenom s novim ključem.

Studio nudi način za automatsko kreiranje potpisane aplikacije. Desni klik na mapu aplikacija i u kontekstnom izborniku odaberite stavku Otvorite Postavke modula. Odaberite odjeljak aplikacija u odjeljku Moduli. Odaberite karticu Potpisivanje. Pritisnite gumb sa znakom plus i ispunite polja.

Idi na karticu Vrste građenja i odaberite sklop osloboditi. Na padajućem popisu Potpisivanje konfiguracije odaberite novostvorenu konfiguraciju. Prema zadanim postavkama ima naziv konfiguracija.

Klik u redu za spremanje rezultata.

Također možete potpisivati ​​aplikacije putem naredbenog retka bez sudjelovanja studija, ako ste perverznjak. Možete pročitati dokumentaciju o ovoj temi.

v2 Cijeli APK

U 2017. Google je malo promijenio proces potpisivanja. Sada postoje dvije sheme za dobivanje APK potpisa: v1 JAR i v2 Full APK.

Potpisivanje v1 (koje postoji od samog početka) ne štiti neke dijelove APK-a, kao što su ZIP metapodaci. APK verifikator mora obraditi mnoge nepouzdane strukture podataka i zatim odbaciti podatke koji nisu potpisani, ostavljajući veliku površinu za napad. Dodatno, APK verifikator mora dekomprimirati sve komprimirane unose, što gubi puno vremena i memorije. Kako bi se riješili problemi, razvijena je nova verzija v2 Full APK-a na koju ćete naići prilikom potpisivanja svoje aplikacije.

Scheme v2 radi na Androidu 7.0 Nougat (API 25). Shema omogućuje bržu instalaciju aplikacije i dobru zaštitu od neovlaštenih promjena APK-a. Sadržaj APK-a raspršuje se i potpisuje, a zatim se rezultirajući blok potpisa APK-a umeće u APK.

Novi format je kompatibilan unazad, tako da se APK-ovi potpisani novom shemom mogu instalirati na starije uređaje (koji će jednostavno ignorirati novi potpis) sve dok su ti APK-ovi također potpisani shemom v1.

U starijim aplikacijama ostavljam potvrdni okvir pored prve verzije. Možda će vas kasnije prisilno prebaciti na drugu verziju. Važno je napomenuti da se morate potpisati shemom v1 prije potpisivanja shemom v2, budući da APK neće proći provjeru pod shemom v2 ako je potpisan dodatnim certifikatima nakon potpisivanja shemom v2.

Strogo govoreći, možete objaviti apk datoteku na svojoj web stranici, a svi vaši posjetitelji je mogu preuzeti i instalirati na svoj telefon. Ali to je nekako nedostojanstveno u našem dobu nanotehnologije. Stoga, prijeđimo na sljedeći korak.

Drugi korak. Moraš Fedja, moraš

Sljedeći korak je vrlo neugodan. Morate dati 25 zimzelenih biljaka strancu. Kako bi vam bilo manje uvredljivo, ova operacija je nazvana kotizacija. Trebat će vam kreditna kartica s navedenim iznosom. Imajte na umu da vam Visa Electron, a još više diskontna kartica lanca trgovina Perekrestok, neće odgovarati. Ako već imate karticu koja vam je potrebna, preskočite ovaj paragraf. Mogu savjetovati drugima da naprave QIWI novčanik i tamo naprave virtualnu karticu. Upravo sam to i napravio, jer mi se nije dalo ići u banku i pisati kojekakve izvode.

Automatsko ažuriranje

Ako ste izradili novu verziju programa, popravljajući razne greške i dodajući nove fotografije mačke, tada trebate povećati broj verzije (atribut) u manifestu za jedan versionCode) i zamijenite naziv verzije za sebe (bit će prikazan na stranici Google Play). U najnovijim verzijama studija ta svojstva više nisu u manifestu, već u datoteci izgraditi.gradle modul vaše aplikacije. Prenesite novu verziju na Google Play i korisnici će automatski primiti ažuriranje.

Pratimo recenzije

Instalirajte aplikaciju Google Play Developer Console na svoj uređaj kako ne biste propustili novu recenziju svog programa. Također možete pogledati statistiku.

Promjena lozinki za pohranu i aliasa ključa

Nisam ga koristio nekoliko godina, pa ne znam je li ova informacija relevantna.

Recimo da ste prodali svoj program s izvornim kodom drugoj tvrtki. Kako bi mogla objavljivati ​​ažuriranja programa, tvrtka mora potpisati aplikaciju istim ključem kojim ste se vi potpisali. U suprotnom, program će se smatrati drugačijim i naziv paketa morat će se promijeniti. Ali tada stari korisnici neće moći primati ažuriranja.

Ali ako sve svoje programe potpišete istim ključem i lozinkom, npr mačka mačka, onda tvrtka može potpisati vaše druge aplikacije istim ključem, stavljajući svoje programe pod isti naziv paketa, a vi nećete nikome ništa dokazati.

Stoga se morate pobrinuti za promjenu ključa za prijenos na novog vlasnika.

Pretpostavimo da naša pohrana ima strukturu:

Naziv spremišta (keystore): old.keystore Lozinka spremišta: cat1 Alias: my_alias Lozinka aliasa: cat2

Napravite kopiju svoje pohrane i pohranite je negdje drugdje. To je trebalo biti učinjeno prilikom prvog stvaranja, jer ako izgubite pohranu, nećete moći vratiti pristup svojim programima prilikom ažuriranja.

Ponovno napravite kopiju svog spremišta i preimenujte ga, na primjer, novo.skladište ključeva. Radit ćemo s njim.

Pokrenite uslužni program alat za ključeve sa naredbom:

Keytool -storepasswd -keystore new.keystore

Od vas će se tražiti da unesete svoju trenutnu lozinku, a zatim unesite novu lozinku i ponovite je. Nešto kao ovo:

Unesite lozinku spremišta ključeva: Nova lozinka spremišta ključeva: Ponovno unesite novu lozinku spremišta ključeva:

Prvi dio zadatka je završen, lozinka za pohranu je promijenjena.

Ako također želite promijeniti lozinku za alias, ponovo pokrenite uslužni program naredbom:

Keytool -keypasswd -keystore new.keystore -alias my_name

Od vas će se tražiti da unesete svoju trenutnu lozinku za trezor (vašu novu lozinku), zatim svoju lozinku za alias. Možete unijeti novu lozinku i ona će zamijeniti staru lozinku.

Unesite lozinku spremišta ključeva: Unesite ključnu lozinku za

Lozinka za nadimak je promijenjena.

Ako vam promjena lozinke nije dovoljna i želite promijeniti ime nadimka (možda ste koristili ime svoje omiljene mačke, zašto bi drugi to trebali znati), onda nastavite s radom.

Pokrenimo naredbu:

Keytool -changealias -keystore new.keystore -alias my_alias -destalias my_new_alias

Od vas će se tražiti da unesete lozinku trezora, zatim lozinku za novi alias (trenutna lozinka), zatim novu lozinku i ponovite je. Ime nadimka će biti promijenjeno.

Dakle, bila su nam potrebna tri koraka da stvorimo novi repozitorij i alias za prijenos strancu. Novi vlasnik bi trebao učiniti isto kako bi bio siguran da nećete koristiti promijenjene datoteke za vlastite potrebe. Međutim, to je njegov problem.

Potpisivanje gotove prijave

Takav slučaj može nastati kada ste izgubili izvorni kod i imate samo APK. Najvjerojatnije je ovo relevantno za pirate koji ponovno potpisuju druge aplikacije (nemojte to činiti s programima drugih ljudi).

Prvo promijenite ekstenziju iz apk u zip. Izbrišite mapu u arhivi META-INF. Vratite ekstenziju. Izbrisali ste stari potpis.

Sada morate potpisati aplikaciju novim ključem. Unesite naredbu.

Jarsigner -keystore keystore-file.jks -storepass keystore_password -keypass alias_password --signedjar signed-apk-file.apk apk-file.apk alias_name

U slučaju uspjeha, dobit ćete poruku da je prijava potpisana. Zatim izvršavamo drugu naredbu.

ANDROID_SDK_PATH/build-tools/LAST_BUILD_TOOLS_VERSION/zipalign -v 4 signed-apk-file.apk aligned-apk-file.apk

Rezultat bi trebala biti APK datoteka potpisana novim ključem. Nikad ga osobno nisam koristio.

Google pohrana ključeva

Google je 2017. dodao novu mogućnost pohranjivanja ključeva u pohranu u oblaku. Glavna je razlika u tome što aplikaciju potpisujete posebnim ključem za prijenos koji Google provjerava i uklanja, zamjenjujući ga originalnim ključem za potpisivanje aplikacije koji ste dali.

Može se koristiti za upravljanje ključevima za potpisivanje aplikacija za nove i objavljene aplikacije, koje će Google pohraniti u vlastitom trezoru ključeva. Da biste se pridružili ovom programu, morate se pretplatiti na njega na svojoj Google Play konzoli. Vrijedi napomenuti da više neće biti moguće odjaviti pretplatu s njega.

Ova je metoda vrlo korisna - ako izgubite pohranu ključa, Google Play App Signing omogućit će vam da poništite ključ kako biste instalirali novi. Nećete morati ponovno objaviti aplikaciju s novim nazivom paketa i ključem.

Daljnje čitanje

Android-keystore-password-recover by MaxCamillo - ako ste izgubili lozinku, pokušajte koristiti ovaj alat. Ja ga osobno nisam koristio, pa vam neću reći.