Auditar permissões de aplicativos facilmente em um só lugar?

28

Existe uma maneira de listar todos os aplicativos instalados no telefone e as permissões que eles exigem em uma página ou exportar a lista para que possa ser auditada facilmente?

Matt
fonte

Respostas:

14

Use aplicativos de mercado como Permission Watchdog ou Permissions . Além disso, existem vários outros.

Denis Nikolaenko
fonte
Infelizmente, o aplicativo Market possui um bug (ou o recurso pretendido?) Quando nem todas as permissões são listadas ao instalar o aplicativo. Isto pode um problema de compatibilidade com software projetado para lançamentos Android mais antigos ... code.google.com/p/android/issues/detail?id=9365
Denis Nikolaenko
2
talvez incluir comentário na sua resposta seja mais simples.
precisa saber é o seguinte
@Nikolaenko, apparently it is on purpose and changed now: android.stackexchange.com/questions/605/…
BlackShift
@BlackShift, o que você quer dizer com "mudou agora"? Alterado pelo Android dev. equipe?
Denis Nikolaenko
@ Nikolaenko, acho que não estava claro porque não está claro para mim. Estou executando o cyanogenmod 6, o android 2.2 e quase todos os aplicativos solicitam as permissões concedidas implicitamente pelo seu link. Então, eu não sei quem mudou isso (equipe de cianogênio ou android).
BlackShift
4

Outro aplicativo que acabei usando em vez de Permissões é RL Permissions . Eu prefiro a interface. Quanto a qual deles funciona melhor, eu não sei.

Matt
fonte
2

o aSpotCat também é um ótimo aplicativo para auditoria de permissões.

Fluxo
fonte
0

Como nenhuma versão do Android é mencionada na pergunta, proponho uma resposta baseada em linha de comando relevante para a versão 4.2.1 e superior do Android. Idealmente, é uma solução independente de SO, SO no PC.

Dependências

  • Requer para ser configurado no PC.
  • Requer binário do busybox . Se o dispositivo estiver enraizado, instale o aplicativo Busybox . Caso contrário, baixe o binário do busybox da fonte oficial , renomeie o binário para busybox , defina a permissão executável compatível com Linux nesse binário para todos e mova-o para o dispositivo usando

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC
    
  • Requer aapt binário. Se você estiver executando um CM ou sua ROM derivada, ignore esse requisito. Caso contrário, no Android 4.x, você pode baixar o binário daqui , renomear o binário para aapt , definir permissão executável compatível com Linux nesse binário para todos e movê-lo para o dispositivo usando

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC . 
    

    Para usuários do Android 5.x, solicite assistência ao Google.

Aqui está o meu pequeno script que faz a mágica:

#! / system / bin / sh

# Verifique se o binário do busybox existe em / data / local / tmp / ou / system / xbin. Defina o caminho do binário detectado na variável busybox ou saia se o arquivo não existir ou se a permissão executável não estiver definida
[[-x / data / local / tmp / busybox]] && busybox = / data / local / tmp / busybox || {[[-x / system / xbin / busybox]] && busybox = / system / xbin / busybox || {printf "binário do busybox não encontrado ou permissão executável não definida. Saindo \ n" && exit; }; }
# Verifique se o binário aapt existe em / data / local / tmp ou / system / bin ou / system / xbin. Defina o caminho do binário detectado na variável aapt ou exit se o arquivo não existir ou se a permissão executável não estiver definida
[[-x / data / local / tmp / aapt]] && aapt = / data / local / tmp / aapt || {[[-x / system / bin / aapt]] && aapt = / system / bin / aapt || {[[-x / system / xbin / aapt]] && aapt = / system / xbin / aapt || {printf "aapt binário não encontrado ou permissão executável não definida. Saindo \ n" && exit; }; }; }

# Liste o nome do pacote de todos os aplicativos instalados e salve-os no arquivo packages.txt em / sdcard
pacotes da lista pm | pacote $ busybox sed '/ ^: // g' | $ busybox sort -o /sdcard/packages.txt

# Para cada nome de pacote na saída que acabamos de salvar, obtenha o rótulo do aplicativo usando $ path e $ label, imprima uma linha e, finalmente, liste as permissões concedidas ao aplicativo 
enquanto lê linha; Faz
    caminho = $ (pm caminho $ linha | $ pacote do busybox sed / ^: // g '); 
    label = $ ($ aapt d crachá $ path | $ busybox grep 'aplicativo: label =' | $ busybox cut -d "'" -f2);  
    $ busybox printf "Permissões para o aplicativo $ label com o nome do pacote $ line \ n"; 
    pacote dumpsys $ line | $ busybox sed -e '1, / grantPermissions: / d' -e '/ ^ \ s * $ /, $ d' | ordenação $ busybox;
    $ busybox printf "\ n"; 
done </sdcard/packages.txt

Saída de demonstração:

Permissões para o aplicativo DisableService com o nome do pacote cn.wq.disableservice
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.WRITE_EXTERNAL_STORAGE

Permissões para o aplicativo Indposent Xposure com o nome do pacote co.vanir.indecentxposure
      android.permission.RECEIVE_BOOT_COMPLETED

Permissões para tags de aplicativo com o nome do pacote com.android.apps.tag
      android.permission.CALL_PHONE
      android.permission.NFC
      android.permission.READ_CONTACTS
      android.permission.WAKE_LOCK
      android.permission.WRITE_SECURE_SETTINGS
...
...
Permissões para o provedor de temas de aplicativos com o nome do pacote org.cyanogenmod.themes.provider
      android.permission.ACCESS_NOTIFICATIONS
      android.permission.ACCESS_THEME_MANAGER
      android.permission.INTERNET
      android.permission.READ_THEMES
      android.permission.WRITE_SECURE_SETTINGS
      android.permission.WRITE_SETTINGS
      android.permission.WRITE_THEMES

Salve o script no PC em um arquivo chamado perm_script.she mova-o para / sdcard usando

adb push LOCAL_FILE /sdcard/   # LOCAL_FILE is the  path where you saved that file into PC

Execute esse arquivo

adb shell sh /sdcard/perm_script.sh > OUTPUT_FILE   # OUTPUT_FILE is the path where you want to save the final output

Quanto maiores os aplicativos instalados no sistema, maior será o tempo para o comando concluir a execução. No meu dispositivo, demorou cerca de três minutos.

Relacionado: Existe uma maneira nativa de encontrar todos os aplicativos instalados que têm acesso a um recurso de telefone?

Senhor do Fogo
fonte