O Xposed é uma estrutura que permite aos desenvolvedores escrever módulos personalizados para conectar-se a aplicativos Android e assim modificar seu fluxo no tempo de execução. Foi lançado pela rovo89 em 2012. Isso funciona colocando o binário do app_process no diretório / system / bin / , substituindo o binário original do app_process . App_process é o binário responsável por iniciar o processo do zigoto. Basicamente, quando um telefone Android é iniciado, init runs / system / bin / app_process e dá o processo resultante o nome Zygote. Podemos conectar qualquer processo que seja bifurcado no processo Zygote usando o framework Xposed.
Para demonstrar os recursos do framework Xposed, usando um aplicativo vulnerável personalizado.
O nome do pacote do aplicativo vulnerável é com.androidpentesting.hackingandroidvulnapp1 .
O código na seguinte captura de tela mostra como o aplicativo vulnerável funciona:
Este código possui um método, setOutput , chamado quando o botão é clicado. Quando setOutput é chamado, o valor de i é passado para ele como um argumento. Se você notar, o valor de i é inicializado para 0 . Dentro da função setOutput , há uma verificação para ver se o valor de i é igual a 1 . Se for, este aplicativo exibirá o texto Rachado . Mas, uma vez que o valor inicializado é 0 , este aplicativo sempre exibe o texto. Você não pode quebrar .
A execução do aplicativo em um emulador parece assim:
Agora, nosso objetivo é escrever um módulo Xposed para modificar a funcionalidade deste aplicativo em tempo de execução e assim imprimir o texto Rachado .
Primeiro, baixe e instale o arquivo Xposed APK no seu emulador. Xposed pode ser baixado do seguinte link:
http://dl-xda.xposed.info/modules/de.robv.android.xposed.installer_v32_de4f0d.apk
Instale este arquivo APK baixado usando o seguinte comando:
adb install [file name].apk
Depois de instalar este aplicativo, inicie-o e você deve ver a seguinte tela:
Nesta fase, certifique-se de ter tudo configurado antes de prosseguir. Depois de concluir a configuração, navegue até a guia Módulos , onde podemos ver todos os módulos Xposed instalados. A figura a seguir mostra que atualmente não temos nenhum módulo instalado:
Agora vamos criar um novo módulo para alcançar o objetivo de imprimir o texto quebrado no aplicativo de destino mostrado anteriormente. Usamos o Android Studio para desenvolver este módulo personalizado.
Aqui está o procedimento passo-a-passo para simplificar o processo:
1. O primeiro passo é criar um novo projeto no Android Studio, escolhendo a opção Adicionar Sem Actvidade , conforme mostrado na próxima captura de tela. Eu o nomeei XposedModule .
2. O próximo passo é adicionar a biblioteca XposedBridgeAPI para que possamos usar métodos específicos Xposed dentro do módulo. Faça o download da biblioteca a partir do seguinte link:
http://forum.xda-developers.com/attachment.php?attachmentid=2748878&d=1400342298
3. Crie uma pasta chamada fornecida no diretório do aplicativo e coloque esta biblioteca dentro do diretório fornecido .
4. Agora, crie uma pasta chamada de ativos dentro do diretório app / src / main / , e crie um novo arquivo chamado xposed_init . Vamos adicionar conteúdo a este arquivo em uma etapa posterior. Depois de completar as 3 primeiras etapas, nossa estrutura de diretório do projeto deve parecer como isso:
5. Agora, abra o arquivo build.gradle na pasta do aplicativo e adicione a seguinte linha na seção de dependências :
"provided files('provided/[file name of the Xposed
library.jar]')"
No meu caso, parece assim:
6. Crie uma nova classe e nomeie-a XposedClass , como mostrado aqui:
7. Depois de concluir a criação de uma nova classe, a estrutura do projeto deve aparecer como mostrado na seguinte captura de tela:
8. Agora, abra o arquivo xposed_init que criamos anteriormente e coloque o seguinte conteúdo nela.
com.androidpentesting.xposedmodule.XposedClass
Isso parece a seguinte captura de tela:
9. Agora, vamos fornecer algumas informações sobre o módulo adicionando o seguinte conteúdo ao AndroidManifest.xml: :
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="xposed module to bypass the validation" />
<meta-data
android:name="xposedminversion"
android:value="54" />
10. Certifique-se de adicionar este conteúdo à seção do aplicativo, como mostrado aqui:
11. Finalmente, escreva o código real dentro do XposedClass para adicionar um gancho.
12. Aqui está o código que realmente ignora a validação que está sendo feita no aplicativo de destino:
Aqui está o que fizemos no código anterior:
- Em primeiro lugar, nossa aula está implementando IXposedHookLoadPackage
- Nós escrevemos a implementação do método para o método >handleLoadPackage isso é obrigatório quando implementamos IXposedHookLoadPackage
- Configuramos os valores de string para classToHook functionToHook
- Uma condição if é escrita para ver se o nome do pacote é igual ao nome do pacote de destino
- Se o nome do pacote corresponder, execute o código personalizado fornecido dentro de beforeHookedMethod
- Dentro do método beforeHookedMethod, estamos definindo o valor de i para 1 e portanto, quando este botão é clicado, o valor de,i será considerado como1, e o texto Cracked será exibido como uma mensagem de brinde