APK防护中Anti_Virtual应用的思路和实现是怎样的

  

APK防护中Anti_Virtual应用的思路和实现是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

0 x00前言

虚拟应用程序是一个很强大的存在,破坏了Android系统本身的隔离措施,可以进行免根钩和其他黑科技操作,你可以用这个做很多在原来应用里做不到事情,于此同虚拟应用程序时的安全威胁也不言而喻。可以去看看这篇文章.VirtualApp技术黑产利用研究报告。
当然还有其他东西,可以去各大论坛进行深度挖掘。
我们这次的重点是放在Anti_Virtual应用上。

1。内容

1.1第一种思路和实现
1.2,,第二种思路和实现

我也不知道用什么来命名,感觉要是把思路直接写在标题里之后不好展开。不啰嗦了正文开始。

0 x01第一种思路和实现

1。思路

1.1思路是从哪来的?

我们要防止应用在VirtualAPP上运行就要通过虚拟启动应用时的一些特征来逆向分析,VirtualAPP是开源的我们也可以结合源码来进行分析。

1.2思路挖掘

Android应用隔离是基于Linux系统的多用户机制实现的,即每个应用在安装时被分配了不同的Linux用户uid/gid。而在VirtualAPP中,客户端应用(通过VirtualAPP安装的应用)与主机应用(即VirtualAPP本身)是具有相同用户uid的。

这个是在虚拟资料里的介绍,这里有一个值得关注的地方就是,客户端应用和主机应用具有相同的uid。

我们来进行一个测试。

这个是我们运行在正常环境下的。


 APK防护中Anti_Virtual应用的思路和实现是怎样的“> <br/> </p> <p>用grep过滤一下。<img src=

使用popen进行命令的运行

 int  getEnd (char  *, cmd) {
  ,,,FILE  * pp =, popen (cmd,“r");,//建立管道,,,,if  (pp), {
  ,,,,,,,LOGD (“error");
  ,,,}
  ,,,int 我=0;
  ,,,char  tmp[1024];,//设置一个合适的长度,以存储每一行输出,,,,while  (fgets (tmp, sizeof (tmp), pp), !=, NULL), {
  ,,,,,,,if  (tmp [strlen (tmp),安康;1],==,& # 39;\ n # 39;), {
  ,,,,,,,,,,,tmp [strlen (tmp),安康;1],=,& # 39;\ 0 & # 39;,,//去除换行符,,,,,,,,,,,,我+ +;
  ,,,,,,,}
  ,,,,,,,LOGD (“% s", tmp);
  ,,,}
  ,,,LOGD(“我:% d",我);
  ,,,return 我;
  }

最后进行调用判断。整合一下最后的结果。

<>之前,,,,struct  passwd  * pwd;   ,,,pwd =, getpwuid (getuid ());   ,,,char  *找到=pwd→pw_name;   ,,,LOGD (“% s",找到);   ,,,char  cmd [20]=皃s  |, grep “;   ,,,LOGD (“% s", cmd);   ,,,strcat (cmd,找到);   ,,,LOGD (“% s", cmd);   ,,,int 小姐:=getEnd (cmd);   ,,,if  (i> 4)   ,,,{   ,,,,,,,LOGD(“却;能够is 弗吉尼亚州!“);   ,,,,,,,杀死(0,,SIGKILL);   ,,,}

3。测试

3.1正常环境

APK防护中Anti_Virtual应用的思路和实现是怎样的