IE 8 과 ActiveX 컨트롤 정성태책임컨설턴트 닷넷엑스퍼트 2
3 독자적인기술발전 IE 에서만가능한다양한기능들 Binary Behavior CSS Filters Browser Helper Object <OBJECT /> Web Band Toolbar, Explorer Bar,
4 협력및보안 타웹브라우저에서도구현가능 Web Slice Accelerators Search Suggestions 그리고, 기존기능의안정성향상 Site 전용 ActiveX 사용자전용 ActiveX 설치 LCIE (Loosely-coupled Internet Explorer)
5
6 Low Level / 보호모드인터넷영역로컬인트라넷영역제한된사이트영역 Medium Level 신뢰할수있는사이트영역 High Level 관리자계정으로실행 UAC 상위권한의코드가실행되기전확인절차
7 부모프로세스의 MIC 상속 - 암시적 Process 단위 시작할때결정, 불변작업관리자가재시작하는이유! 보호모드의 IE 에서관리자코드실행방법 App ID 를이용한 Surrogate DLL ( 구조적으로중개프로세스와동일 ) dllhost.exe 중개프로세스사용
8 Psexec - Low Level 로프로세스시작기능 icacls.exe 파일의 MIC 레벨을지정 Process Explorer MIC 레벨확인보호모드디버깅 Visual Studio 2008 Web Browser Debugger 일반 Windows 프로그램을 Low Level 로디버깅
9
10 탭과프레임의프로세스분리
11 IEFrame / Frame Tab
12 IE 7 과비교 iexplore.exe 재구성 iexplore.exe 에서보호모드에대한중개역할을통합 ( 기존 IE 7 의 ieuser.exe 삭제 ) 프레임역할세션역할 탭윈도우는프레임윈도우의자식 iexplore.exe 프로세스에서활성 Low / Medium MIC 로활성 하나의윈도우에서인터넷 / 신뢰할수있는사이트공존
13 확장 ActiveX 의프로세스종속 프레임윈도우에서활성 IE 전용 Explorer Bar & Command Bar Favorites Bar Feeds, History 탭윈도우에서활성툴바버튼이미지만 Command Bar 에속하고코드자체는탭윈도우프로세스에서실행 Explorer Bar (WebBand / InfoBand) Research 등외부확장밴드
14 프로세스생성규칙 시스템메모리에의존 512MB: 같은세션의탭윈도우가하나의프로세스 4GB: 프로세스에고르게분포 New Window 메뉴로생성되는탭또는윈도우가생성될프로세스를예측할수없다. New Session 은새로운중개프로세스를생성
15 XP 와비스타의차이 Windows Vista / 2008 Iexplore.exe (UI 프레임 / 중개프로세스 ) iexplore.exe ( 기본 Low MIC 프로세스 ) iexplore.exe (UI 프레임 / 중개프로세스 ) 첫번째세션윈도우 iexplore.exe ( 기본 Low MIC 프로세스 ) iexplore.exe (UI 프레임 / 중개프로세스 ) 두번째세션윈도우 iexplore.exe ( 기본 Low MIC 프로세스 ) Windows XP/2003 iexplore.exe (UI 프레임프로세스 ) iexplore.exe ( 탭프로세스 ) iexplore.exe (UI 프레임프로세스 ) 첫번째세션윈도우 iexplore.exe ( 탭프로세스 ) iexplore.exe (UI 프레임프로세스 ) 두번째세션윈도우 iexplore.exe ( 탭프로세스 )
16
17 INPUT 쿠키탭의 URL 과순서방문로그
18 탭윈도우가비정상종료한경우탭이속한프로세스의모든탭다시시작 프레임윈도우가비정상종료한경우프레임에속해있던모든탭윈도우복원 비정상종료이후, 탭별로프로세스생성범위 : 세션단위, 세션 == 프레임윈도우
19
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
IWebBrowser2::Navigate2 XP 에서와같은제어가능 Medium 프로세스 호출 보호모드 Medium-Level Client App 신뢰할수있는사이트 Low-Level 인터넷영역사이트
VARIANT vtempty; vtempty.vt = VT_EMPTY; VARIANT vturl; vturl.vt = VT_BSTR; vturl.bstrval = ::SysAllocString(L [http:// 인터넷영역웹사이트주소 ] ); HRESULT hr; CComPtr<IWebBrowser2> 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);
Binary Behavior 표준문서양식을위한구문지원 DllRegisterServer 에서등록 API 호출 IEIsXMLNSRegistered IERegisterXMLNS
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ie8sampleax> <head> </head> <body> <object id="mycontrol" classid="clsid: " /> <?IMPORT NAMESPACE="IE8SampleAx" IMPLEMENTATION="#myControl" /> <IE8SampleAx:MYTAG></IE8SampleAx:MYTAG> </body> </html>
<HTML> <HEAD /> <BODY> <MYTAG xmlns="http://www.sysnet.pe.kr/ie8sample"></mytag> </BODY> </HTML>
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"http://www.sysnet.pe.kr/ie8sample"; GUID behaviorguid = CLSID_TestBehavior; HRESULT registered = IEIsXMLNSRegisteredFunc(wchNamespace, &behaviorguid); if (registered!= S_OK) { hr = IERegisterXMLNSFunc(wchNamespace, CLSID_TestBehavior, FALSE); } } }
29 정리 호환성포인트 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.