심플스 - 프로그램과 책 이야기로 가득한 곳, (Simples.Kr)

  

커널 모듈 리스트 가져오기

Windows Research 조회 수 18393 추천 수 0 2010.09.03 17:28:16
 

루트킷 체크 프로그램인 gmer에 Modules탭에 보면은 현재 로드 된 커널 모듈을 볼 수 있습니다.
회사에서 작업을 하다가 해당 기능이 좀 필요해서 간단하게 인터넷 뒤져서 짜집기한 코드입니다.
( OpenRCE랑 Undocumented 사이트 참고하였습니다. )

컴파일을 하실려면 ntdll.lib이 필요한데 해당 lib파일은 WDK에 있습니다.

#include <Windows.h>

#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)

typedef enum _SYSTEM_INFORMATION_CLASS
{
    SystemBasicInformation,
    SystemProcessorInformation,
    SystemPerformanceInformation,
    SystemTimeOfDayInformation,
    SystemPathInformation,
    SystemProcessInformation,
    SystemCallCountInformation,
    SystemDeviceInformation,
    SystemProcessorPerformanceInformation,
    SystemFlagsInformation,
    SystemCallTimeInformation,
    SystemModuleInformation,
    SystemLocksInformation,
    SystemStackTraceInformation,
    SystemPagedPoolInformation,
    SystemNonPagedPoolInformation,
    SystemHandleInformation,
    SystemObjectInformation,
    SystemPageFileInformation,
    SystemVdmInstemulInformation,
    SystemVdmBopInformation,
    SystemFileCacheInformation,
    SystemPoolTagInformation,
    SystemInterruptInformation,
    SystemDpcBehaviorInformation,
    SystemFullMemoryInformation,
    SystemLoadGdiDriverInformation,
    SystemUnloadGdiDriverInformation,
    SystemTimeAdjustmentInformation,
    SystemSummaryMemoryInformation,
    SystemNextEventIdInformation,
    SystemEventIdsInformation,
    SystemCrashDumpInformation,
    SystemExceptionInformation,
    SystemCrashDumpStateInformation,
    SystemKernelDebuggerInformation,
    SystemContextSwitchInformation,
    SystemRegistryQuotaInformation,
    SystemExtendServiceTableInformation,
    SystemPrioritySeperation,
    SystemPlugPlayBusInformation,
    SystemDockInformation,
    SystemPowerInformationRedefine, // 이름이 중복되어서 변경하였습니다.
    SystemProcessorSpeedInformation,
    SystemCurrentTimeZoneInformation,
    SystemLookasideInformation
} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;


extern "C" NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(
    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
    OUT PVOID SystemInformation,
    IN ULONG SystemInformationLength,
    OUT PULONG ReturnLength OPTIONAL);

