首页
社区
课程
招聘
未解决 [求助][求助]驱动获取模块的加载地址
发表于: 2020-2-12 12:33 2674

未解决 [求助][求助]驱动获取模块的加载地址

2020-2-12 12:33
2674
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
超级模块
2020-2-12 15:05
0
雪    币: 198
活跃值: (81)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
柒雪天尚 超级模块
C++,另外进程有保护R3不行
2020-2-12 15:06
0
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
typedef struct _RTL_PROCESS_MODULE_INFORMATION {
        HANDLE Section;                 // Not filled in
        PVOID MappedBase;
        PVOID ImageBase;
        ULONG ImageSize;
        ULONG Flags;
        USHORT LoadOrderIndex;
        USHORT InitOrderIndex;
        USHORT LoadCount;
        USHORT OffsetToFileName;
        UCHAR  FullPathName[256];
} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;

typedef struct _RTL_PROCESS_MODULES {
        ULONG NumberOfModules;
        RTL_PROCESS_MODULE_INFORMATION Modules[1];
} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;

typedef NTSTATUS(WINAPI *NTQUERYSYSTEMINFORMATION)(__in       DWORD SystemInformationClass,
        __inout    PVOID SystemInformation,
        __in       ULONG SystemInformationLength,
        __out_opt  PULONG ReturnLength);
NTQUERYSYSTEMINFORMATION NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtQuerySystemInformation");

int _tmain(int argc, _TCHAR* argv[])
{
        PRTL_PROCESS_MODULES            Modules;
        PRTL_PROCESS_MODULE_INFORMATION ModuleInfo;
        PVOID Buffer = NULL;
        ULONG ReturnLength;
        ULONG i;
        ULONG BufferSize = 4096;
        NTSTATUS Status;
retry:
        Buffer = malloc(BufferSize);

        if (!Buffer) {
                return STATUS_NO_MEMORY;
        }
        Status = NtQuerySystemInformation(11,
                Buffer,
                BufferSize,
                &ReturnLength
                );

        if (Status == 0xC0000004L) {
                free(Buffer);
                BufferSize = ReturnLength;
                goto retry;
        }

        Modules = (PRTL_PROCESS_MODULES)Buffer;
        ModuleInfo = &(Modules->Modules[0]);

        for (i = 0; i < Modules->NumberOfModules; i++, ModuleInfo++)
        {
        
                cout << ModuleInfo->FullPathName << "         " << ModuleInfo ->ImageBase << endl;
        }

        free(Buffer);
}
2020-2-12 15:10
0
雪    币: 198
活跃值: (81)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
柒雪天尚 typedef struct _RTL_PROCESS_MODULE_INFORMATION { HANDLE Section; // Not fil ...
R3就可以获取到吗
2020-2-12 15:18
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
帮顶
2020-2-13 01:05
0
游客
登录 | 注册 方可回帖
返回
//