为什么 Android VPN 应用程序不使用 BIND_VPN_SERVICE?

imk*_*han 3 permissions android openvpn android-permissions

我正在分析 Android VPN 应用程序(例如 Hola**)权限使用情况。据谷歌官方手册(http://developer.android.com/reference/android/Manifest.permission.html)规定,VPN 应用程序必须使用 BIND_VPN_SERVICE 权限,但 Hola 并未在其 Manifest 文件中说明. 我想知道为什么它不使用此权限以及它(或一般 VPN 应用程序)如何提供 VPN 服务?

** Hola 在 Manifest 文件中的权限:

  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE
  • android.permission.GET_ACCOUNTS
  • android.permission.READ_PHONE_STATE
  • android.permission.INTERNET
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.GET_TASKS
  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.MODIFY_AUDIO_SETTINGS
  • android.permission.WAKE_LOCK
  • com.google.android.c2dm.permission.RECEIVE
  • org.hola.permission.C2D_MESSAGE
  • com.android.browser.permission.READ_HISTORY_BOOKMARKS
  • com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
  • android.permission.ACCESS_FINE_LOCATION

Com*_*are 6

我想知道为什么它不使用此权限

因为它不需要权限,这很好,因为它不能持有权限。BIND_VPN_SERVICEsignature级权限。

引用的文档BIND_VPN_SERVICE,并强调补充:

必须由 VpnService要求,以确保只有系统可以绑定到它。

您应该BIND_VPN_SERVICE在应用程序清单中找到的位置不是<uses-permission>元素中,而是在用于实现android:permission<service>元素的属性中VpnService。该应用程序正在使用权限保护组件,而不是使用该权限与其他应用程序对话。