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

  


   심플스 배너



 
이미 알고 계신분들이 많으시겠지만 Windows XP SP2이상부터 MS 핫패칭 기능이 들어가 있습니다.
따라서 이에 대해 특정 함수에 대한 기계어 코드를 검사함으로써 Windows XP SP2이상인지 확인 할 수 있습니다.

다음은 해당 코드입니다.

#include <Windows.h>

BOOL IsWindowsXpSp2AndLater()
{
    HMODULE hModule;
    UCHAR *pBitBltAddress;

    hModule = ::LoadLibrary(_T("GDI32.DLL"));
    if (hModule == NULL)
    {
        return FALSE;
    }
    pBitBltAddress = (UCHAR *)::GetProcAddress(hModule, "BitBlt");
    if (pBitBltAddress == NULL)
    {
        return FALSE;
    }
    //
    // MS HotPatching이 Windows XP SP2 이상부터 적용되었으므로 이에 대한 기계어 코드를 확인합니다.
    //
    if (((*(pBitBltAddress - 5)) == 0x90) && // nop
        ((*(pBitBltAddress - 4)) == 0x90) && // nop
        ((*(pBitBltAddress - 3)) == 0x90) && // nop
        ((*(pBitBltAddress - 2)) == 0x90) && // nop
        ((*(pBitBltAddress - 1)) == 0x90) && // nop
        ((*pBitBltAddress) == 0x8B) && ((*(pBitBltAddress + 1)) == 0xFF) // mov edi, edi
        )
    {
        return TRUE;
    }
    return FALSE;
}

int _tmain(int argc, _TCHAR* argv[])
{
    if (IsWindowsXpSp2AndLater() == TRUE)
    {
        printf("버전이 Windows XP SP2 이상입니다. ( 또는 Windows 2003 Server 이상 )\n");
    }
    else
    {
        printf("버전이 Windows XP SP2 아래에 운영체제입니다.\n");
    }
    return 0;
}

해당 함수가 이미 훅킹을 당했을 경우 코드에 변조가 있을 수 있으므로 주의해야합니다.

profile

esniper

2010.09.05 21:13:35

GDI32.DLL에서 체크하는 방식이네요~

취약점이 있는 버전을 사용중인지 체크도 가능하겠군요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
163 Linux Tip 리눅스 기반 오픈 소스 사이트 모음 삽질신 2009-11-16 66189
162 Linux Tip VirtualBox에 우분투 설치 후에 내부 네트워크 접속 설정하기 file esniper 2010-09-10 34383
161 Windows Research IE Cache 경로 변경하기 lain 2011-06-09 30213
160 Windows Research VMWare 탐지 기법 우회 - 2 [2] lain 2011-04-04 27763
159 Windows Research 화면캡쳐방지는 어떻게 구현될까? [3] lain 2010-09-04 27365
158 PHP Tip php 파싱 라이브러리 - snoopy esniper 2009-03-26 19924
157 Linux Tip Directory index forbidden by Options directive 삽질신 2009-11-16 19414
156 Linux Tip VirtualBox에서 오른쪽 CTRL키 사용하기(VitualBox 호스트키) file [2] esniper 2010-09-10 19027
155 문서자료 고품질의 무료 아이콘들 [3] esniper 2010-09-08 18835
154 Windows Tip SSH 터널링 - putty의 plink 사용예 esniper 2009-03-26 18673
153 문서자료 json 문법 체크 사이트 Lyn 2012-02-28 17995
152 PHP Tip mysql_insert_id() - 마지막 insert 된 아이디 값 esniper 2009-03-26 17624
151 Linux Tip 우분투 설치 후 putty에서 한글 안 깨지도록 설정하기 file esniper 2010-09-10 16722
150 Linux Tip 우분투 ssh or mysql 서버 접속지연이 있는 경우 해결책 esniper 2010-09-10 15991
149 Linux Tip 우분투에 IRC서버 설치후 닉네임 길이와 동접자 조절. [1] 오랑캐꽃 2010-11-26 15639
148 Windows Research 커널레벨에서 IAT Hook lain 2011-06-11 15634
147 Windows Research SetEvent 함수는 언제 실패할까? lain 2010-09-04 15084
146 Windows Research 유저 레벨에서 API Hook 1부 file [1] lain 2010-09-03 15011
145 Windows Research Sysinternals - Filemon source code file [5] lain 2010-09-04 14947
144 Windows Research Sysinternals - Regmon source code file [1] lain 2010-09-04 14452

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