Se você já analisou os aplicativos Android, conhece a capacidade de analisar seu alvo no nível mais avançado. A análise dinâmica do programa fornecerá uma boa visão geral das atividades de seus aplicativos e do comportamento geral. No entanto, às vezes você deseja apenas analisar seu aplicativo sem executá -lo. Você deseja dar uma olhada nos seus componentes, analisar como eles interagem e como os dados são contaminados de um ponto para outro.
Este foi o principal fator que impulsionou o desenvolvimento de Smalisca . De fato, existem algumas boas razões para uma análise de código estático antes da dinâmica . Antes de interagir com o aplicativo, gosto de saber como o aplicativo foi construído, se houver alguma API e gerar todo tipo de gráfico de fluxo de chamadas . Na verdade, os gráficos têm sido muito importantes para mim, pois visualizam as coisas. Em vez de pular de arquivo para arquivo, de classe para classe, apenas olho para os gráficos.
Embora a construção de gráficos tenha sido um motivo importante para eu codificar essa ferramenta, o Smalisca tem outros recursos interessantes sobre o qual você deve ler.
No momento, existem algumas algumas grandes funcionalidades como:
análise
Você pode analisar um diretório inteiro de arquivos smali e extrair :
Você pode exportar os resultados como JSON ou SQLITE .
Tenha um saque na página Parsing para obter mais informações.
analisando
Depois de exportar os resultados, você obterá um prompt interativo para examinar mais de perto seus dados analisados. Você pode procurar classes, propriedades, métodos e até chamadas de método. Você pode aplicar vários filtros aos seus critérios de pesquisa como:
smalisca> sc -c class_name -p test -r 10 -x caminho -s class_type
Este comando pesquisará 10 (-r 10) que contêm o teste de padrões (-P) em seu nome de classe (-C). Posteriormente, o comando excluirá o caminho da coluna (-x Path) dos resultados e os classificará pelo tipo de classe (-s).
Vamos dar uma olhada em outro exemplo:
smalisca> scl -fc com/android -fm init -r 10
Isso procurará todas as chamadas de método cujo nome de classe de chamada contém o padrão com/android (-fc). Além disso, podemos procurar chamadas originárias de métodos cujo nome contém o padrão init (-FM).
É claro que você pode ler seus comandos de um arquivo e analisar seus resultados em um lote - como:
$ cat cmd.txt SC -C Class_name -p Com/Gmail/Xlibs -r 10 -x Caminho desistir $ ./smalisca.py analiser -i resultados.sqlite -f sqlite -c cmd.txt ...
Tenha um saque na página de análise para obter mais informações.
API da web
O SMALISCA fornece um serviço Web REST para interagir facilmente com os resultados apenas usando um cliente da Web. Dessa forma, você pode acessar os dados em seu próprio aplicativo da web (sofisticado) e ter uma separação limpa entre o back -end e o front -end.
Leia mais sobre a API REST disponível na página da API da Web.
visualização
Eu acho que essa é a característica mais valiosa de Smalisca . A capacidade de visualizar seus resultados de maneira estruturada torna sua vida mais confortável. Dependendo do que você está interessado, esta ferramenta possui vários recursos de desenho de gráficos que eu gostaria de promover.
No começo, você pode desenhar seus pacotes, incluindo as aulas, propriedades e métodos:
smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot :: Info escreveu resultados para /tmp/classes.dot Smalisca>
Isso primeiro pesquisará as classes cujo nome de classe contém teste e depois exportará os resultados no idioma GraphViz Dot . Você pode gerar manualmente um gráfico usando DOT , neuro , Circo etc. ou faz isso usando o prompt interativo:
smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf --prog pato :: Info escreveu resultados para /tmp/classes.pdf Smalisca>
Tenha um saque na página de desenho para obter mais informações.
Resultados de saída como tabela.
Relações básicas entre classes e módulos.
Dê uma olhada na página de capturas de tela.
Consulte a página de instalação. Requisitos:
Depois de instalar a ferramenta, você pode primeiro pegar um aplicativo Android (APK) para brincar. Use Apktool ou minha própria ferramenta ADUS para despejar o conteúdo do APKS. Por uma questão de simplicidade, usarei o FakeBanker que analisei em uma postagem de blog anterior.
Mas primeiro vamos dar uma olhada nas principais opções das ferramentas:
$ SMALISCA -Help
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/', __ /' __` __` /'__ ` / /', __ /'___ /' __`
/ __, `/ / / / l .
/ ____/ _ _ _ __/. _ / ____ \ _ / ____/ ____ __/.
/___//_//_//_//__//_//____//_//___//____//__//_//
----------------------------------------------------------------------------------
:: Autor: Victor <Cyneox> Dorneanu
:: DEC: Ferramenta de análise de código estático para arquivos Smali
:: URL: http://nullsecurity.net, http: // {blog, www} .Dornea.nu
:: versão: 0.2
----------------------------------------------------------------------------------
Uso: Smalisca (subcomandos ...) [Opções ...] {Argumentos ...}
[-] Ferramenta de análise de código estático (SCA) para arquivos Baskmali (Smali).
comandos:
analisador
[-] Analise os resultados usando um prompt interativo ou na linha de comando.
analisador
[-] Analisar arquivos e extrair dados com base na sintaxe smali.
web
[-] Analise os resultados usando a API da Web.
Argumentos opcionais:
-h, --help Mostra esta mensagem de ajuda e saída
-Debug Toggle Debug Output
--quiet suprime toda a saída
-Log-Level {Debug, Info, Warn, Erro, Crítico}
Alterar nível de registro (padrão: informações)
-v, --version Show Número da versão e saída do programa
Primeiro analisarei algum diretório para arquivos Smali antes de fazer o material da análise:
$ smalisca parser -l ~/tmp/falsobanker2/dumped/smali -s java -f sqlite -o falsobanker.sqlite ... :: info parsing .java arquivos em/home/victor/tmp/falsobanker2/dumped/smali ... :: Info terminou a análise! :: Informações exportando resultados para SQLite :: Info Extract Classes ... :: Info Extract Class Properties ... :: Info Extract Class Methods ... :: INFO EXTRACT LANÇAS ... :: Informações Compreende alterações no sqlite db :: Info escreveu resultados para falsobanker.sqlite :: Info Terminou a digitalização
Dê uma olhada na página Parsing para obter mais informações.
Agora você está livre para fazer o que quiser com suas exportações geradas. Você pode inspecionar o sqlite db diretamente ou usar os recursos de análise SMALISCAS :
$ smalisca analiser -f sqlite -i falsobanker.sqlite ... smalisca> sc -x caminho -r 10 +----+----------------------------------------------------------------------------- | id | Class_name | Class_type | Class_package | profundidade | +----+----------------------------------------------------------------------------- | 1 | Landroid/Suporte/V4/Net/ConnectivityManagerCompat | público | Landroid.support.v4.net | 5 | | 2 | Landroid/Support/V4/View/AccessibilityDelegatEcompat $ AccessibilityDelegateJellyBeanImpl | | Landroid.support.v4.View | 5 | | 3 | Landroid/Suporte/V4/View/ViewCompat $ ViewCompatimpl | interface Resumo | Landroid.support.v4.View | 5 | | 4 | Landroid/Suporte/V4/App/ActivityCompathonComb | | Landroid.support.v4.App | 5 | | 5 | Landroid/Support/V4/App/NosvestateFramElayout | | Landroid.support.v4.App | 5 | | 6 | Landroid/Support/V4/Net/ConnectivityManagerCompathonComBMR2 | | Landroid.support.v4.net | 5 | | 7 | Lcom/gmail/xpack/BuildConfig | Final público | Lcom.gmail.xpack | 4 | | 8 | Landroid/Suporte/V4/App/BackStackRecord $ op | final | Landroid.support.v4.App | 5 | | 9 | Landroid/Suporte/V4/App/FragmentManagerImpl | final | Landroid.support.v4.App | 5 | | 10 | Landroid/Suporte/V4/App/Sharecompat $ sharecompatimpl | interface Resumo | Landroid.support.v4.App | 5 | +----+-----------------------------------------------------------------------------
Consulte também a página de análise para obter mais comandos e opções disponíveis.
Consulte a página de desenho para obter exemplos completos.
Smalisca foi libertado sob a licença do MIT . Dê uma olhada no arquivo License.rst .
Esta ferramenta é dedicada à Lică . Muito obrigado também vá para:
Stephen McAllister
- Muito obrigado por todas aquelas horas cheias de depuração de apk e ótimas idéias
Minha namorada
- Muito obrigado por sua paciência e compreensão!
nullSecurity.net
- Hackear o planeta!