日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ReadProcessMemory可不是一個進程間通信的好方法

有時候我看到有人會使用 ReadProcessMemory 這個 API 來實現(xiàn)進程間通信,老實說吧,我覺得這不是一個明智的選擇,原因有如下幾條。

在金寨等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,營銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),金寨網(wǎng)站建設(shè)費用合理。

首先,你不能使用 ReadProcessMemory 來跨越安全上下文 (Security Contexts),至少你需要做一些額外的工作才能做到。如果用戶通過 “runas” 來使用另一個用戶身份來運行程序,則這兩個進程將不能通過 ReadProcessMemory 來進行進程間數(shù)據(jù)的傳輸。

我們可以通過調(diào)整進程的權(quán)限來實現(xiàn)這個功能,具體來說,就是對正在與之通信的進程的所有者授予 PROCESS_VM_READ 權(quán)限,但這樣會將安全的大門開的太大。使用該用戶標(biāo)識運行的任何進程都會讀取到共享的數(shù)據(jù),而不僅僅是要與之通信的進程。如果你正在與較低特權(quán)的進程進行通信,則只是將數(shù)據(jù)暴露給你感興趣的進程以外的較低特權(quán)的進程。

更重要的是,一旦授予了 PROCESS_VM_READ 權(quán)限,你就會將其授予您的整個進程。該進程不僅可以讀取你嘗試共享的數(shù)據(jù),還可以讀取映射到你的地址空間的任何其他內(nèi)容。它可以讀取所有全局變量,可以讀取堆,可以從堆棧中讀取變量。它甚至可以損壞堆棧的數(shù)據(jù)結(jié)構(gòu)!

什么?僅僅是授予讀取訪問權(quán)限就損壞堆棧?

如果進程將其堆棧增長到堆棧保護頁中,則未經(jīng)處理的異常篩選器將捕獲保護異常并擴展堆棧。但是,當(dāng)它發(fā)生在私有的“捕獲所有異?!碧幚沓绦颍ɡ?IsBadReadPtr 函數(shù)使用的處理程序)中時,它將私下處理,并且不會到達(dá)未處理的異常篩選器。結(jié)果,堆棧不會增長,不會創(chuàng)建新的堆棧保護頁面。當(dāng)堆棧正常增長到并超過過早提交的保護頁的點時,通常的堆棧保護異常現(xiàn)在是訪問沖突,導(dǎo)致線程死亡,并可能擴散到隨之而來的進程。

你可能認(rèn)為,可以捕獲堆棧訪問沖突并嘗試干凈地關(guān)閉線程,但由于多種原因,這是不可能的。首先,結(jié)構(gòu)化異常處理在遇到異常的線程堆棧上執(zhí)行。如果該線程具有損壞的堆棧,則無法調(diào)度該異常,因為異常篩選器想要在其上運行的堆棧不再可行。

即使你可以以某種方式在某種“緊急堆?!鄙线\行這些異常過濾器,但仍然無法解決問題。在異常點,線程可能處于任何中間d的代碼流。也許它是在堆管理器內(nèi)部,堆鎖持有,堆數(shù)據(jù)結(jié)構(gòu)處于不斷變化的狀態(tài)。為了使進程保持活動狀態(tài),需要使堆數(shù)據(jù)結(jié)構(gòu)保持一致并釋放堆鎖。但是你不知道該怎么做。

還有許多其他進程間通信機制可供使用。其中之一是匿名共享內(nèi)存,我?guī)啄昵坝懻撨^。匿名共享內(nèi)存仍然存在一個問題,即在與你與之通信的同一令牌下運行的任何進程都可以讀取共享內(nèi)存塊,但至少公開的范圍僅限于你希望明確想要共享的數(shù)據(jù)。

(從某種意義上說,沒有比這更好的了。你正在與之通信的進程一旦從你那里獲得數(shù)據(jù),就可以對數(shù)據(jù)做任何它想做的事情。即使你以某種方式安排了只有目標(biāo)進程可以訪問內(nèi)存,也沒有什么能阻止該目標(biāo)進程將其復(fù)制到共享內(nèi)存塊之外的某個地方,此時任何運行相同令牌的人都可以從目標(biāo)進程中讀取數(shù)據(jù)。)

總結(jié)

目前小僧僅僅使用到了共享內(nèi)存,慚愧慚愧。
什么郵槽管道剪貼板,我是一個都沒有聽說過。


本文名稱:ReadProcessMemory可不是一個進程間通信的好方法
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/dpgchdp.html