typedef struct _RTL_PROCESS_MODULE_INFORMATION {
    HANDLE Section;
    PVOID MappedBase;
    PVOID ImageBase;
    ULONG ImageSize;
    ULONG Flags;
    USHORT LoadOrderIndex;
    USHORT InitOrderIndex;
    USHORT LoadCount;
    USHORT OffsetToFileName;
    CHAR 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;

BOOL PrintSystemModuleList()
{
    NTSTATUS Status;
    PRTL_PROCESS_MODULES ModuleInfo;
    PRTL_PROCESS_MODULE_INFORMATION ModuleEntry;
    ULONG ReturnedLength;
    ULONG i;

    Status = NtQuerySystemInformation(SystemModuleInformation,
                                      NULL,
                                      0,
                                      &ReturnedLength);
    if (Status != STATUS_INFO_LENGTH_MISMATCH)
    {
        return FALSE;
    }

    ModuleInfo = (PRTL_PROCESS_MODULES)malloc(ReturnedLength);

    Status = NtQuerySystemInformation(SystemModuleInformation,
                                      ModuleInfo,
                                      ReturnedLength,
                                      &ReturnedLength);
    if (!NT_SUCCESS(Status))
    {
        free(ModuleInfo);

        return NULL;
    }


    for (i = 0; i < ModuleInfo->NumberOfModules; i++)
    {
        ModuleEntry = &ModuleInfo->Modules[i];
       
        printf("%s\n", ModuleEntry->FullPathName);
    }
    free(ModuleInfo);

    return TRUE;
}


int _tmain(int argc, _TCHAR* argv[])
{
    PrintSystemModuleList();

    return 0;

}


profile

마플

2010.11.04 10:29:57

안녕하세요 ^^^;;;

까먹고 있다 이제 글 올립니다.

 

올려주신 글을 보고 아주아주 조금 수정한 소스를 제 블로그에 올려놨습니다.

http://kese111.tistory.com/entry/ZwQuerySystemInformation-을-사용한-System-Module-List-구하기

 

소스 공개해주신걸로 믿고 허락안받고 퍼간게 맘에 걸렸는데, 이제야왔네요.

 

감사합니다.

profile

esniper

2010.11.04 13:50:41

네 참고하여 소스를 수정한 경우에 이렇게 댓글을 남겨주셔도 되지만 더 깔끔한 방법은 상단에 표기를 같이 해주시는 것입니다.

예를들어 지금은 이렇게 되어있는데요. 현재 마플이라는 이름의 상단에 출처를 밝혀주신 후에 modify한 날짜와 본인의 이름을 명시하는 것이 좋습니다.

그리고 변경된 것을 이렇게 원저작자에게 알려주면 이상적인 경우가 되겠네요 ^^

참고하셔서 앞으로도 좋은 자료 많이 만드시길 바랍니다.


=================================================================

// ---  Get System Module List with ZwQuerySystemInformation

//  --- * 2010/10/27 * 

 

//  --- 마플 

//  --- http://kese111.tistory.com 

 

#include <ntddk.h>


코드 내용들....

.

.


참고자료 

http://simples.kr/?mid=ITTalk&page=2&document_srl=19838

=================================================================

profile

마플

2010.11.07 17:46:06

바로 반영하겠습니다 ^^;

List of Articles
번호 제목 글쓴이 날짜 조회 수
43 문서자료 SCSI Multi-Media Commands - 5 (MMC-5) file lain 2010-09-03 11563
42 문서자료 Seagate - SCSI Commands Reference Manual file lain 2010-09-03 11725
41 문서자료 Intel® Threading Building Blocks: Documents lain 2010-09-03 11065
40 문서자료 Mozilla - Accessibility/AT-Windows-API lain 2010-09-03 9066
39 문서자료 Win32 Assembly Tutorials [1] lain 2010-09-03 11318
38 문서자료 the Operating System resource center lain 2010-09-03 10930
37 문서자료 Bona Fide OSDev Documents lain 2010-09-03 10563
36 문서자료 Keybaord Scan Codes Demystified lain 2010-09-03 10729
35 문서자료 Intel i80x86 CPU Architecture lain 2010-09-03 11390
34 문서자료 Hexray - Failures and troubleshooting lain 2010-09-03 12034
33 Windows Research 윈도우즈 버전이 Windows XP SP2인지 확인하는 다른 방법 [1] lain 2010-09-03 22360
32 Windows Research 유저 레벨에서 API Hook 1부 file [1] lain 2010-09-03 23215
31 Windows Research 유저 레벨에서 API Hook 2부 file [2] lain 2010-09-03 20412
30 Windows Research IDA에 HexRay를 사용할 때의 주의점 [1] lain 2010-09-03 16163
29 Windows Research IDA에서 Microsoft 바이너리 파일을 리버싱 할 때 디버그 심... file [1] lain 2010-09-03 17171
» Windows Research 커널 모듈 리스트 가져오기 [3] lain 2010-09-03 18393
27 Windows Research VMWare 탐지 기법 우회 [2] lain 2010-09-03 24310
26 Windows Research 커널 디버거 탐지 기법 우회 lain 2010-09-03 17968
25 Windows Research ZwQueryInformationFile을 비동기 파일핸들로 호출 시 STATUS... file lain 2010-09-03 15931
24 Windows Research DosPathNameToNtPathName file lain 2010-09-03 14077

  • 이용약관
  • 개인정보취급방침
  • 사이트맵