逆向入门分析实战(四)
字数 1506 2025-08-15 21:31:58
Windows进程遍历与安全软件检测技术详解
1. 技术背景
在恶意软件和APT攻击中,常见的一种规避技术是检测系统中运行的安全软件(如杀毒软件、行为监控软件等)。当发现特定安全软件存在时,恶意程序会选择退出或改变行为模式以避免被发现。这种技术的核心是进程遍历和进程名比对。
2. 关键技术原理
2.1 进程遍历基本流程
- 创建系统进程快照
- 遍历快照中的进程信息
- 比对进程名与目标安全软件进程名
- 根据比对结果采取相应行为
2.2 Windows API详解
2.2.1 CreateToolhelp32Snapshot
功能:创建系统快照,捕获指定类型的系统信息。
参数:
dwFlags:指定快照包含的内容类型TH32CS_SNAPPROCESS(值为2):包含所有进程
th32ProcessID:进程ID,仅当查看特定进程的堆或模块时使用,进程遍历时应设为0
返回值:快照句柄,失败时返回INVALID_HANDLE_VALUE (-1)
2.2.2 PROCESSENTRY32结构体
存储进程信息的结构体,关键成员:
dwSize:结构体大小,必须在使用前初始化szExeFile:进程可执行文件名
2.2.3 Process32First
功能:获取快照中第一个进程信息
参数:
hSnapshot:快照句柄lppe:指向PROCESSENTRY32结构体的指针
2.2.4 Process32Next
功能:获取快照中下一个进程信息
参数与Process32First相同
3. 正向开发实现
3.1 代码实现步骤
- 包含必要头文件
- 初始化PROCESSENTRY32结构体
- 调用CreateToolhelp32Snapshot创建进程快照
- 调用Process32First获取第一个进程
- 循环调用Process32Next遍历所有进程
- 使用StrStr比对进程名
- 根据比对结果执行相应操作
3.2 关键代码示例
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
void listProcess() {
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE) {
printf("CreateToolhelp32Snapshot failed\n");
return;
}
if(Process32First(hProcessSnap, &pe32)) {
do {
printf("The process is %s\n", pe32.szExeFile);
if(StrStr(pe32.szExeFile, "360sd.exe")) {
printf("360杀毒正在运行,退出程序\n");
exit(0);
}
} while(Process32Next(hProcessSnap, &pe32));
}
CloseHandle(hProcessSnap);
}
4. 逆向分析要点
4.1 IDA分析关键点
-
CreateToolhelp32Snapshot调用分析:
- 参数
dwFlags值为2(TH32CS_SNAPPROCESS) - 返回值与
0FFFFFFFFh(-1)比较,判断是否成功
- 参数
-
PROCESSENTRY32结构体:
- 大小为128h(296字节)
szExeFile成员存储进程名
-
进程名比对逻辑:
- 使用StrStr函数比对进程名与"360sd.exe"
- 匹配成功则进入退出流程
- 匹配失败则继续遍历
4.2 关键汇编代码分析
mov eax, [ebp+pe32] ; 获取PROCESSENTRY32结构体地址
push eax ; 准备printf参数
push offset aTheProcessIs ; "The process is %s\n"
call printf ; 输出进程名
mov eax, [ebp+pe32.szExeFile] ; 获取进程名
push offset a360sdExe ; "360sd.exe"
push eax
call StrStr ; 比对进程名
test eax, eax
jnz exit_program ; 匹配则退出
5. 技术扩展与应用
5.1 检测其他安全软件
常见安全软件进程名示例:
- 360安全卫士:360tray.exe
- 腾讯电脑管家:QQPCRTP.exe
- 火绒安全:HipsTray.exe
- Windows Defender:MsMpEng.exe
5.2 进阶检测技术
- 窗口枚举:通过EnumWindows查找安全软件窗口
- 服务检测:检查安全软件相关服务
- 驱动检测:检查加载的驱动模块
- 文件检测:检查安全软件安装目录
5.3 防御措施
- 进程隐藏:安全软件可隐藏自身进程
- 随机化进程名:每次启动使用不同进程名
- 行为混淆:检测到扫描时展示无害行为
- API钩子:监控关键API调用
6. 总结
本文详细讲解了Windows平台下通过进程遍历检测安全软件的技术实现,包括:
- 关键API的使用方法
- 正向开发的完整代码实现
- 逆向分析的要点和方法
- 技术扩展方向和防御措施
掌握这些技术对于安全研究人员分析恶意软件行为、开发安全防护工具具有重要意义。