####NOTICE: a cadeia de caracteres é muito importante. Pode ser alterado juntamente com a evolução dos serviços de endurecimento. Se estiver incorreto, o processo de desempacotamento não pode ser ativado. O DexHunter alavanca “fwrite” e outras funções libc para manipular arquivos. Mas estas funções são ligadas por serviços de endurecimento resultando no acidente do processo. Como resultado, você não pode utilizar a imagem fornecida para desempacotar os últimos serviços de hardedning. É melhor substituir estas funções pelas chamadas directas do sistema para evitar o estoiro.,
DexHunter tem como objetivo descompactar o arquivo DEX endurecido automaticamente.
DexHunter é baseado no código fonte do tempo de execução Android. É composto por arte modificada e tempo de execução DVM. Você pode usar o tempo de execução modificado para substituir o conteúdo original em códigos fonte Android (Android 4.4.3). A modificação está principalmente em “art/runtime/class_linker.cc” (ART) e “dalvik/vm/native / dalvik_system_DexFile.cpp ” (DVM).
# # Utilização:
Se quiser desfazer uma aplicação, terá de carregar o ficheiro “dexname” para “/data/” no telemóvel antes de iniciar a aplicação., A primeira linha em “dexname “é a cadeia de caracteres (referindo-se a “slide”.pptx”). A segunda linha é a localização dos dados da aplicação-alvo (por exemplo, ” /data/data / com.teste.teste/”). Seu fim de linha deve ser no estilo Unix / Linux. Você pode observar o log usando o “logcat” para determinar se o procedimento de desempacotamento está terminado. Uma vez feito, o “todo gerado”.o arquivo dex” é o resultado desejado que está localizado no diretório de dados do aplicativo.
##dicas:
-
DexHunter simplesmente reutiliza o conteúdo antes da seção “class_def” em vez de analisá-los para a eficiência., Se houver alguns problemas, você pode analisá-los e remontá-los novamente ou alterá-los estaticamente.
-
vale a pena notar que alguns campos” annotation_off” ou “debug_info_off” podem ser inválidos no resultado. Estes ficheiros não têm nada a ver com a execução só para impedir a descompilação. Não abordamos esta situação especificamente para já. Pode programar alguns programas para definir os ficheiros inválidos com 0x00000000.,
-
Como é conhecido, alguns serviços de endurecimento pode proteger vários métodos no arquivo dex, restaurando as instruções pouco antes de ser executado e limpando-os logo após terminar. Então você também precisa modificar a função” DoInvoke “(ART) ou” dvmmmterp_invokemethod ” (DVM) para extrair a instrução protegida durante a execução.
4)a cadeia de caracteres pode ser alterada juntamente com a evolução dos serviços de endurecimento.
5)Se a” fwrite ” e outras funções libc falham, talvez estas funções sejam ligadas por sevices endurecedores., Como resultado, você não pode descartar a memória através deles. Você pode contornar esta limitação, chamando as chamadas do sistema relevantes diretamente.
DexHunter tem sua própria limitação. À medida que os Serviços de endurecimento se desenvolvem, o DexHunter pode não ser eficaz no futuro. Se você estiver interessado, você pode alterar o DexHunter para manter o ritmo com os Serviços de endurecimento continuamente.
##Descrição do ficheiro:
“demo.mp4” é o vídeo de demonstração de descompactar uma aplicação endurecida por Ali.ensaio
“.apk ” é a amostra usada no vídeo.
“dexname” é o ficheiro de configuração usado no vídeo.,
“art” directory é o tempo de execução modificado para o ART.
“dalvik” directory is the modified runtime for DVM.
os ficheiros”imagem” 7z contêm os ficheiros de imagem do sistema utilizados no vídeo.se tiver alguma dúvida, por favor contacte-me através de E-mails para: [email protected].
Se você usar este código, por favor cite o seguinte artigo. Obrigado!Yueqian Zhang, Xiapu Luo, e Haoyang Yin, DexHunter: Toward Extracting Hidden Code from Packed Android Applications, Proceedings of the 20th European Symposium on Research in Computer Security (ESORICS), Vienna, Austria, September 2015.