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

  


   심플스 배너



커널 모듈 리스트 가져오기

Windows Research 조회 수 8151 추천 수 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
번호 제목 글쓴이 날짜 조회 수
163 문서자료 json 문법 체크 사이트 Lyn 2012-02-28 16424
162 Windows Research SCSI Miniport - IOCTL_SCSI_PASS_THROUGH_DIRECT ( Windows ... lain 2011-06-11 12546
161 Windows Research 커널레벨에서 IAT Hook lain 2011-06-11 14075
160 Windows Research DEVICE_OBJECT에 대한 보안 디스크립터 변경 lain 2011-06-11 11328
159 Windows Research IE Cache 경로 변경하기 lain 2011-06-09 29327
158 Windows Research 32Bit 윈도우즈에서 실제 물리메모리크기 얻어오기 lain 2011-06-09 11758
157 Windows Research VMWare 탐지 기법 우회 - 2 [2] lain 2011-04-04 25686
156 Linux Tip 우분투에 IRC서버 설치후 닉네임 길이와 동접자 조절. [1] 오랑캐꽃 2010-11-26 14794
155 Linux Tip VirtualBox에 우분투 설치 후에 내부 네트워크 접속 설정하기 file esniper 2010-09-10 32326
154 Linux Tip VirtualBox에서 오른쪽 CTRL키 사용하기(VitualBox 호스트키) file [2] esniper 2010-09-10 17552
153 Linux Tip 우분투 설치 후 putty에서 한글 안 깨지도록 설정하기 file esniper 2010-09-10 15831
152 Linux Tip 우분투 ssh or mysql 서버 접속지연이 있는 경우 해결책 esniper 2010-09-10 15055
151 문서자료 고품질의 무료 아이콘들 [3] esniper 2010-09-08 17798
150 Windows Research Sysinternals - Filemon source code file [5] lain 2010-09-04 14034
149 Windows Research Sysinternals - Regmon source code file [1] lain 2010-09-04 13625
148 Windows Research PostQueuedCompletionStatus 함수에 실패 여부도 고려해야 할까? lain 2010-09-04 12219
147 Windows Research SetEvent 함수는 언제 실패할까? lain 2010-09-04 14166
146 Windows Research 커널모드 드라이버에서 사용하는 시간관련 매크로 lain 2010-09-04 11716
145 Windows Research 화면캡쳐방지는 어떻게 구현될까? [3] lain 2010-09-04 25198
144 Windows Research IRP Completion Hook file lain 2010-09-04 12440

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