2 IE 8 과 ActiveX 컨트롤 정 성태 책임 컨설턴트 ㈜ 닷넷 엑스퍼트
3 MIC ( 신뢰등급 : Mandatory Integrity Control) 보호 모드와 MIC 의 관계 LCIE (Loosely-coupled Internet Explorer) ActiveX 설치 기능 향상
4 IE 에서만 가능한 다양한 기능들 Binary Behavior CSS Filters Browser Helper Object Web Band – Toolbar, Explorer Bar, …
5 타 웹 브라우저에서도 구현 가능 Web Slice Accelerators Search Suggestions … 그리고, 기존 기능의 안정성 향상 Site 전용 ActiveX 사용자 전용 ActiveX 설치 LCIE (Loosely-coupled Internet Explorer)
6
7 Low Level / 보호 모드 인터넷 영역 로컬 인트라넷 영역 제한된 사이트 영역 Medium Level – 신뢰할 수 있는 사이트 영역 High Level – 관리자 계정으로 실행 UAC – 상위 권한의 코드가 실행되기 전 확인 절차
8 부모 프로세스의 MIC 상속 - 암시적 Process 단위 – 시작할 때 결정, 불변 작업 관리자가 재 시작하는 이유 ! 보호 모드의 IE 에서 관리자 코드 실행 방법 App ID 를 이용한 Surrogate DLL ( 구조적으로 중개 프로세스와 동일 ) – dllhost.exe 중개 프로세스 사용
9 Psexec - Low Level 로 프로세스 시작 기능 icacls.exe – 파일의 MIC 레벨을 지정 / 확인 Process Explorer – MIC 레벨 확인 보호 모드 디버깅 Visual Studio 2008 – Web Browser Debugger 일반 Windows 프로그램을 Low Level 로 디버깅
10
11
12
13 iexplore.exe 재구성 ( 중개 프로세스 ) iexplore.exe 에서 보호 모드에 대한 중개역할을 통합 ( 기존 IE 7 의 ieuser.exe 삭제 ) 프레임 역할 세션 역할 탭 윈도우는 프레임 윈도우의 자식 iexplore.exe 프로세스에서 활성 Low / Medium MIC 로 활성 하나의 윈도우에서 인터넷 / 신뢰할 수 있는 사이트 공존
14 프레임 윈도우에서 활성 IE 전용 Explorer Bar & Command Bar Favorites Bar Feeds, History… 탭 윈도우에서 활성 툴바 버튼 이미지만 Command Bar 에 속하고 코드 자체는 탭 윈도우 프로세스에서 실행 Explorer Bar (WebBand / InfoBand) Research … 등 외부 확장 밴드
15 시스템 메모리에 의존 512MB: 같은 세션의 탭 윈도우가 * 하나의 프로세스 4GB: 프로세스에 고르게 분포 “New Window” 메뉴로 생성되는 탭 또는 윈도우가 생성될 프로세스를 ** 예측할 수 없다. “New Session” 은 새로운 중개 / 프레임 프로세스를 생성
16 iexplore.exe (UI 프레임 / 중개 프로세스 ) iexplore.exe ( 기본 Low MIC 프로세스 ) iexplore.exe (UI 프레임 / 중개 프로세스 ) 첫 번째 세션 윈도우 iexplore.exe ( 기본 Low MIC 프로세스 ) iexplore.exe (UI 프레임 / 중개 프로세스 ) 두 번째 세션 윈도우 iexplore.exe ( 기본 Low MIC 프로세스 ) iexplore.exe (UI 프레임 프로세스 ) iexplore.exe ( 탭 프로세스 ) iexplore.exe (UI 프레임 프로세스 ) 첫 번째 세션 윈도우 iexplore.exe ( 탭 프로세스 ) iexplore.exe (UI 프레임 프로세스 ) 두 번째 세션 윈도우 iexplore.exe ( 탭 프로세스 ) Windows Vista / 2008 Windows XP/2003
17
18 INPUT 쿠키 탭의 URL 과 순서 방문 로그
19 탭 윈도우가 비정상 종료한 경우 탭이 속한 프로세스의 모든 탭 다시 시작 프레임 윈도우가 비정상 종료한 경우 프레임에 속해 있던 모든 탭 윈도우 복원 비정상 종료 이후, 탭 별로 프로세스 생성 범위 : 세션 단위, 세션 == 프레임 윈도우
20
HKCU 레지스트리에 등록 비 - 관리자 계정에서도 설치 가능
[version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] IE8SampleAx.dll=IE8SampleAx.dll [Deployment] InstallScope=user ; user|machine 동시 지원 가능 [IE8SampleAx.dll] file-win32-x86=thiscab clsid={…} FileVersion=… RegisterServer=yes DestDir= RedirectToHKCU=yes
XP 에서와 같은 제어 가능 Medium 프로세스 호출 보호 모드 Medium-Level Low-Level 신뢰할 수 있는 사이트 Client App 인터넷 영역 사이트
VARIANT vtEmpty; vtEmpty.vt = VT_EMPTY; VARIANT vtUrl; vtUrl.vt = VT_BSTR; vtUrl.bstrVal = ::SysAllocString(L“[ 인터넷 영역 웹 사이트 주소 ]”); HRESULT hr; CComPtr pWebBrowser2; hr = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2,(LPVOID*)&pWebBrowser2); pWebBrowser2->Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty); pWebBrowser2->put_Visible(VARIANT_TRUE);
표준 문서 양식을 위한 구문 지원 DllRegisterServer 에서 등록 API 호출 IEIsXMLNSRegistered IERegisterXMLNS
HRESULT hr = _AtlModule.DllRegisterServer(); IEISXMLNSREGISTEREDFN *IEIsXMLNSRegisteredFunc = NULL; IEREGISTERXMLNSFN *IERegisterXMLNSFunc = NULL; if (hr == S_OK) { HMODULE hModule = ::LoadLibrary(L"mshtml.dll"); if (hModule != NULL) { IEIsXMLNSRegisteredFunc = (IEISXMLNSREGISTEREDFN *)::GetProcAddress(hModule, "IEIsXMLNSRegistered"); IERegisterXMLNSFunc = (IEREGISTERXMLNSFN *)::GetProcAddress(hModule, "IERegisterXMLNS"); } … [ 다음 페이지에 ] …
… [ 이전 페이지에서 계속 ] … if (IEIsXMLNSRegisteredFunc != NULL) { wchar_t *wchNamespace = L" GUID behaviorGuid = CLSID_TestBehavior; HRESULT registered = IEIsXMLNSRegisteredFunc(wchNamespace, &behaviorGuid); if (registered != S_OK) { hr = IERegisterXMLNSFunc(wchNamespace, CLSID_TestBehavior, FALSE); }
30 호환성 포인트 LCIE ASR DEP/NX 설치 기능 향상 Site 전용 ActiveX 사용자 전용 ActiveX 설치
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.