bjtwokeight
雪 币: 2832
活跃值: (36)
能力值:
( LV3,RANK:30 )
在线值:
前一篇地址
昨天的实验测试有个问题,那就是病毒才放了508个,后来检查发现原来是wprintf的缓冲区只能1024个字节,于是我修复了这个问题,对昨天没出问题的杀软再进行一次测试。
利用W版文件函数创建超深路径目录,并在目录中沿途放置病毒,以测试各大杀软扫描器。
// 最大目录深度测试 // 用于测试扫描目录会不会崩溃 #include <windows.h> #include <stdio.h> #include <strsafe.h> 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也卡了半天):
没错,数字正确,接下来啊开始测试。
今天主要来测试的就是昨天成功扫出508个,但由于我的BUG导致没法继续测试的杀软。
今天点自定义查杀没有昨天的黑了十几秒的问题,不知道是不是我虚拟机问题。
看来还是昨天测试得不够猛,今天可以明显地看出kscan的内存也在不断上升。
到了10024个文件的时候突然弹了一个runtime library的窗口:
然而这窗口透明的,也不知道它显示了什么,在这之后扫描似乎没有继续下去了:
把弹出的窗口关闭,可以看到程序错误:
阵亡了,下一个。
这个真的是让我震惊了,看起来这个东西UI这么简陋,扫描器真是意外地强大,16387个病毒全部扫出来了,而且只花了3分钟,这个扫描器真的是有东西的啊。
不过查看日志的时候照样卡死。
不知为什么扫描时会闪烁显示这个字符串:
扫到2044个之后,再也没增加了,另外我的explorer似乎卡死了,360杀毒实时监控崩溃:
在扫了大概一小时四十七分钟后,崩溃了,那一瞬间我没捕捉到。 可以看到资源监视器中的下降波形,是它崩溃的形状。
扫描到1068个之后卡住,然后看着everything中对象数目从32735龟速下降:
32735-1068=31667, 看它到了这个数之后还会不会继续减少吧。
可以看到卡巴只扫描1068级目录
[培训]《安卓高级研修班(网课)》9月班开始招生!挑战极限、工资翻倍!
最后于 4天前 被bjtwokeight编辑 ,原因: 增加卡巴斯基测试