检测应用程序是否在虚拟Android环境应用程序(如克隆应用程序或多应用程序空间)上运行

dvtswwa3  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(140)

最近我遇到像克隆应用程序和多应用程序空间应用程序.他们声称,他们的应用程序创建一个独立的虚拟操作系统在用户的设备上,也使用安全VPN.我想检测和阻止我的应用程序在这些虚拟环境中运行.
我试着维护软件包名称,数字签名和所有基本的东西。

11dmarpk

11dmarpk1#

您可以检查/proc/self/maps来检测虚拟环境。
以下是如何做到这一点:

  • 逐行读取/proc/self/maps
  • 从每一行获取文件路径
  • 如果路径以/data/data/data/app开头,并且不包含我们的应用程序package_name,则我们的应用程序可能正在虚拟环境中运行。

下面是一个简单的Kotlin函数来检测虚拟环境:

  1. fun isVirtualEnvironment(context: Context): Boolean {
  2. try {
  3. BufferedReader(
  4. InputStreamReader(FileInputStream("/proc/self/maps"), Charset.defaultCharset())
  5. )
  6. .use { reader ->
  7. var line: String?
  8. while (reader.readLine().also { line = it } != null) {
  9. line = line!!.trim()
  10. val spaceIndex = line!!.lastIndexOf(" ")
  11. val path = if (spaceIndex == -1) null else line!!.substring(spaceIndex + 1)
  12. if (
  13. path != null &&
  14. (path.startsWith("/data/app") || path.startsWith("/data/data")) &&
  15. !path.contains(context.packageName)
  16. )
  17. return true
  18. }
  19. }
  20. } catch (ignored: IOException) {}
  21. return false
  22. }

字符串

展开查看全部

相关问题