Um Dalvik Deobfuscator baseado em padrão, que usa execução limitada para melhorar a análise semântica. Além disso, a inspiração para outro Android Deobfuscator: Simplify.
Antes
Depois
SHA1: A68D5D2DA7550D35F7DBEFC21B7DEEBE3F4005F3
MD5: 2DD2EEEDA08AC8C15BE8A9F2D01ADBE8
Como você é um reversor de Android de elite, tenho certeza de que você já tem Smali e Baksmali no seu caminho. Se, por algum motivo estranho, ainda não estiver instalado, isso deve começar, mas examine -o com cuidado antes de executar:
mkdir ~ /bin || cd ~ /bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali- * .jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.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 Verifique se adb está no seu caminho.
gem install dex-oracleOu, se você preferir construir a partir da fonte:
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle installVocê deve ter um emulador em execução ou um dispositivo conectado para o Oracle funcionar. A versão mínima necessária para Android é 5.0!
O Oracle precisa executar métodos em um sistema Android vivo. Isso pode estar em um dispositivo ou emulador (preferido). Se for um dispositivo, verifique se você não se importa de executar um código potencialmente hostil nele .
Se você deseja usar um emulador e já tiver o Android SDK instalado, você pode criar e iniciar imagens de emulador com:
android avd Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
-h, --help Display this screen
-s ANDROID_SERIAL, Device ID for driver execution, default=""
--specific-device
-t, --timeout N ADB command execution timeout in seconds, default="120"
-i, --include PATTERN Only optimize methods and classes matching the pattern, e.g. Ldune;->melange()V
-e, --exclude PATTERN Exclude these types from optimization; including overrides
--disable-plugins STRING[,STRING]*
Disable plugins, e.g. stringdecryptor,unreflector
--list-plugins List available plugins
-v, --verbose Be verbose
-V, --vverbose Be very verbose
Por exemplo, apenas para os métodos deobfuscate 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.apkO Oracle toma os APPS Android (APK), os executáveis Dalvik (DEX) e os arquivos Smali como entrada. 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 executam análise e modificações. Os plugins pesquisam 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 foi um arquivo APK ou DEX, os arquivos Smali modificados serão recompilados e um APK ou DEX atualizado será criado.
A execução do método é realizada pelo driver. O APK de entrada, DEX ou Smali é combinado com o driver em um único DEX usando Dexmerge e é empurrado para um dispositivo ou emulador. Os plugins podem usar o driver que usa a reflexão Java para executar métodos a partir do dex de entrada. Os valores de retorno podem ser usados para melhorar a análise semântica além do mero reconhecimento de padrões. Isso é especialmente útil para muitos métodos de descriptografia de string, que geralmente pegam uma corda criptografada ou uma matriz de bytes. Uma limitação é que a execução é limitada a métodos estáticos.
Existem três plugins que vêm com o Oracle:
Se você encontrar um novo tipo de ofuscação, pode ser possível desviar com o Oracle. Veja o Smali e descubra se o código pode ser:
Se um desses dois for o caso, você deve tentar escrever seu próprio plug -in. Existem quatro etapas para construir seu próprio plugin:
Os plugins incluídos devem ser um bom guia para entender as etapas nº 3 e 4. O driver foi projetado para ajudar na etapa 2.
Obviamente, você sempre é bem -vindo para compartilhar qualquer ofuscação que encontrar e alguém pode eventualmente chegar a isso.
Primeiro, verifique se dx está no seu caminho. Isso faz parte do Android SDK, mas provavelmente não está no seu caminho, a menos que você seja hardcore.
A pasta do motorista é um projeto Java gerenciado pela Gradle. Importe -o para Eclipse, Intellij, etc. e faça as alterações que você quiser. Para terminar de atualizar o driver, execute ./update_driver . Isso reconstruirá o driver e converterá o frasco de saída em um DEX.
Se houver um problema em executar o código do driver no seu emulador ou dispositivo, não deixe de abrir monitor (parte do Android SDK) e verifique se há pistas lá. Mesmo que o erro não faça sentido para você, isso ajudará se você o postar junto com o problema que criará.
Nem todas as plataformas Android funcionam bem com o Dex-Oacle. Alguns deles apenas se enquadram ao tentar executar arquivos de Dex arbitrários. Se você estiver tendo problemas com o Segfaults ou o driver falhas, tente usar o Android 4.4.2 API Nível 19 com o ARM.
É possível que um plug -in veja um padrão que acha que é ofuscação, mas na verdade é um código que não deve ser executado. Isso parece improvável porque os padrões de ofuscação são realmente incomuns, mas é possível. Se você está encontrando um plug -in específico está causando problemas e tem certeza de que o aplicativo não está protegido por esse obfuscador em particular, ou seja, o aplicativo não é destituído, mas o plug -in DEXGuard está tentando executar coisas, apenas desative -o.