[회보 보관 ^] [< 볼륨 2, 번호 1] [볼륨 2, 번호 3 >]
Systems Internals 뉴스레터 2권, 2호
http://www.sysinternals.com
저작권 © 2000 Mark Russinovich
2000년 3월 27일 - 이번 호:
사설
- Mark, David Solomon과 함께 "Inside Windows 2000, 제3판" 공동 집필
SYSINTERNALS의 새로운 소식
- PsKill v1.03, PsList v1.12
- Junction v1.0
- ElogList v1.0
- NTFrob v1.6a
- GetSid v1.1
- HandleEx v2.23
- Regmon v4.24, Filemon v4.28
- AutoRuns v1.0
- NT 4. ACL 편집기
- SysInternals T-Shirts
- microsoft.com의 더 많은 SysInternals
- 3월/4월 내부 칼럼
- 별로 새롭지 않은 것들
내부 정보
- 재분석 지점
- 커널 핸들 테이블
- 하나 이상의 드라이버 시작 실패
- Microsoft NT 관련 특허
출시 예정
- TdiMon
스폰서: WINTERNALS 소프트웨어
Systems Internals 뉴스레터는 Winternals Software가 후원하며 웹(http://www.winternals.com.)에서 제공됩니다. Winternals Software는 Windows NT/2K용 고급 시스템 도구의 선도적인 개발업체이자 제공업체입니다. Winternals 소프트웨어 제품에는 Windows NT 4.0용 FAT32, ERD Commander Professional Edition(Windows NT용 고급 부팅 디스크 기능) 및 원격 복구가 포함됩니다.
Winternals Software의 NTFSDOS Professional 및 NTFS for Win98은 DOS, Windows 95 및 Windows 98에서 NTFS 드라이브에 대한 완전한 읽기 및 쓰기 액세스를 제공합니다. NTFSDOS Pro는 단일 플로피 "부팅 디스크" 기능을 Windows NT/2K에 제공합니다. NTFSDOS Pro를 사용하면 버그가 있는 드라이버를 삭제하고 파일을 새로 고칠 수 있으며 DOS 부팅 플로피에서 NTFS 드라이브에 대한 일반 파일 시스템 유지 관리를 수행할 수 있습니다. Win98용 NTFS를 사용하면 Windows 95 및 Windows 98에서 NTFS 드라이브에 투명하게 액세스할 수 있습니다. 이중 부팅 환경에서 NTFS 드라이브의 NT와 Win9x 간에 애플리케이션과 파일을 쉽게 공유할 수 있습니다. 두 유틸리티 모두에서 NTFS Chkdsk 기능이 기본 제공됩니다. NTFSDOS Pro의 무료 읽기 전용 버전은 http://www.sysinternals.com/ntfspro.htm에서 사용할 수 있으며 Win98용 NTFS의 무료 읽기 전용 버전은 http://www.sysinternals.com/ntfs98.htm.에서 사용할 수 있습니다.
여러분, 안녕하세요.
Systems Internals 뉴스레터에 오신 것을 환영합니다. 뉴스레터는 현재 20,000명의 구독자를 보유하고 있습니다. 뉴스레터 구독자 명단은 지난 2개월 동안 6,000명 이상의 신규 가입자와 함께 급격히 증가했습니다! 계속해서 뉴스레터를 친구들에게 전달해 주세요.
데이브 솔로몬(http://www.solsem.com).)과 함께 "Inside Windows 2000, 제3판"을 공동 작성 중임을 발표하게 되어 기쁩니다. Windows NT internals에 관심이 있다면 Dave의 "Inside Windows NT, 제2판"(Microsoft Press)을 읽으셨을 것입니다. Windows 2000의 출시는 NT 커널과 주변 구성 요소에 많은 변경 내용을 가져왔습니다. 일부는 크고 일부는 작았으며 이러한 변경 내용은 Dave의 책에 개정판이 필요함을 의미합니다.
많은 의미에서 Dave와 저는 Microsoft가 NT 5.0 베타 1에서 Windows 2000 빌드 2195를 통해 Windows 2000에 도입한 변경 내용을 따라가면서 지난 3년 동안 "Inside Windows 2000"에서 독립적으로 작업해 왔습니다. . 사실 나는 얼마 동안 내 "Windows NT Internals" 책을 집필하는 작업을 해왔지만, 그런 고품질 책의 후속 책에 대해 Dave와 협력하고 Windows 2000 Internals에 대한 Microsoft의 공식 견해를 작성하는 데 도움을 줄 기회가 왔을 때, 나는 그것을 지나칠 수 없었다.
이 책을 함께 집필하기로 한 우리의 결정은 꽤 최근에 이루어졌기 때문에 지난 몇 달 동안 우리의 연구, 메모 및 기사를 병합했습니다. 공동 집필과는 전혀 무관한 이유로 우리는 코네티컷의 외딴 구석에서 서로 단 20분 거리에 살고 있습니다. 우리의 지리적 근접성 덕분에 서로의 집에서 번갈아 가며 작업할 수 있었고 최근에는 Windows 2000의 내부 작동에 대한 모호한 세부 사항을 조사하고 토론하는 데 밤늦게까지 많은 시간을 보냈습니다. http://www.sysinternals.com/inspic.jpg.에 있는 Dave와 제가 그의 집에서 일하는 사진을 볼 수 있습니다.
우리 파트너십의 특이한 점은 Dave가 Windows 2000 소스 코드에 완전히 액세스할 수 있는 반면 나는 그렇지 않다는 것입니다(Device Driver Kit 및 Installable File System Kit에서 공개적으로 사용할 수 있는 것 외에는 Windows 소스 코드에 액세스할 수 없었습니다). Dave는 소스 코드 파일을 살펴보며 상황을 파악하고, 저는 사용자 지정 디스어셈블러에서 생성된 목록을 분석하고 NuMega의 SoftICE 커널 모드 디버거를 사용하여 라이브 시스템에서 Windows 2000의 내부를 탐색합니다. 결과적으로 우리는 각자 고유한 관점을 테이블에 제시하고 어려운 질문에 함께 답변하기 위해 각자의 리소스를 공동으로 적용한 경우가 한 번 이상 있습니다.
우리는 Windows 2000 변경 사항을 반영하기 위해 원본 책을 업데이트할 뿐만 아니라 몇 가지 새로운 장을 포함하여 30% 이상의 새로운 콘텐츠를 추가하고 있습니다. 새 책에서 소개하는 주제에는 부팅, 종료, 크래시, 저장소 관리, 서비스 내부, 레지스트리 내부 및 WMI가 포함됩니다. 이 개정판에는 SysInternals 웹 사이트의 스냅샷이 포함된 CD-ROM과 이 책을 위해 특별히 작성한 6개의 도구도 함께 제공됩니다. 도구 중 하나인 LiveKd를 사용하면 라이브 시스템에서 i386kd 커널 디버거를 실행할 수 있으므로 번거로운 직렬 케이블과 여러 대의 컴퓨터 없이 커널 내부를 쉽게 탐색할 수 있습니다. 의심할 여지 없이 이 책은 이전 책의 이미 견고한 토대에 중요한 기술 정보와 통찰력을 더합니다.
책은 언제 구할 수 있나요? Dave와 나는 Windows 2000 커널 개발자로부터 최종 기술 리뷰 의견을 듣기 위해 4월 4일 주에 Redmond로 향할 예정이며 Microsoft Press는 이 책이 7월에 출시될 것이라고 말했습니다. 물론 뉴스레터에 최신 정보를 계속 게시하겠습니다.
감사합니다!
-Mark
SYSTEMS INTERNALS의 새로운 소식
PSKILL V1.03, PSLIST V1.12
PsList는 로컬 또는 원격 시스템의 활성 프로세스에 대한 자세한 정보를 볼 수 있는 유틸리티이며 PsKill을 사용하면 로컬 또는 원격 시스템에서 프로세스를 종료할 수 있습니다. 이러한 유틸리티에는 "\\computer
" 형식으로 선택적 컴퓨터 이름을 지정할 수 있는 유사한 명령줄 구문이 있습니다. 컴퓨터 이름과 함께 사용자 이름을 포함하면 도구를 사용하여 도구를 실행하는 사용자 계정이 아닌 다른 사용자 계정으로 지정된 컴퓨터에 로그온할 수 있습니다. 이러한 최신 버전은 다른 사람 앞에서 암호를 실행하고 암호를 노출하고 싶지 않은 환경에서 암호를 입력할 수 있는 대체 방법을 제공합니다. 이제 옵션으로 컴퓨터 계정을 포함하고 암호를 생략하면 암호를 입력하라는 메시지가 표시되고 입력 내용이 화면에 표시되지 않습니다.
http://www.sysinternals.com/pskill.htm.에서 PsKill v1.03 다운로드
http://www.sysinternals.com/pslist.htm.에서 PsList v1.12 다운로드
JUNCTION V1.0
마침내 Windows 2000 NTFS 연결 형태의 기호 링크가 Windows에 등장했습니다. 정션은 디렉터리 기호 링크이며 Windows 2000 Resource Kit에는 정션을 만들고 삭제할 수 있는 링크 도구가 포함되어 있습니다. 불행하게도 기본 Windows 2000 설치에는 정션 생성을 위한 도구가 포함되어 있지 않으며 Platform SDK 설명서에는 재분석 지점이 적절하게 문서화되어 있지 않습니다. 이러한 결함으로 인해 접합을 만들 수 있을 뿐만 아니라 파일을 쿼리하고 재분석 지점이 있는 경우 해당 정보를 표시할 수 있는 도구인 Junction을 구현하게 되었습니다. 자체 재분석 지점 도구를 구현하려는 개발자를 돕기 위해 전체 소스 코드를 Junction에 게시했습니다. junction과 Windows 2000이 이를 구현하는 방법에 대한 자세한 내용은 뉴스레터 뒷부분의 재분석 지점 섹션을 참조하세요.
http://www.sysinternals.com/misc.htm.에서 전체 소스 코드와 함께 Junction v1.0을 다운로드하세요.
ELOGLIST V1.0
Windows 2000 리소스 키트에는 로컬 또는 원격 컴퓨터의 이벤트 로그에서 레코드를 덤프할 수 있는 ELogDump라는 도구가 포함되어 있습니다. ELogList는 도구를 실행 중인 계정이 아닌 다른 계정에서 컴퓨터의 이벤트 로그에 액세스할 수 있도록 선택적 계정 이름과 암호를 지정할 수 있는 ElogDump 클론입니다. ElogList는 배치 파일에서 이벤트 로그를 덤프하거나 기록 유지 또는 분석을 위해 스프레드시트로 가져올 수 있는 텍스트 파일로 이벤트 로그 레코드를 캡처하는 데 유용합니다.
http://www.sysinternals.com/eloglist.htm.에서 ElogList v1.0 다운로드
NTFROB V1.6A
NTFrob은 시스템 제어판 애플릿의 성능 탭에서 허용하는 것보다 Windows NT 스케줄러가 스레드에 할당하는 전경 및 배경 양자(회전)에 대해 더 많은 제어를 제공하는 애플릿입니다. 더 짧은 양자를 사용하면 대화형 애플리케이션의 응답성을 개선할 수 있는 반면, 더 긴 양자는 장기 실행 서버 워크로드에 더 적합합니다. NTFrob은 최신 릴리스인 버전 1.6a를 통해 새로운 서비스 팩과 계속 보조를 맞추고 있습니다. 버전 1.6a는 서비스 팩 6을 제외하고 서비스 팩 6a까지 NT 4.0의 모든 릴리스 버전에서 작동합니다(Microsoft는 중요한 버그 때문에 릴리스 직후 서비스 팩 6을 철회했습니다). Win2K에서 작동하는 NTFrob 버전이 곧 출시될 예정입니다.
http://www.sysinternals.com/ntfrob.htm.에서 NTFrob v1.6a 다운로드
GETSID V1.1
복제가 롤아웃 부담을 덜어주는 환경을 관리하는 경우 GetSid에 관심을 가질 것입니다. GetSid는 같은 이름의 Windows NT 리소스 키트 도구와 비슷하지만 SysInternals GetSid를 사용하면 사용자 계정뿐 아니라 컴퓨터에 대한 SID도 얻을 수 있습니다. GetSid는 클라이언트 소프트웨어를 설치할 필요 없이 네트워크에서 작동하기 때문에 GetSid를 사용하여 네트워크의 컴퓨터가 복제에 수반되는 중복 SID 문제를 겪지 않는지 쉽게 확인할 수 있습니다.
http://www.sysinternals.com/misc.htm.에서 GetSid v1.1 다운로드
http://www.sysinternals.com/newsid.htm.에서 중복 SID 문제에 대해 알아보세요.
REGMON V4.24, FILEMON V4.28
파일 또는 레지스트리 활동을 수행하는 프로세스의 이름을 표시하는 것 외에도 Regmon 및 Filemon에 대한 이러한 업데이트는 프로세스 식별자도 표시합니다. 이 향상된 기능은 이름이 같은 여러 프로세스 간에 파일 및 레지스트리 액세스를 구별하는 데 도움이 됩니다.
이 버전에 있는 또 다른 개선 사항을 통해 원격 Win2K 터미널 서비스 세션(콘솔과 반대)에서 Regmon 및 Filemon을 실행할 수 있습니다. 애플리케이션은 GUI가 운영 체제 버전 번호를 확인하고 Win2K에서 실행 중인 경우 드라이버 구성 요소의 장치 개체를 열 때 CreateFile을 호출할 때 사용하는 이름에 "\\.\Global\
" 접두사를 지정하기 때문에 이러한 지원을 얻습니다. 터미널 서비스 환경에서 디바이스 드라이버가 개체에 할당하는 이름은 기본적으로 원격 세션에 표시되지 않는 네임스페이스인 전역(콘솔) 네임스페이스에 저장됩니다. 원격 세션에는 각각 로컬 네임스페이스가 있습니다. "Global" 접두사는 Win2K 개체 관리자에게 개체 관리자가 조회가 시작된 세션의 네임스페이스가 아니라 전역 네임스페이스에서 이름 조회를 수행해야 함을 나타냅니다.
http://www.sysinternals.com/regmon.htm.에서 Regmon v4.24 다운로드
http://www.sysinternals.com/filemon.htm.에서 Filemon v4.28 다운로드
AUTORUNS V1.0
일반적인 구성이 있는 경우 시스템을 부팅하고 탐색기와 같은 다양한 구성 요소에 로그인할 때마다 모호한 레지스트리 키와 폴더를 살펴보고 여기에 참조된 프로그램을 자동으로 실행합니다. David Solomon은 "Windows 2000 Internals" 세미나(http://www.solsem.com))에서 자동 실행 파일이 지정된 모든 위치의 목록을 제시하고 Bryce Cogswell이 목록을 가져와 해당 내용을 볼 수 있는 프로그램인 AutoRuns를 작성했습니다. 자신도 모르는 사이에 실행되는 숨겨진 프로그램에 분명 크게 놀랄 것입니다.
http://www.sysinternals.com/misc.htm.에서 자동 실행 v1.0 다운로드
HANDLEEX V2.23
HandleEx의 최신 릴리스에는 위쪽 보기와 아래쪽 보기 사이를 Ctrl-Tab하는 기능과 같은 여러 가지 새로운 사용자 인터페이스 사용성 향상 기능이 추가되었습니다. 그러나 더 중요한 것은 HandleEx가 이제 Win2K 보안 편집기 대화 상자 인터페이스와 통합되어 프로세스가 열었던 메모리 매핑 파일을 보여주고 열린 핸들에 대해 허가된 액세스 마스크를 표시한다는 것입니다.
HandleEx를 핸들 기반 보기로 전환하면 프로세스가 핸들을 통해 연 파일을 표시합니다. DLL 보기에서 HandleEx는 프로세스가 모듈로 로드한 파일을 표시하고 메모리 매핑 파일 지원이 추가된 HandleEx는 Win32 메모리 매핑 파일 API를 통해 프로세스가 매핑한 파일을 나열합니다. WinNT 및 Win2K에서는 프로세스가 매핑된 파일을 삭제할 수 없으므로 HandleEx의 메모리 매핑된 파일 지원을 통해 미해결 매핑으로 인해 어떤 프로세스가 파일 삭제를 방해하는지 확인할 수 있습니다.
http://www.sysinternals.com/handleex.htm.에서 HandleEx v2.23 다운로드
NT 4 ACL 편집기
보안 편집기와 관련하여 Microsoft는 최신 버전의 Platform SDK에서 새로운 Win2K 보안 편집기 대화 상자 API를 문서화합니다. 그러나 NT 4 편집기의 API는 항상 문서화되지 않았으며 그대로 남아 있습니다. NT 4 편집기는 Regedt32에서 레지스트리 키 권한을 편집하고 탐색기에서 NTFS 파일 권한을 편집할 때 사용하는 편집기입니다.
WinObj 도구에 개체 보안 편집 기능을 추가할 때 NT 4 보안 편집기 인터페이스를 결정했고 동일한 인터페이스를 사용하여 HandleEx에 보안 편집을 추가했습니다. 나는 마침내 당신이 자신의 애플리케이션의 NT 4 버전에 기본 보안 편집기 기능을 추가할 수 있도록 내 문서를 게시하기로 결정했습니다.
http://www.sysinternals.com/acledit.htm.에서 NT 4 ACL 편집기 문서를 다운로드하세요.
http://www.sysinternals.com/winobj.htm.에서 WinObj 다운로드
SYSINTERNALS 티셔츠
SysInternals에서 제공하는 기술 정보 및 유틸리티가 마음에 들면 SysInternals 티셔츠를 입고 세상을 보여주세요. 티셔츠는 면 100% Hanes Beef-T로 앞뒷면 모두 눈에 띄는 색상으로 인쇄되어 있으며 가격은 $14.95에 불과합니다. 또한 모든 판매의 5달러는 미국 암 협회에 기부됩니다.
http://www.sysinternals.com/tshirt.htm.에서 SysInternals 티셔츠 보기 및 주문
WWW.MICROSOFT.COM의 더 많은 SYSINTERNALS
사용자에게 SysInternals 도구를 소개하는 Microsoft 기술 자료 문서의 수가 계속 증가하고 있다는 사실을 자랑스럽게 생각합니다. 다음은 제가 찾아낸 최근 추가 목록입니다.
Q243583 PRB: Mib.bin으로 인해 Visual Studio 설치가 실패함 http://support.microsoft.com/support/kb/articles/Q243/5/83.ASP
이 문서에서는 Filemon을 사용하여 Visual Studio 설치 오류를 추적할 것을 권장합니다.Q242131 HOWTO: 파일이 열려 있는 프로세스 목록 표시 http://support.microsoft.com/support/kb/articles/Q242/1/31.ASP
Microsoft는 사용자에게 어떤 파일 프로세스가 열려 있는지 보여주는 유틸리티로 HandleEx를 가리킵니다.Q232060 HOWTO: MDAC 설정 문제 해결 가이드 http://support.microsoft.com/support/kb/articles/q232/0/60.asp
DLLView 및 HandleEx는 이 문서에서 주목을 받았습니다. 이 문서에서는 사용자가 MDAC를 다시 설치하기 전에 프로세스를 종료할 수 있도록 도구를 사용하여 Microsoft 데이터 액세스 구성 요소 DLL이 있는 프로세스를 찾는 방법을 설명합니다.Q245068 ERRMSG: 액세스가 거부되었습니다. 사용 권한이 없거나 파일이 사용 http://support.microsoft.com/support/kb/articles/q245/0/68.asp?lng=eng&중입니다. sa=allkb
NtHandle은 이 문서에서 다시 참조를 가져옵니다. 이 문서에서는 파일 삭제 오류가 발생할 때 사용 중인 파일이 있는 프로세스를 확인하는 방법을 알려줍니다.Q247957 샘플: DUPS.EXE를 사용하여 DLL 호환성 문제 해결 http://support.microsoft.com/support/kb/articles/q247/9/57.asp
이 문서에서는 DLL 버전 문제를 추적할 수 있는 도구로 ListDLL, DllView 및 HandleEx를 참조합니다.
SysInternals는 이러한 모든 새 KB 기사에서 다루어졌을 뿐만 아니라 지난 KB 기사에서 제시된 DUPS 유틸리티의 저자인 Rick Anderson은 자신의 MSDN 뉴스 기사 "The End of DLL Hell"에서 ListDLL을 언급합니다. Microsoft에서 온라인으로 문서를 볼 수 있습니다: http://www.msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/techart/DLLdanger1.htm. 이로 인해 ListDLL에 대한 관심이 높아져 Windows 9x로 포팅하게 되었고 버전 2.21은 Windows 9x, Windows NT 및 Windows 2000에서 작동합니다.
http://www.sysinternals.com/listdlls.htm.에서 ListDLLs v2.21 다운로드
3월/4월 내부 칼럼
Windows NT 및 Windows 2000 저장소 관리에 대한 "Internals" 칼럼은 Windows 2000 Magazine의 3월 및 4월호를 참조하세요. 시리즈의 첫 번째 부분에서는 NT 4 디스크 파티셔닝, 고급 볼륨 구성, 드라이브 문자 할당 및 장치 드라이버 스토리지 아키텍처에 대해 설명합니다.
2부에서는 새로운 스토리지 관리 장치 드라이버, 동적 디스크 분할, 재구성을 위해 재부팅할 필요가 없는 고급 볼륨 지원 및 Win2K의 드라이브 문자 할당 메커니즘을 포함하여 Win2K에 존재하는 스토리지 변경 사항을 다룹니다.
내부 정보
재분석 지점
어떤 이유에서인지 사람들은 항상 파일 시스템 트릭에 열광하며 Windows 2000에는 몇 가지 새로운 트릭이 포함되어 있습니다. Windows 2000 이전에는 모든 Microsoft 파일 시스템에 UNIX 사용자에게 친숙한 기능인 기호 링크가 없었습니다. 기호 링크를 사용하면 파일 시스템 네임스페이스의 다른 위치에서 다른 파일이나 디렉터리를 참조하는 파일이나 디렉터리를 만들 수 있습니다. 애플리케이션이 링크에 액세스하면 실제로 링크의 대상에 액세스합니다. 예를 들어 링크 C:\drivers
이 디렉터리 C:\winnt\system32\drivers
을(를) 참조하는 경우 파일 이름 C:\drivers\ntfs.sys
에 대한 참조는 C:\winnt\system32\drivers\ntfs.sys
(으)로 해석됩니다.
Windows 2000에 포함된 NTFS 버전인 NTFS 버전 5는 재분석 지점이라는 메커니즘을 지원합니다. 재분석 지점은 "태그" 및 해당 태그가 있는 재분석 지점 관리를 담당하는 드라이버가 정의한 정보를 포함하는 파일 또는 디렉터리와 연결된 데이터 블록입니다. Microsoft는 정션 및 탑재 지점 태그를 포함하여 몇 가지 기본 제공 태그를 정의합니다. NTFS가 파일 이름을 찾는 동안 재분석 지점을 만나면 조회를 중단하고 호출자에게 STATUS_REPARSE
코드를 반환합니다. 파일 시스템 필터 드라이버와 I/O 관리자는 해당 태그에 대한 재분석 코드를 감시하고 여러 방법 중 하나로 반응합니다. HSM(Hierarchical Storage Management) 재분석 지점은 HSM 하위 시스템이 원격 저장소(예: 테이프)로 이동한 파일을 나타내며, 예를 들어 원격 저장소 필터 드라이버(RsFilter.sys)는 원격 저장소에서 파일의 데이터를 투명하게 가져오고 재분석 지점을 지정하고 파일 조회 다시 시도를 허용합니다.
필터 드라이버는 열려 있는 파일의 이름을 변경할 수도 있습니다. 탑재 지점 태그는 볼륨 탑재 지점을 나타내며 이름 공간 내에서 볼륨을 함께 연결할 수 있도록 합니다. 따라서 C:
드라이브의 \projects
디렉터리에 프로젝트 문서가 포함된 볼륨을 탑재할 수 있습니다. 이렇게 하면 파일 시스템 데이터가 구성되고 DOS 스타일 드라이브 문자를 사용하지 않아도 됩니다.
정션은 탑재 지점과 유사하지만 디렉터리를 볼륨에 연결하는 대신 디렉터리를 다른 디렉터리에 연결합니다. NTFS의 기호 링크 지원입니다. 이 시점에서 Microsoft가 파일 기반 기호 링크를 포함하지 않은 이유가 궁금할 것입니다. 대답은 기호 링크가 기존 Win32 애플리케이션에 큰 피해를 줄 수 있다는 것입니다.
실제 기호 링크인 파일로 작업할 때 예기치 않은 결과를 초래하는 일반적인 애플리케이션 동작이 많이 있지만 링크를 인식하지 못하는 프로그램으로 기호 링크를 삭제하는 것이 간단한 예입니다. 여러 기호 링크가 참조하는 중앙 위치에 저장된 파일을 고려하세요. 링크 중 하나를 삭제하는 사용자는 아마도 파일 자체가 아닌 링크만 삭제하려고 할 것입니다. 그러나 프로그램이 기호 링크를 인식하지 못하는 경우 파일이 실제로 링크인지 감지하지 못하고 원하는 동작을 묻는 메시지를 표시합니다. 애플리케이션이 링크 대상이 있는 디렉터리 또는 기호 링크가 있는 디렉터리에 관련 파일을 저장해야 하는 링크를 통해 참조하는 파일과 관련된 파일을 생성할 때 문제가 더 심각해집니다.
Microsoft는 어려운 문제에 직면했으며, 내가 언급한 문제에 대한 해결 방법을 찾을 수 있더라도 중단될 훨씬 더 복잡한 파일 조작을 수행하는 애플리케이션이 있다고 확신합니다. 이러한 이유로 Windows에서 파일 기반 기호 링크를 볼 가능성은 거의 없습니다.
커널 핸들 테이블
Win2K 개체 관리자는 특정 유형의 장치 드라이버 성능을 향상시키는 새로운 유형의 핸들 테이블을 도입했습니다. 일부 드라이버는 사용자 프로세스의 보안 컨텍스트에서 실행되는 동안 시스템 개체에 대한 핸들을 열어야 합니다. 장치 드라이버는 개체를 열 때 보안 검사를 우회할 수 있으므로 권한이 없는 프로세스의 핸들 테이블에서 중요한 개체에 대한 핸들을 만들 때 발생하는 보안 허점을 방지하기 위한 조치를 취해야 합니다. 보안 문제를 피하는 NT 4 드라이버는 작업 항목을 시스템 프로세스 컨텍스트에서 실행되는 작업자 스레드에 대기시키거나 KeAttachProcess
API를 사용하여 시스템 프로세스의 핸들 테이블 및 주소 공간으로 전환해야 합니다. 이러한 대안은 특히 드라이버가 자주 수행해야 하는 경우 성능을 저하시킬 수 있습니다.
이 문제에 대한 Win2K의 솔루션은 드라이버가 개체를 열고 핸들을 얻을 때 OBJECT_ATTRIBUTES
구조에서 전달할 수 있는 새로운 플래그의 형태로 제공됩니다. 플래그는 DDK에 문서화되어 있지 않지만 NTDEF.H 헤더 파일에 OBJ_KERNEL_HANDLE
(으)로 정의되어 있습니다. 개체 관리자가 지정된 개체를 열고 호출자에게 반환할 핸들을 만들 때 이 플래그가 있는지 확인합니다. 그렇다면 현재 실행 중인 프로세스의 핸들 테이블 대신 `ObpKernelHandleTable이라는 핸들 테이블에 핸들을 생성합니다. 개체 관리자가 커널 핸들을 요청하는 호출자에게 반환하는 핸들에는 높은 비트가 설정되어 있으므로 모든 커널 핸들의 값은 0x80000000보다 큽니다.
개체 관리자가 핸들을 전달할 때마다(예: 핸들을 핸들의 기본 개체에 대한 포인터로 변환해야 하는 ObReferenceObjectByHandle
호출에서) 핸들 참조가 커널 모드 참조인지, 핸들의 상위 비트가 설정됩니다. 이러한 기준과 일치하는 참조의 경우 개체 관리자는 현재 실행 중인 프로세스의 핸들 테이블 대신 커널 핸들 테이블에서 핸들을 찾습니다. 따라서 보안 개체에 대한 커널 핸들을 참조하는 드라이버는 성능 저하 및 보안 구멍을 여는 것을 방지합니다.
하나 이상의 드라이버가 시작하지 못함
다음은 흥미로운 Windows NT/2K 퀴즈입니다. 부팅 중에 "하나 이상의 드라이버를 시작하지 못했습니다"라는 대화 상자가 표시되면 결정을 내리고 대화 상자를 표시하는 것은 서비스 제어 관리자(SCM)입니다.
SCM은 드라이버 시작 실패를 어떻게 알 수 있습니까? SCM은 초기화할 때 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
레지스트리 키를 검색하여 부팅 또는 시스템 시작 드라이버로 시작하도록 지정하는 시작 값이 있는 장치 드라이버를 찾습니다. 항목을 찾으면 개체 관리자 이름 공간을 열고 장치 드라이버의 이름이 \Drivers 디렉터리에 있는지 확인합니다. 장치 드라이버가 성공적으로 시작되면 I/O 관리자는 드라이버 개체를 \Drivers
디렉터리에 배치하므로 SCM이 이름을 찾을 수 없으면 드라이버가 성공적으로 시작되지 않았다고 가정합니다. WinObj를 사용하여 \Drivers
디렉터리의 내용을 볼 수 있습니다.
http://www.sysinternals.com/winobj.htm.에서 WinObj 다운로드
MICROSOFT NT 관련 특허
최근 소프트웨어 특허가 많은 주목을 받고 있습니다. 미국 특허청은 가장 명백한 "혁신"에도 특허를 부여하고 있으며 기업들은 자유주의적 특허 정책을 이용하여 핵심 기술을 독점적으로 사용하도록 제한하고 있습니다. Microsoft는 특허 게임에 익숙하지만 많은 사람들이 모르는 것은 Microsoft가 Windows NT로 개발한 몇 가지 핵심 아이디어에 대한 특허를 보유하고 있다는 사실입니다. 다음은 IBM의 Patent Server 웹 사이트에서 발견한 커널 관련 특허 목록입니다.
"서로 다른 큐 스레드로 완료 메시지를 처리하고 실행 가능한 스레드에 의한 완료 여부를 확인하여 실행 가능한 스레드가 요청한 비동기 파일 작업을 수행하는 시스템"
http://www.patents.ibm.com/details?pn=US05758184__이 특허는 완료 포트라고 하는 고급 NT 동기화 메커니즘의 기본 아이디어를 다룹니다. 완료 포트를 사용하면 프로세스가 다양한 개체에서 I/O를 효율적으로 대기하고 Windows NT/2000 스케줄러의 지원을 사용하여 완료 포트와 연결된 스레드가 다중 프로세서를 효과적으로 활용할 수 있습니다.
http://www.sysinternals.com/comport.htm.에서 완료 포트에 대해 자세히 알아보세요.
"개체 기반 컴퓨터 운영 체제에서 클라이언트 프로세스의 서버 가장"
http://www.patents.ibm.com/details?&p n10=US05187790가장은 서버가 클라이언트 대신 활동을 수행할 때 서버 스레드가 일시적으로 클라이언트 스레드의 보안 컨텍스트를 채택할 수 있도록 하는 Windows NT/2000 보안 모델의 강력한 기능입니다. 이를 통해 서버는 클라이언트의 보호된 개체에 액세스할 때 Windows NT/2000 보안 모델을 쉽게 이용할 수 있습니다. 다소 명확하지는 않지만 분산 보안에 대한 영리한 접근 방식이며 Microsoft는 이에 대한 특허를 소유하고 있습니다.
"개체 기반 컴퓨터 운영 체제에서의 대기 가능 개체 생성 시스템 및 방법"
http://www.patents.ibm.com/details?&p n10=US05057996"데이터 구조 개체 집합에 액세스하기 위한 서로 다른 개체 포인터가 있는 조건 개체 생성 시스템"
http://www.patents.ibm.com/details?&p n10=US05129083"개체 기반 컴퓨터 운영 체제에서의 개체 컨테이너 이송 시스템 및 방법"
http://www.patents.ibm.com/details?&p n10=US05129084"개체 기반 컴퓨터 운영 체제에서의 임시 개체 처리 시스템 및 방법"
http://www.patents.ibm.com/details?&p n10=US05136712"개체 기반 컴퓨터 운영 체제에서의 개체 전송 시스템 및 방법"
http://www.patents.ibm.com/details?&p n10=US05297283Windows NT/2000 개체 관리자는 UNIX 구현에 있는 가상 파일 시스템(VFS) 이름 공간과 다르지 않은 이름 공간을 구현합니다. 개체 관리자에 대해 Microsoft가 획득한 특허 중 일부는 실제로 개체 지향 디자인에 대한 특허처럼 보이고 일부는 겹치는 것처럼 보입니다. 그러나 저는 변리사가 아니기 때문에 제가 잘못 안 것일 수도 있습니다.
특허를 보면 David Cutler를 포함하여 여러 핵심 Windows NT 커널 개발자의 이름을 찾을 수 있습니다. 흥미롭게도 일부 특허는 NT 개발자가 VMS에서 작업할 때 MA Maynard의 Digital Equipment Corp에서 획득했지만 특허 프로세스가 너무 오래 걸려 특허에 워싱턴 레드몬드에 있는 것으로 나열됩니다.
출시 예정
티디몬
실시간으로 TCP 및 UDP 네트워크 활동을 보고 어떤 프로세스가 활동을 수행하고 있는지 알고 싶었던 적이 있습니까? SysInternals 모니터링 도구 키트에 추가된 강력한 TdiMon을 계속 지켜봐 주세요.
Systems Internals 뉴스레터를 읽어 주셔서 감사합니다.
발행일: 2000년 3월 27일 월요일 오후 7:09 ottoh