분서할떄 편하게~~API값을 토대로 드라이버 로드값을 참고해두자~ 로컬 드라이브 알아내기 WINAPI 2007/07/17 13:56 http://blog.naver.com/windslime/80040359840 |
자신의 로컬 시스템에 몇 개의 어떤 이름의 드라이브가 있는지를 찾는 함수는
GetLogicalDrives 함수와 GetLogicalDriveStrings 함수이다.
DWORD WINAPI GetLogicalDrives(void);
[Return]
성공시 드라이브 관련 정보 비트 값을 성정한 DWORD 값, 실패시 0을 반환한다.
DWORD WINAPI GetLogicalDriveStrings(
DWORD nBufferLength,
LPTSTR lpBuffer
);
DWORD nBufferLength
lpBuffer의 최대 크기. 이 크기는 종료문자를 포함하지 않은 크기이다.
만약 이 값이 0이라면 lpBuffer 는 사용되지 않는다.
LPTSTR lpBuffer
드라이브 이름을 받을 문자열.
[Return]
성공시 버퍼에 들어가 있는 문자열의 길이, 실패시 0을 반환한다.
위의 두 함수는 같은 기능을 하지만 얻어진 값의 사용법이 다르다.
GetLogicalDrives 함수는 DWORD형의 리턴 값을 받는다.
이 리턴 값의 최하위 1비트를 A 드라브로 해서 1비트씩 자릿수를 올려가면서
해당 드라이브가 있으면 해당 비트를 1로 셋팅하고 없으면 그 비트를 0으로 세팅한다.
ex) 시스템에 A, C, D, E, H 드라이브가 있다고 가정하면
GetLogicalDrives 함수의 리턴 값은
0000 0000 0000 0000 0000 0000 1001 1101
해서 0x9D 또는 157이 될 것이다.
GetLogicalDriveStrings 함수는 버퍼의 크기와 버퍼를 넘겨서 그 버퍼에
드라이브 문자를 받아 온다. 단지, 드라이브 이름과 드라이브 이름 사이에
널 종료문자가 위치해서 조금의 주의를 해줘야 한다.
ex) 시스템에 A, C, D, E, H 드라이브가 있다고 가정하면
GetLogicalDriveStrings 함수 성공시 버퍼는
Buffer[0] 부터
A : \ 0
C : \ 0
D : \ 0
E : \ 0
H : \ 0 0
순으로 들어간다.
EX : A = 1, B = 2, C = 4, D = 8...의 형태로 하여 Long 값을 가져오던데,
이 함수의 리턴 값은 가장 마지막 널 종료문자 위치인 20이 된다.
[출처] 로컬 드라이브 알아내기|작성자 바람라임
'시스템 해킹' 카테고리의 다른 글
힙 스프레이 공격 (0) | 2014.03.31 |
---|---|
UAC 우회 (0) | 2014.01.29 |
시스템 정보를 보여주는 툴 (0) | 2013.02.12 |
ker32.dll의 메모리 영향에 대한 이야기 (0) | 2012.10.30 |
windows 8 의 보안기능 (0) | 2012.09.12 |