Hur dekompilera och tema Android APKs
Har du någonsin öppnat en Android-app och inte gillar det färgtema som det använde? Vad händer om du vill byta en vit bakgrund i en app till svart, till exempel? Idag ska jag visa dig hur man dekompilerar en .APK-fil så att du kan redigera filerna inuti, sedan kompilera och installera den på din Android-telefon.
Obs! Vissa appar är svårare att temat än andra. Facebook Messenger till exempel är notoriskt svårt att temat. Jag går igenom dig genom den här guiden med hjälp av Dropbox-appen som ett exempel, eftersom det är bland de enklaste att redigera.
Krav
- anteckningsblock ++
- APKTool + senaste AAPT
- APKMulti Tool Script
- En fotoredigerare som Photoshop / GIMP
- [Valfritt] Dropbox .apk (för att följa den här guiden)
Ladda ner alla nödvändiga verktyg och installera dem på din dator, inklusive test.apk som anges ovan. Dropbox är en av de enklare appsna till temat, så vi använder den för denna handledning.
Du bör också överföra ram-res.apk från telefonen till din dator, den ligger i / system / framework / på ditt interna lagringsutrymme.
Släpp APKTool och AAPT i mappen Other i huvudkatalogen för APK Multi Tool.
Dra test.apk till mappen Place-apk-here-for-modding i APK Multi Tool-katalogen, och du kommer att hälsas med en kommandoterminal.
Tryck på valfri nyckel för att fortsätta, och du får se en terminalmeny med en massa alternativ. Välj alternativ 24.
Du kommer tillbaka till huvudterminalskärmen, men test.app blir ditt projekt. Tryck så 9 för att dekompilera apk, och tryck sedan 12 för att köra en testbyggnad. Det här är en bra övning för att se om något sattes upp fel. Om appen byggs korrekt trycker du på 2 och minimerar det skript som visas.
Sedan testet byggdes ut, låt oss dyka in i redigering av XML-koden för apk. Vänligen följ noggrant med.
Inne i den extraherade .apk-mappen, gå in i resmappen och öppna AndroidManifest.xml med Notepad ++. Tryck nu CTRL + F för att hitta följande sträng:
android: bakgrunds
Använd alternativet Sök alla, och det ska finnas runt 190 strängar som hittades. Så nu måste du gå igenom varje markerad sträng för att se till att du inte saknar någon när vi ändrar bakgrundsfärgen på appen.
Bläddra tills du hittar Camera_upload_grid.xml som innehåller strängen android: background = @ * android: color / white. Kopiera hela strängen och tryck CTRL + H så att dialogrutan Byt ut dyker upp. Klistra in strängen i de övre och nedre raderna, men vi måste ändra det.
Inne i den dekompilerade .apk-mappen, gå till /res/values/colors.xml och öppna den i Notepad ++. Leta efter linjen abs__background_holo_dark, vilket är definitivt en bakgrund. Så kopiera nu den här strängen och gå tillbaka till den första XML-filen som vi öppnat, med rutan Ersätt fortfarande öppen och i den nedre raden klistra in strängen du just kopierade. Så du borde nu ha längst ned i dialogrutan Ersätt:
android: bakgrund = @ färg / abs__background_holo_dark
Klicka nu på Ersätt alla, och det kommer att ändra alla @android: color / white för att använda background_holo_dark istället. Fortsätt fortsätt att bläddra igenom hela .xml, leta efter någon android: bakgrundssträngar som använder ett hex-värde (#fffffff) eller något annat än vad vi just ersatt dem med. För de som du hittar, byt strängarna för att använda den nya (abs__background_holo_dark).
Så vi har ändrat bakgrunden, nu ska vi ändra textfärgen. Så följ samma procedur som vi just gjorde, men den här gången gör en CTRL + F för android: textColor. Du kommer att få runt 166 linjer funna.
Du kommer att se saker som android: textColor = # ffbbbbbb, etc. Så titta in i Colors.xml igen och vi måste ta reda på vilka linjer som ska ersättas för textfärgen.
Du kan se android: textColor = # ffbbbbbb, #ffffffff, # ff717171 och #ffcccccc i skärmdumpen och i sökresultaten i Note ++. Öppna dina Colors.xml igen nu för att hitta vilken linje vi vill använda för textfärgen.
Så gå tillbaka till den första .xml och gör CTRL + H för ersättningsdialog igen. Kopiera nu android: textColor = # ffbbbbbb-strängen till toppen och botten och ändra bottenlinjen till android: textColor = @ color / text.
Nu, återigen, leta igenom alla android: textColor-linjerna och ändra allt som har ett hex-värde i strängen. Slutligen när du kommer till styles.xml-filen, vill du ta bort den inverse från några rader, börja från linje 260 och fortsätta nedåt för några rader. Så ta bort Inverse från de här strängarna.
Nästa ser du några hex-värden runt på raderna 527, 536, 573, 579, 585, 601 och några andra. Byt ut från (#ffffffff) till (@ färg / text).
Tryck CTRL + F för att söka i Anteckningar ++ för cacheColorHint, divider, @ * android: color /, och Inverse .
CacheColorHint är rullningsbakgrunden, så vi måste se till att de använder vår bakgrundsfärg. Uppdelarna är självförklarande, och vi kan ändra deras hex-värden om ni vill. Det enda är att du inte får röra något som pekar på @drawable. Det är vanligtvis bilder som sparas som .png-filer på annat håll i mappen .apk.
När du söker efter invers kommer den att visa referenser till textAppearanceInverse. Du måste dubbelklicka på var och en av dessa och ta bort Inverse från de här strängarna.
Slutligen kan sökningen efter @ * android: color / will bara dubbelkontrollera om vi saknade några ramändringar. Om du hittar något som säger android: popupBackground> @ * android: color / white, måste du ändra det till android: popupBackground> @ color / abs__background_holo_dark. Detta inkluderar linje 911, vilket kan vara förvirrande eftersom det redan pekar på android: color / black.
Nästa öppnar vi res / values / colors.xml och ändrar det så att det ser ut så här:
Nästa res / värden / styles.xml, och rulla ner till rad 328. Ändra det så här:
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här() bör ändras till ()
Gör samma för linje 479, ändra ljuset till svart .
Gå nu till res / values-v11 / styles.xml, och ta bort ljuset där det står Holo.Light .
Därefter öppnar du res / values-v14 / styles nu, som innehåller många strängar. Så på de första 46 raderna vill du ta bort eventuella ljus och inverterade referenser, och sedan ändra föräldrarna på raderna 53 och 54 till @ * android: style / Theme.Holo.
På rad 69, på höger sida förälder, ta bort ljuset från @ * android: style / Theme.Holo.Light.Dialog-föräldern.
Det här är mycket arbete, eller hur? Kanske från och med nu blir du mer uppskattande av app-teman och skinn!
Därefter går vi in i res / färgmappen. Det finns några textfiler där som pekar på svart. Öppna res / colors / action_mode_item_text_color_state_list.xml
Så ser det ut på lager. Nedan är hur du behöver göra det.
Du måste göra dessa samesändringar till följande xml-filer i mappen / res / färger: 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 är klar med dem, öppna / res / drawable och det finns xmls som styr bakgrundsfärgen. Så gå igenom dem och få dem att se ut så här:
Applicera samma ändringar på alla andra drawable.xml-filer.
Öppna nu test.apk och tryck CTRL + vänster klicka för att markera smali och AndroidManifest, högerklicka och Redigera med Notepad ++ igen. Godkänn alla 1999 smali-filer. När det laddas, gör en CTRL + F sök efter -0x100 (svart)
Du kommer att få ca 8 träffar, och den du vill ha är smali / com / dropbox / android / activity / TextEditActivity.smali, på rad 599. Dubbelklicka på den här raden.
Linje 599 innehåller -0x100 i den och linje 601 har SetTextColor. Det finns också en variabel som matchar linje 599. Så för att kortfattat förklara, -0x100, -0x1000000 och till och med 0x0 betyder svart, -0x1000000 är också svart och till och med 0x0. Byt linje 599 genom att ta bort de två 0: erna från 100 och ta bort / high16 så här:
Nästa söker vi efter @ * android: stil, men i smali. Xml kommer att innehålla en extra 0 efter x, men i smali använder vi inte den. Det måste vara 0x103004f istället för 0x0103004f.
Gör en sökning i Anteckningar ++ för @ * android: style / som innehåller 0x103.
Den andra träffen är const v7, 0x1030073. Sök det i din public.xml från framework-res.apk igen. Du ser att det är id för Theme.Holo.Light.Dialog. Du måste ändra den till motsatta tematypens offentliga ID.
Eftersom den här är Theme.Holo.Light.Dialog, vill du göra det Theme.Holo.Dialog. Theme.Holo.Dialog har ett id på 0x103006f. Det kommer att ändra en dialogruta för alert dialog för att använda ett mörkare Holo-baserat tema istället för ett lättare Holo Light-baserat tema.
Nästa som vi behöver ändra är 0x103006e vilket är Theme.Holo.Light. Så fortsätt och gör det motsatt temat stil. I din public.xml från framework-res.apk ser du id för Theme.Holo är 0x0103006b. så låt oss ändra den här raden så att den ser ut så här:
Det finns bara 2 fler av dem att gå igenom. Nästa upp är 0x103000c, vilket är för Theme.Light i public.xml. Tvärtom är Theme.Black, inte ThemeHolo. Så i public.xml ser du id för Theme.Black är 0x01030008 - ändra det så att det ser ut så här:
I andra appar finns det andra saker att redigera och ändra, och med tillräcklig övning kan du omskapa nästan vad som helst. Men för nu är vi färdiga med alla kodbitarna ( äntligen!) .
Så nu kan du öppna manuset från Apk Multi Tool och träffa 12 för att kompilera appen. Om några fel visas kan du försöka se in i felsökningen för vad som gick fel, men det är troligt att du gjorde ett typsnitt eller annat misstag under kodredigeringen.
När byggnaden är klar trycker du på 2 och sedan 13 för att skriva om appen igen.
Lagerappen innehåller en mapp med namnet Mallar - du måste dra det till din unsigned apk med något liknande 7zip. Kopiera unsigned.apk till mappen place-apk-here-for-signing i Apk Multi Tool. Tryck nu 18 i terminalskriptet för att signera programmen i den mappen. När det är klart kommer manuset automatiskt att avsluta sig. Nu kan du ladda .apk på din enhet!
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här