![](https://csdnimg.cn/release/download_crawler_static/86389168/bg1.jpg)
1. 实验指导书中的行为检测样本是什么意思?
答:提供 5 个待检测的可能存在恶意的 Exe 样本,后面的“复现(覆盖)被检测的
行为”去掉。需要大家提供样本验证自己的检测算法或者功能。
2. 本次课设需要虚拟机靶机吗?
答:本次课设完全可以基于 Win10,VS2019 开发,不用安装虚拟机。
3. 编译提示目录不合法或者*.dll *.exe 无法写入,怎么办?
答:一般跟本机安装的安全工具有关,可以修改目录名,用 360 右键解锁 dll/exe 锁定,删
除 exe/dll 解决。或则干脆卸载 360,注意退出 360 它的内核还在工作。
注意:杀毒软件可能干涉钩子代码的执行,遇到目录 文件不可写的问题,建议把杀毒
软件直接卸载。
4. 注册表操作到底有哪些 API 呢?
答:这个实现基本的注册表值的添加与写入截获基本可以符合要求。具体 API 可自行查找
资料解决,关键字“注册表操作 API”
5. 我发现 HeapAlloc 调用太频繁了,达到上万次,根本无法及时保存判断申请与释放是
否一致
答:由于 HeapAlloc 调用过于频繁,截获的频率太高,建议采用以下方法之一处理:
(1) 在 HeapCreate 中记录句柄,后面的 HeapAlloc 判断句柄值,只处理前面自己记录
的句柄,减少 HeapAlloc 处理范围。
(2) 使用 HeapCreate 与 HeapDestroy 的句柄来做申请释放统一性或者重复释放问题检
查。
6. 其它 API 都可以截获,为撒 socket 函数就是不行?
答:注意 Windows 系统标准 API Socket 以 WSA 开头,比如:WSASend WSARecv,以这
个为准作为截获目标。Send,recv,connect 并不是标准 API。
7. 我明明使用了共享内存,跟踪的时候确定把输出消息存进共享变量,但读取的时候为
空,为什么?
答:注意检查声明共享变量的时候,要初始化。否则编译器会把该变量编译为非共享变量。
#pragma data_seg("MySeg")
char seg[1000][256] = {};
int count = 0;
volatile int HeapAllocNum = 0;
std::mutex mtx;
#pragma data_seg()
#pragma comment(linker, "/section:MySeg,RWS")
不能是:
#pragma data_seg("MySeg")
char seg[1000][256] ;
int count ;
volatile int HeapAllocNum ;