Desobsfuscação do Android - Parte 2
Esta é a segunda metade do artigo anterior Android Deobfuscation - Parte 1.
JavaDeObfuscator (JDO):
Esta ferramenta disponível em -> https://sourceforge.net/projects/jdo/
Descrição:
JDO é um Java DeObfuscator que funciona diretamente em arquivos de classe. O JDO contém uma GUI simples e fácil de usar que torna a desobfusação automática de projetos Java uma operação de um clique.
Etiqueta 1: O JDO precisa de .class arquivos para a desobsfusação que é extraído diretamente de classes_dex2jar.jar arquivo usando a ferramenta Winrar.exe.
Etiqueta 2: . arquivos de classe estão abaixo após a extração todos são viáveis.
Etiqueta 3: O arquivo .class deve ser inserido na ferramenta JDO para DeObfuscação Automatizada e a saída será desobscotada .class arquivo.
Etiqueta 4: O JDO retira corretamente a camada original de processamento de função em aplicativos/APKs especificados como exemplo:
Etiqueta 5: Esta ferramenta revelará a funcionalidade adequada do aplicativo com nome de parâmetro original, nome do método, declarações de looping e campos serão divulgados.
Dex-Oracle:
Um deobfuscator Dalvik baseado em padrão que usa execução limitada para melhorar a análise semântica.
Ferramenta disponível em -> https://github.com/CalebFenton/dex-oracle
Instalação:
Passo 1. Instalar Smali / Baksmali
Já que você é um reverso de Elite Android, tenho certeza que você já tem Smali e Baksmali em seu caminho. Se por alguma razão estranha ainda não estiver instalada, isso deve começar, mas examine-o cuidadosamente antes de funcionar:
mkdir ~/bin || cd ~/bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.1.2.jar && mv smali-*.jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.1.2.jar && mv baksmali-*.jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH=$PATH:$PWD
Passo 2. Instale o Android SDK / ADB
Certifique-se de que a ADB está no seu caminho.
Passo 3. Instale a Gem
gem install dex-oracle
Ou, se você preferir construir a partir da fonte:
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle install
Passo 4. Conecte um dispositivo ou emulador
Você deve ter um emulador em execução ou um dispositivo conectado para o Oracle funcionar.
A Oracle precisa executar métodos em um sistema Android ao vivo. Isso pode estar em um dispositivo ou em um emulador (preferido). Se for um dispositivo, certifique-se de não se importar em executar código potencialmente hostil nele.
Se você quiser usar um emulador e já ter o Android SDK instalado, você pode criar e iniciar imagens emuladoras com:
android avd
Uso:
Por exemplo, apenas desobsfumar métodos em uma classe chamada Lcom/android/system/admin/CCOIoll; dentro de um APK chamado obad.apk:
dex-oracle -i com/android/system/admin/CCOIoll obad.apk
Fluxo de trabalho:
A Oracle leva os aplicativos Android (APK), os executáveis Dalvik (DEX) e os arquivos Smali como entradas. Primeiro, se a entrada for um APK ou DEX, ela será desmontada em arquivos Smali. Em seguida, os arquivos Smali são passados para vários plugins que realizam análises e modificações. Plugins buscam padrões que podem ser transformados em algo mais fácil de ler. Para entender o que o código está fazendo, alguns métodos Dalvik são realmente executados e a saída é coletada. Dessa forma, algumas chamadas de método podem ser substituídas por constantes. Depois disso, todos os arquivos Smali são atualizados. Finalmente, se a entrada fosse um ARQUIVO APK ou UM ARQUIVO DEX, os arquivos Smali modificados continuaram a ser recompilados e um APK ou DEX atualizados são criados.
A execução do método é realizada pelo Motorista. A entrada APK, DEX ou Smali é combinada com o Driver em um único DEX usando dexmerge e é empurrada para um dispositivo ou emulador. Os plugins podem então usar driver que usa reflexão Java para executar métodos a partir da entrada DEX. Os valores de retorno podem ser usados para melhorar a análise semântica além do mero reconhecimento de padrão. Isso é especialmente útil para muitos métodos de descriptografia de strings, que geralmente tomam uma sequência criptografada ou algum conjunto de byte. Uma limitação é que a execução se limita a métodos estáticos.
- Ele tem como alvo originalmente Android.Obad com DexGuard
- Busca por padrões de regex em smali
- Melhora a análise executando alguns métodos
- Substitui código ofuscado por valor de retorno
Código ofuscado:
Código desofuscado:
Androguard – androapkinfo.py:
- § Exibe informações completas sobre o arquivo apk
- § Androapkinfo exibe Arquivos, Permissões, Atividade Principal, Todas as Atividades, Serviços, Informações relacionadas à ofuscação de uma só vez.
Instalação:
Máquina virtual: Geralmente vem com uma ferramenta de construção com Vezir VM e Santako VM.
Download no sistema Ubuntu/Debian: Antes de prosseguirmos para a instalação, vamos verificar os pré-requisitos no sistema.
- Certifique-se de que o Python está instalado em seu sistema, se não, então instale python seguindo este documento.
- Depois de instalar python, instale IPython e pigmeus, usando o seguinte comando no terminal:
sudo easy_install ipython
pigmeus sudo easy_install
Usando Git
- O projeto Androguard está disponível no GitHub, podemos usar o clone git em terminal ou linha de comando para instalar o Androguard.
https://github.com/androguard/androguard.git do clone git
Uso:
androapkinfo.py python -i
OU
./androapkinfo.py -i
Autor: Kailesh Manoharan