Como descompilar e criar temas para APKs Android



Agora clique em “Substituir tudo”, e isso vai mudar todos os @android: color / white's para usar o background_holo_dark em seu lugar. Agora continue percorrendo todo o .xml, procurando por qualquer android: strings de fundo que estão usando um valor hexadecimal (#fffffff) ou qualquer coisa diferente do que acabamos de substituir. Para os que encontrar, altere as strings para usar o novo (abs__background_holo_dark).

Então, mudamos o plano de fundo, agora vamos mudar a cor do texto. Então siga o mesmo procedimento que acabamos de fazer, mas desta vez faça um CTRL + F para “android: textColor”. Você terá cerca de 166 linhas encontradas.



Você verá coisas como “android: textColor =” # ffbbbbbb ”, etc. Portanto, olhe dentro do Colors.xml novamente e precisamos descobrir quais linhas substituir pela cor do texto.



Você pode ver o android: textColor = ”# ffbbbbbb”, “#ffffffff”, “# ff717171” e “#ffcccccc” na captura de tela e nos resultados da pesquisa no Note ++. Abra seu Colors.xml novamente agora para encontrar qual linha queremos usar para a cor do texto.



Portanto, volte ao primeiro .xml e pressione CTRL + H para a caixa de diálogo Substituir novamente. Agora copie e cole a string “android: textColor =” # ffbbbbbb ”nas partes superior e inferior e altere a linha inferior para“ android: textColor = ”@ color / text”.

Agora, mais uma vez, pesquise todas as linhas android: textColor e altere qualquer coisa que tenha um valor hexadecimal na string. Finalmente, quando você chegar ao arquivo styles.xml, deseja remover o inverso de algumas linhas, começando na linha 260 e continuando para baixo por algumas linhas. Portanto, exclua o “Inverse” dessas cordas.

