
Descompactando estaticamente malware bancário Android comum.
Kavanoz (pote em turco) é uma ferramenta para desempacotar estaticamente malwares bancários comuns para Android. Você já quis obter o payload de um malware empacotado sem executar um emulador Android? Eu também não :) Mas aqui está uma ferramenta mesmo assim.

pip install kavanoz
Para instalar a partir do código-fonte, clone o repositório e faça uma instalação editável com -e. Isso significa que, se você editar ou adicionar novos plugins ao projeto, eles serão usados sem reinstalar.
git clone https://github.com/eybisi/kavanoz.git
cd kavanoz
pip install -e .
pela linha de comando
kavanoz /tmp/filepath
Você pode usar o parâmetro -vvv para imprimir logs detalhados. (útil para depurar plugins)
como biblioteca python
from kavanoz.core import Kavanoz
from kavanoz import utils
utils.set_log("DEBUG")
k = Kavanoz(apk_path="tests/test_apk/coper.apk")
for plugin_result in k.get_plugin_results():
if plugin_result["status"] == "success":
print("Unpacked")
print(plugin_result)
break
Certifique-se de instalar o kavanoz como editável (com -e). Para adicionar novos plugins, basta criar um novo arquivo na pasta loader. Estenda a classe Unpacker do arquivo unpack_plugin.py. Defina a função start_decrypt com sua implementação.
def start_decrypt(self, apk_object: APK, dexes: "list[DEX]"):
Adicione a seguinte função para fazer uma saída antecipada do plugin.
def lazy_check(self,apk_object:APK, dexes: "list[DEX]"):
Se a extração for bem-sucedida, atribua self.decrypted_payload_path com o caminho do arquivo extraído. Você pode usar funções auxiliares da classe unpacker:
Execute python -m unittest antes de abrir um PR. Para obter os arquivos de teste apk, use o comando git lfs pull.
dex.get_class(smali_annotation_of_class).self.apk_object.get_files().application = self.apk_object.get_attribute_value("application", "name") para obter a classe application definida no arquivo manifest.apkdetect.com pelas amostras exclusivas para trabalhar.