解決外掛程式在IE增強保護模式下無法執行的問題

2021-06-26 15:44:59 字數 2836 閱讀 7869

這篇部落格本來去年底就應該寫的了,但是,可能因為懶,或者就是覺得內容不太重要,所以,一直沒有寫。

epm是在

ie10

中出現的,是以前的保護模式的加強版,提供「深度的保護」,以防止攻擊者安裝惡意軟體,或者修改系統設定。保護模式基於最小許可權的原則——通過限制

internet explorer

所擁有的能力,使得入侵**所獲得的能力也相應地受到了限制。當然,這也會讓大部分正常的外掛程式不能使用。

epm在

ie10

中是預設關閉的,而在

ie11

中則預設開啟(後來又變回關閉了)。在程式中可以通過

ieisprotectedmodeprocess(bool *pval)

來判斷ie

是否啟用了

emp。

epm開啟後,會將

ie執行在

中,以限制其能力。所以在

ie11

中,外掛程式會因為許可權原因,無法正常使用。

中。在外掛程式註冊的方法dllregisterserver中新增下面**即可:

icatregister* pcr = null ;

hr = cocreateinstance(clsid_stdcomponentcategoriesmgr, null, clsctx_inproc_server, iid_icatregister, (void**)&pcr);

catid rgcatid[1] ;

hr = pcr->registerclassimplcategories(clsid_ativex, 1, rgcatid);//clsid_ativex為外掛程式的clsid

其作用是:在登錄檔中,新增

hkey_classes_root\clsid\(外掛程式的

clsid)\implemented categories\

,表示將這個控制項新增到

。完成上述操作後,發現外掛程式的部分功能恢復正常了,不過使用rpc

與系統服務通訊的模組依舊出問題。接下來,需要建立

com元件(

exe型別,假設為

rpcbroker.exe

)來充當

rpc通訊的橋梁,也就是將呼叫

rpc的方法,移植到

rpcbroker.exe

中執行(如

ndrclientcall2

方法)。這裡主要比較糾結的地方,就是引數的傳遞,因為有些引數型別,

atl中並不支援。

建立com

元件 文中是建立的com

是dll

型別的,我們應該選擇可執行檔案(

exe)型別。

com元件需要註冊才能使用,因此要在外掛程式的dllregisterserver中

註冊com

元件:rpcbroker.exe /regserver。另外

解除安裝com

元件:rpcbroker.exe /unregserver

使用rpcbroker.exe

後,rpc

通訊也正常了。不過,在

ie中啟用控制項的時候,會出現下面的警告。

這是由於rpcbroker.exe

打破了的限制,提高了外掛程式的許可權。所以我們需要在登錄檔項

(hklm\software\microsoft\internet explorer\low rights\elevationpolicy)

中配置rpcbroker.exe

的等資訊。其中

policy

有四個數值,我們需要將其設定為3。

關於emp

的詳細介紹: 

註冊部分**:

static void shellprocess(lpstr pszfile, lpstr pszparameters)

; shexecinfo.cbsize = sizeof(shellexecuteinfo);

shexecinfo.fmask = see_mask_nocloseprocess;

shexecinfo.hwnd = null;

shexecinfo.lpverb = null;

shexecinfo.lpfile = pszfile;

shexecinfo.lpparameters = pszparameters;

shexecinfo.lpdirectory = null;

shexecinfo.nshow = sw_hide;

shellexecuteex(&shexecinfo);

waitforsingleobject(shexecinfo.hprocess, infinite);

}void registerbroker()

",0,null,reg_option_non_volatile,key_all_access,null,&hsubkey,null))

regclosekey(hkey); }

}

補充:瀏覽器外掛程式結合com元件的使用方式,可以突破較多的限制。比如在win8系統中,外掛程式載入驅動程式出現access denied的問題~

在Vista下UAC和IE7保護模式出現的背景

在vista下uac和ie7保護模式出現的背景 uac的背景 微軟從win2k 開始提出了使用者許可權的問題。建議使用者不要以 admin 許可權的使用者登入,防止遭到黑客和病毒的入侵,使用者一 般都以admin 使用者登入更改設定後登出切換到普通使用者登入,這樣使用者顯然覺得比較麻煩,uac就是為...

保護模式下的分段記憶體定址

段選擇符 段暫存器中的值 32位彙編中16位段暫存器 cs ds es ss fs gs 中不再存放段基址,而是段描述符在段描述符表中的索引值,d3 d15位是索引值,d0 d1位是請求特權級 rpl 用於特權檢查,d2位是描述符表引用指示位ti,ti 0指 示從全域性描述表gdt中讀取描述符,ti...

redis保護模式下 啟動遠端連線

最開始我用 redis server usr local src redis 4.0.14 redis.conf 在103上啟動redis,下圖是用102去連線103操作報如下錯誤提示。說是在保護模式下,要設定密碼 或者不設定保護模式。後面所有的操作就是為了在保護模式的前提下執行的。修改103中的r...