首页
社区
课程
招聘
超简单!获取SSDT函数列表与SSSDT函数列表
发表于: 2023-2-6 19:07 6865

超简单!获取SSDT函数列表与SSSDT函数列表

2023-2-6 19:07
6865

R3下获取方法有点简单,加载符号,在函数地址判断硬编码,并取得功能号,直接上菜不废话了

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
#include <Windows.h>
#include <ImageHlp.h>
 
#pragma comment(lib,"DbgHelp.lib")
#pragma comment(lib,"ImageHlp.lib")
 
BOOL CALLBACK SymEnumShadowSSDT(PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext)
{
    PDWORD pAddr = pSymInfo->Address;
    if (*pAddr == 0xB8D18B4C)
    {
        printf("%x,%s\n", *(pAddr + 1), pSymInfo->Name);
    }
    return TRUE;
}
 
BOOL CALLBACK SymEnumSSDT(PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext)
{
    PDWORD pAddr = pSymInfo->Address;
    if (*pAddr == 0xB8D18B4C)
    {
        if (!strncmp(pSymInfo->Name, "Nt", 2))
            printf("%x,%s\n", *(pAddr + 1), pSymInfo->Name);
    }
    return TRUE;
}
 
GetSym(char* exe, PSYM_ENUMERATESYMBOLS_CALLBACK EnumFunc)
{
    SYMBOL_INFO sym = { 0 };
        DWORD64 sModule;
        PLOADED_IMAGE pImage = { 0 };
        HANDLE hProc = GetCurrentProcess();
 
    SymInitialize(hProc, NULL, TRUE);
    pImage = ImageLoad(exe, NULL);
    sModule = SymLoadModuleEx(hProc, pImage->hFile, exe, pImage->ModuleName, pImage->MappedAddress, pImage->SizeOfImage, 0, 0);
 
    SymEnumSymbols(hProc, pImage->MappedAddress, NULL, EnumFunc, NULL);
}
 
int main(int argc, char* argv[])
{
    //GetSym("win32u.dll",SymEnumShadowSSDT);
    GetSym("ntdll.dll", SymEnumSSDT);
 
    system("pause");
    return 0;
}

SSDT SSSDT


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 11273
活跃值: (3236)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错 6666
2023-2-6 19:43
0
雪    币: 543
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
这是一段用于列举系统服务描述表(SSDT)中的符号的代码。它使用了 Microsoft 的 DbgHelp 库和 ImageHlp 库来执行此操作。代码中有两个回调函数:SymEnumShadowSSDT 和 SymEnumSSDT。它们都是用于符号枚举的回调函数,并且在 GetSym 函数中被调用。GetSym 函数用于加载模块(指定的 EXE 文件)并列举它的符号。在 main 函数中,分别调用了 GetSym 函数,以列举 win32u.dll 和 ntdll.dll 中的符号,使用对应的回调函数。在代码中,如果某个符号的地址存储的数值为 0xB8D18B4C,它将会被输出,并显示该符号的地址和名称。
2023-2-12 23:43
0
雪    币: 3675
活跃值: (4851)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
酋长哥 这是一段用于列举系统服务描述表(SSDT)中的符号的代码。它使用了 Microsoft 的 DbgHelp 库和 ImageHlp 库来执行此操作。代码中有两个回调函数:SymEnumShadowSS ...
...GPT果然6
2023-2-13 04:46
0
游客
登录 | 注册 方可回帖
返回
//