0x00 前言
在调试IE8的时候发现有两个进程,随便选了一个进程attach,发现无法跟踪崩溃堆栈。
0x01 LCIE
从Internet Explorer 8版本开始,浏览器引入了松耦合技术(Loosely-Coupled IS,LCIE)。
在LCIE模式下,IE浏览器总是有至少两个进程——浏览器框架管理器进程(除非以管理员模式运行IE,该进程总是运行在MediumIL级别下)和一个或多个浏览器标签页内容进程,这些标签页内容进程可以下列基本运行:
LowIL,访问保护模式网站/互联网站点
MediumIL,访问内联网/受信任的站点
HighIL,以管理员身份启动 IE
框架管理器进程"可见"的承载任何完整性级别的标签。如果用户从显示LowIL级别网页的标签页访问MediumIL级别的网页,框架管理器进程可以悄悄地将当前标签页的进程切换为另一个运行在不同级别的标签页进程。这个操作称为"虚拟标签页切换"。
IE框架和标签运行在独立的进程中,这样一个标签崩溃后就不会导致整个浏览器会话丢失了。
0x02 关闭多进程模式
IE团队在msdn的博客上指出可以通过注册表控制多进程模式的开关。创建一个DWORD类型变量TabProcGrowth :
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
TabProcGrowth 的3种值:
- TabProcGrowth = <不存在> IE8 默认是没有这个变量的,此时默认开启LCIE。
- TabProcGrowth = 0 表示关闭多进程模式,对调试很有用。
- TabProcGrowth = 1 表示开启多进程模式
0x03 影响版本
IE8 是2008年3月份发布的,此后的IE版本都带有ICIE的功能。
如IE10, IE11等
在Win10中,新的浏览器Edge是UWP程序,不能在直接attach调试,需要指定packagename, appid和parameter才能用windbg调试。
0x04 参考文献
https://blogs.msdn.microsoft.com/askie/2009/03/09/opening-a-new-tab-may-launch-a-new-process-with-internet-explorer-8-0/
https://blog.httpwatch.com/2009/04/07/seven-things-you-should-known-about-ie-8/
https://www.blackhat.com/docs/asia-14/materials/Yason/WP-Asia-14-Yason-Diving-Into-IE10s-Enhanced-Protected-Mode-Sandbox.pdf
https://r00tk1ts.github.io/2018/04/05/x41-浏览器安全白皮书笔记/
https://blog.csdn.net/m0_37921080/article/details/83097979