最近我遇到像克隆应用程序和多应用程序空间应用程序.他们声称,他们的应用程序创建一个独立的虚拟操作系统在用户的设备上,也使用安全VPN.我想检测和阻止我的应用程序在这些虚拟环境中运行.我试着维护软件包名称,数字签名和所有基本的东西。
11dmarpk1#
您可以检查/proc/self/maps来检测虚拟环境。以下是如何做到这一点:
/proc/self/maps
/data/data
/data/app
package_name
下面是一个简单的Kotlin函数来检测虚拟环境:
fun isVirtualEnvironment(context: Context): Boolean { try { BufferedReader( InputStreamReader(FileInputStream("/proc/self/maps"), Charset.defaultCharset()) ) .use { reader -> var line: String? while (reader.readLine().also { line = it } != null) { line = line!!.trim() val spaceIndex = line!!.lastIndexOf(" ") val path = if (spaceIndex == -1) null else line!!.substring(spaceIndex + 1) if ( path != null && (path.startsWith("/data/app") || path.startsWith("/data/data")) && !path.contains(context.packageName) ) return true } } } catch (ignored: IOException) {} return false}
fun isVirtualEnvironment(context: Context): Boolean {
try {
BufferedReader(
InputStreamReader(FileInputStream("/proc/self/maps"), Charset.defaultCharset())
)
.use { reader ->
var line: String?
while (reader.readLine().also { line = it } != null) {
line = line!!.trim()
val spaceIndex = line!!.lastIndexOf(" ")
val path = if (spaceIndex == -1) null else line!!.substring(spaceIndex + 1)
if (
path != null &&
(path.startsWith("/data/app") || path.startsWith("/data/data")) &&
!path.contains(context.packageName)
return true
}
} catch (ignored: IOException) {}
return false
字符串
1条答案
按热度按时间11dmarpk1#
您可以检查
/proc/self/maps
来检测虚拟环境。以下是如何做到这一点:
/proc/self/maps
/data/data
或/data/app
开头,并且不包含我们的应用程序package_name
,则我们的应用程序可能正在虚拟环境中运行。下面是一个简单的Kotlin函数来检测虚拟环境:
字符串