Hvordan dekompilere og tema Android APKs
Har du noen gang åpnet en Android-app og ikke likte fargemetoden den brukte? Hva om du ville endre en hvit bakgrunn i en app til svart, for eksempel? I dag skal jeg vise deg hvordan du dekompilerer en .APK-fil slik at du kan redigere filene inni, og deretter kompompilere og installere den på Android-telefonen din.
Merk: Noen apps er vanskeligere å tema enn andre. For eksempel er Facebook Messenger notorisk vanskelig å tema. Jeg vil gå deg gjennom denne veiledningen ved hjelp av Dropbox-appen som et eksempel, siden det er blant de enkleste å redigere.
Krav
- Notepad ++
- APKTool + siste AAPT
- APKMulti Tool Script
- En fotoredigerer som Photoshop / GIMP
- [Valgfritt] Dropbox .apk (for å følge denne veiledningen)
Last ned alle nødvendige verktøy og installer dem på PCen din, inkludert test.apk gitt ovenfor. Dropbox er en av de enklere apps til tema, så vi bruker den til denne opplæringen.
Du bør også overføre ramme-res.apk fra telefonen til PCen din, den er plassert i / system / rammeverk / på ditt interne lagringsområde.
Slett APKTool og AAPT i mappen Andre i hovedmappen til APK Multi Tool.
Dra test.apk til mappen Place-apk-here-for-modding inne i APK Multi Tool-katalogen, og du vil bli møtt med en kommandoterminal.
Trykk på hvilken som helst tast for å fortsette, og du vil se en terminalmeny med en rekke alternativer. Velg alternativ 24.
Du går tilbake til hovedterminalskjermbildet, men test.app blir ditt prosjekt. Så trykk 9 for å dekompilere apk, og trykk deretter 12 for å kjøre en testbygging. Dette er en god praksis for å se om noe ble satt opp feil. Hvis appen bygger riktig, trykker du på 2 og minimerer skriptet som vises.
Siden testen er sjekket ut, la oss dykke inn i redigering av XML-koden til apk. Vennligst følg med omhyggelig.
Inne i den ekstraherte .apk-mappen, gå inn i resmappen og åpne AndroidManifest.xml med Notepad ++. Trykk nå CTRL + F for å finne følgende streng:
android: bakgrunn
Bruk Finn alt-alternativet, og det skal finnes rundt 190 strenger. Så nå må du gå gjennom hver uthevet streng, for å være sikker på at du ikke går glipp av noe når vi endrer bakgrunnsfargen på appen.
Bla gjennom til du finner Camera_upload_grid.xml som inneholder strengen android: background = @ * android: color / white. Kopier hele linjen og trykk CTRL + H, slik at dialogboksen Erstatt vises. Lim inn strengen i topp- og bunnlinjen, men vi må endre den.
Inne i dekompilert .apk-mappen, gå inn i /res/values/colors.xml og åpne den i Notepad ++. Se etter linjen abs__background_holo_dark, som er mest definitivt en bakgrunn. Så kopier nå strengen, og gå tilbake til den første XML-filen vi hadde åpnet, med Erstatt-boksen fortsatt åpen, og i bunden lim inn strengen du nettopp kopierte. Så du burde nå ha bunnlinjen i Erstatt dialog:
android: bakgrunns = @ farge / abs__background_holo_dark
Klikk nå Erstatt alle, og det kommer til å endre alle @android: farge / hvitt for å bruke background_holo_dark i stedet. Fortsett å bla gjennom hele .xml, søker etter noen android: bakgrunnsstrenger som bruker en hex-verdi (#fffffff) eller noe annet enn det vi nettopp har erstattet dem med. For de du finner, endre strengene for å bruke den nye (abs__background_holo_dark).
Så vi har endret bakgrunnen, nå skal vi endre tekstfargen. Så følg den samme prosedyren vi nettopp gjorde, men denne gangen gjør du en CTRL + F for android: textColor. Du får omtrent 166 linjer funnet.
Du ser ting som android: textColor = # ffbbbbbb, etc. Så se i Colors.xml igjen, og vi må finne ut hvilke linjer som skal erstattes for tekstfargen.
Du kan se android: textColor = # ffbbbbbb, #ffffffff, # ff717171 og #ffcccccc i skjermbildet og i søkeresultatene i Note ++. Åpne dine Colors.xml igjen nå for å finne hvilken linje vi vil bruke til tekstfargen.
Så gå tilbake til den første .xml og gjør CTRL + H for Erstatt dialog igjen. Kopier nå android: textColor = # ffbbbbbb-strengen inn i toppen og bunnen, og endre bunnlinjen til android: textColor = @ color / text.
Nå, igjen, søk gjennom alle android: textColor linjene og endre alt som har en hex-verdi i strengen. Til slutt når du kommer til style.xml-filen, vil du fjerne invers fra noen linjer, starter ved linje 260 og fortsetter nedover for noen linjer. Så slett Inverse fra de strengene.
Deretter ser du noen hex-verdier rundt på linjene 527, 536, 573, 579, 585, 601, og noen andre. Erstatt fra (#ffffffff) til (@ farge / tekst).
Trykk CTRL + F for å søke i Notepad ++ for cacheColorHint, divider, @ * android: color /, og Inverse .
CacheColorHint er rullingsbakgrunnen, så vi må sørge for at de bruker bakgrunnsfargen vår. Fordelene er selvforklarende, og vi kan endre deres hex-verdier hvis du vil. Det eneste er at du ikke må røre noe som peker på @drawable. Disse er vanligvis bilder som er lagret som .png-filer andre steder i .apk-mappen.
Når du søker etter invers, vil det vise referanser til textAppearanceInverse. Du må dobbeltklikke på hver av disse og slette Inverse fra de strengene.
Til slutt, søket etter @ * android: color / vil bare dobbeltsjekke om vi savnet noen rammeendringer. Hvis du finner noe som sier android: popupBackground> @ * android: color / white, må du endre den til android: popupBackground> @ color / abs__background_holo_dark. Dette inkluderer linje 911, som kan være forvirrende fordi det allerede peker på android: farge / svart.
Neste vil vi åpne res / values / colors.xml og endre det slik at det ser ut som dette:
Neste res / verdier / styles.xml, og rul ned til linje 328. Endre det slik:
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her() bør endres til ()
Gjør det samme for linje 479, forandre lyset til svart .
Gå nå til res / values-v11 / styles.xml, og fjern lyset der det står Holo.Light .
Deretter åpner du res / verdier-v14 / stiler nå, som inneholder mange strenger. Så på de første 46 linjene, vil du fjerne eventuelle lys og omvendte referanser, og deretter endre foreldrene på linjene 53 og 54 til @ * android: style / Theme.Holo.
På linje 69, på høyre sideforelder, fjerner du lyset fra @ * android: style / Theme.Holo.Light.Dialog foreldre.
Dette er mye arbeid, ikke sant? Kanskje fra nå av vil du være mer takknemlig for app-temaer og skinn!
Deretter går vi inn i res / fargemappen. Det er noen tekstfiler der inne som peker til svart. Åpne res / farger / action_mode_item_text_color_state_list.xml
Slik ser det ut på lager. Nedenfor er hvordan du trenger å gjøre det.
Du må gjøre disse samene endringene til følgende xml-filer i / res / farger-mappen: Bottom_button.xml, Button_update.xml, Filelist_text_name.xml, Filelist_text_small.xml, Link_button.xml, Local_filelist_text_name.xml, Local_filelist_text_small.xml, ss_bottom_bottom_text_color_dark. xml, ss_bottom_bottom_text_color_light.xml, tab_text_foreground.xml.
Når du er ferdig med dem, åpne / res / drawable og det er xmls som kontrollerer bakgrunnsfarge. Så gå gjennom dem og få dem til å se slik ut:
Påfør de samme endringene på alle de andre drawable.xml-filene.
Nå åpner test.apk og trykker CTRL + venstre klikk for å markere smali og AndroidManifest, deretter høyreklikk og Rediger med Notisblokk ++ igjen. Enig med alle 1999 smali-filer. Når det laster, gjør du en CTRL + F søk etter -0x100 (svart)
Du får omtrent 8 treff, og den du vil ha, er smali / com / dropbox / android / activity / TextEditActivity.smali, på linje 599. Dobbeltklikk på linjen.
Linje 599 inneholder -0x100 i den, og linje 601 har SetTextColor. Det er også en variabel som samsvarer med linje 599. Så for kort å forklare, -0x100, -0x1000000 og til og med 0x0 mener svart, -0x1000000 er også svart og til og med 0x0. Endre linje 599 ved å fjerne de to 0-tallene fra 100 og fjerne / high16 slik:
Deretter skal vi søke etter @ * android: stil, men i smali. Xml vil inneholde en ekstra 0 etter x, men i smali bruker vi ikke den. Det må være 0x103004f i stedet for 0x0103004f.
Gjør et søk i Notepad ++ for @ * android: style / som inneholder 0x103.
Den andre treff er const v7, 0x1030073. Søk det i din public.xml fra framework-res.apk igjen. Du ser at det er ID for Theme.Holo.Light.Dialog. Du må endre den til motsatt tema stilens offentlige id.
Siden denne er Theme.Holo.Light.Dialog, vil du gjøre det Theme.Holo.Dialog. Theme.Holo.Dialog har et id på 0x103006f. Det vil forandre en dialogboksen oppvarslingsboks for å bruke et mørkere Holo-basert tema i stedet for et lettere Holo.Light-basert tema.
Den neste vi trenger å endre er 0x103006e som er Theme.Holo.Light. Så gå videre og gjør det motsatt tema stil. I din public.xml fra ramme-res.apk, vil du se id for Theme.Holo er 0x0103006b. så la oss endre den linjen for å se slik ut:
Det er bare 2 flere av disse å gå gjennom. Den neste opp er 0x103000c, som er for Theme.Light i public.xml. Det motsatte av det er Theme.Black, ikke ThemeHolo. Så i public.xml ser du id for tema. Svart er 0x01030008 - endre det slik at det ser ut som dette:
I andre apper ville det være andre ting å redigere og endre, og med nok øvelse kan du omdefinere nesten alt. Men for nå er vi ferdige med alle kodebitene (til slutt!) .
Så nå kan du åpne skriptet fra Apk Multi Tool, og treffe 12 for å kompilere appen. Hvis det vises feil, kan du prøve å se inn i feilloggen for det som gikk galt, men det var mest sannsynlig at du gjorde en skrivefeil eller annen feil under kodredigering.
Når bygningen er fullført, trykk 2 og deretter 13 for å signere appen på nytt.
Lagerappen inneholder en mappe som heter Maler - du må dra den inn i din usignerte apk ved hjelp av noe som 7zip. Kopier unsigned.apk til stedet-apk-here-for-signing-mappen inne i Apk Multi Tool. Trykk nå 18 i terminalskriptet for å signere programmene i den mappen. Når det er gjort, avslutter manuset automatisk. Du kan nå laste .apk-enheten til enheten din!
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her