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。
我们来进行一个测试。
这个是我们运行在正常环境下的。
使用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应用的思路和实现是怎样的