internet explorer - Why DWebBrowserEvents2::NewProcess() receives pWB2==NULL in second parameter -
this dispatch known dispid_newprocess.
if start new iwebbrowser2 cocreateinstance(clsid_internetexplorer), default start in protected mode (you can see in internet options | security | internet | enable protected mode). however, if navigate() url in "trusted sites" list, need open without protected mode. ie silently create new process, invalidate old iwebbrowser2 , create new iwebbrowser2. iwebbrowser2 becomes useless, problem.
however, ie supposed fire dispid_newprocess event, should have idispatch* new process in second parameter.
the problem pwb2 parameter contain null.
i have debugged ie, , found out parameter have null if protectedmode (low integrity) iwebbrowser2 becoming non-protectedmode (medium integrity) iwebbrowser2.
details:
the interesting code located in ieframe!cieframeauto::_handleprotectedmoderedirect(). call ieframe!isprotectedmodeprocess() , based on results call either fireevent_newprocess() pwb2 parameter explicitly set null, or fireevent_newprocess() pwb2 parameter containing value.
i believe reason security. otherwise start low integrity iwebbrowser2 low integrity application, navigate trusted url, , hold on medium-integrity iwebbrowser2, privilege escalation.
Comments
Post a Comment