Em seguida, você verá alguns valores hexadecimais nas linhas 527, 536, 573, 579, 585, 601 e alguns outros. Substitua de (#ffffffff) por (@ color / text).



Pressione CTRL + F para pesquisar no Notepad ++ por cacheColorHint , divisor , @ * android: color / , e Inverso .

O cacheColorHint é o fundo de rolagem, então precisamos ter certeza de que eles estão usando nossa cor de fundo. Os divisores são autoexplicativos e podemos alterar seus valores hexadecimais se desejar. A única coisa é que você não deve tocar em nada que aponte para @drawable. Essas são normalmente imagens armazenadas como arquivos .png em outro lugar na pasta .apk.

Quando você pesquisa por “ inverso' , ele exibirá referências a textAppearanceInverse. Você precisa clicar duas vezes em cada um deles e excluir o Inverse dessas strings.

Finalmente, a busca por @ * android: color / irá apenas verificar se perdemos alguma edição do framework. Se você encontrar qualquer coisa que diga “android: popupBackground”> @ * android: color / white ”, será necessário alterá-lo para“ android: popupBackground ”> @ color / abs__background_holo_dark”. Isso inclui a linha 911, o que pode ser confuso porque já aponta para android: color / black.

Em seguida, vamos abrir res / values ​​/ colors.xml e alterá-lo para ficar assim:

Em seguida res / values ​​/ styles.xml, e role para baixo até a linha 328. Altere assim:

() deve ser alterado para ()

Faça o mesmo para a linha 479, alterando o “ leve' para ' Preto' .

Agora vá para res / values-v11 / styles.xml e remova o “ leve' onde diz ' Holo.Light ” .

Em seguida, você abrirá res / values-v14 / styles agora, que contém muitas strings. Portanto, nas primeiras 46 linhas, você deseja remover qualquer “ Leve' e “ Inverso' referências e, em seguida, altere os pais nas linhas 53 e 54 para “@ * android: style / Theme.Holo“.

Na linha 69, no pai do lado direito, remova a luz do pai @ * android: style / Theme.Holo.Light.Dialog.

Isso dá muito trabalho, certo? Talvez de agora em diante você aprecie mais os temas e skins do aplicativo!

Em seguida, vamos para o res / cor pasta. Existem alguns arquivos de texto que estão apontando para preto. Abra res / colors / action_mode_item_text_color_state_list.xml

É assim que fica no estoque. Abaixo está como você precisa fazer isso.

Você precisa fazer essas mesmas alterações nos seguintes arquivos xml dentro da pasta / res / colors: 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_text_textom.xml, ss. xml, ss_bottom_bottom_text_color_light.xml, tab_text_foreground.xml.

Quando terminar, abra / res / drawable e há xmls que controlam a cor de fundo. Então, analise-os e faça-os ficar assim:

Aplique as mesmas alterações a todos os outros arquivos drawable.xml.

Agora abra o test.apk e pressione CTRL + clique esquerdo para destacar smali e AndroidManifest, então clique com o botão direito e “Editar com Notepad ++” novamente. Concordar com todos os arquivos smali de 1999. Ao carregar, faça uma pesquisa CTRL + F para -0x100 (preto)

Você obterá cerca de 8 resultados, e o que você deseja é smali / com / dropbox / android / activity / TextEditActivity.smali, na linha 599. Clique duas vezes nessa linha.

A linha 599 contém -0x100 e a linha 601 tem “SetTextColor”. Há também uma variável que corresponde à linha 599. Então, para explicar brevemente, -0x100, -0x1000000 e até 0x0 significam preto, -0x1000000 também é preto e até 0x0. Mude a linha 599 removendo os dois 0s de 100 e removendo / high16 assim:

Em seguida, pesquisaremos @ * android: style, mas em smali. O xml conterá um '0' extra após o x, mas no smali não o usamos. Precisa ser “0x103004f” em vez de “0x0103004f.

Faça uma pesquisa no Notepad ++ por @ * android: style / que contém 0x103.

O segundo resultado é “const v7, 0x1030073“. Pesquise isso em seu public.xml de framework-res.apk novamente. Você verá que é o id para “Theme.Holo.Light.Dialog”. Você precisará alterá-lo para o id público do estilo do tema oposto.

Como este é Theme.Holo.Light.Dialog, você deseja torná-lo Theme.Holo.Dialog. Theme.Holo.Dialog tem um id de “0x103006f”. Isso mudará uma caixa de diálogo pop-up de alerta para usar um tema baseado em Holo mais escuro em vez de um tema baseado em Holo.Light mais claro.

O próximo que precisamos alterar é “0x103006e”, que é Theme.Holo.Light. Então vá em frente e faça o estilo de tema oposto. Em seu public.xml de framework-res.apk, você verá que o id para Theme.Holo é 0x0103006b. então vamos mudar essa linha para ficar assim:

Há apenas mais 2 para examinar. O próximo é “0x103000c”, que é para Theme.Light no public.xml. O oposto disso é Theme.Black, não ThemeHolo. Portanto, no public.xml, você verá o id de Theme.Black é “0x01030008” - altere para ficar assim:

Em outros aplicativos, haveria outras coisas para editar e alterar e, com prática suficiente, você será capaz de reformular o tema de quase tudo. Mas, por agora, terminamos com todos os bits de código ( finalmente!) .

Portanto, agora você pode abrir o script da Apk Multi Tool e clicar em 12 para compilar o aplicativo. Se algum erro for exibido, você pode tentar verificar o que deu errado dentro do log de erros, mas é mais provável que você tenha cometido um erro de digitação ou outro erro durante a edição do código.

Quando a compilação estiver concluída, pressione 2 e 13 para assinar novamente o aplicativo.

O aplicativo de estoque contém uma pasta chamada “Modelos” - você precisa arrastar isso para o seu apk não assinado usando algo como 7zip. Copie o unsigned.apk para a pasta “coloque-apk-aqui-para-assinatura” dentro do Apk Multi Tool. Agora pressione 18 no script do terminal para assinar em lote os aplicativos nessa pasta. Quando terminar, o script sairá automaticamente. Agora você pode carregar o .apk no seu dispositivo!

6 minutos lidos