[翻譯]LSP程式的分類
翻譯的太垃圾,不建議其它人閱讀本文。
Note:LSP現在已經不推薦使用。自windows8和windows Server2012開始,使用Windows Filtering Platform。
Winsock2 允許一種分層協議。分層協議是實現一種更高層級的通訊函式,根據下層的傳輸棧來實現資料的遠端交換。一個LSP使用的例子可能是為了安全,他增加一層協議到連線建立處理,以執行認證,並建立在加密方式的相互同意的安全層。這種安全協議通常會需要一個下層的傳輸協議,類似TCP或SPX的服務。由基提供商實現的術語基礎協議是指實現的協議如TCP或SPX,其能夠與遠端端點進行資料通訊的Winsock提供。這個分層協議術語被用來描述不可以單獨存在的協議。這些分層協議已經被安裝,稱為Winsock Layerd Service Provider。
一個LPS使用的例子是 客戶端安裝在Internet Secutity And Authentication Server中一部分的windows Firewall Client Service Provider。Microsoft Firewall Client Service Provider安裝在windows基礎協議TCP和UDP之上。一個在ISA FireWall Client軟體的 DLL變成一個winsock 的一個分層協議提供者,這樣所有winsock程式通訊都將經過他。這樣,ISA Firewall Client LSP可以攔截從客戶端到目標底層服務的 Winsock 函式的呼叫,然後去請求一個原始底層的服務。一個相似的LPS使用例子是Mrcrosoft Frefront Firewall Service和Theat Management Gateway的一部分,被安裝在客戶端上。
在LSP初始化的時候,LSP必須提供一系列SPI函式指標。這些函式將被在一般的分層處理中呼叫(其它的 LSP 或者ws2_32.dll)。
根據一個SPI函式的子集定義一個LSP類別。一個LSP實現和實際處理被這些函式執行。通過LSP的分類,和使用win socket的程式分類類似,他使得你可以在程式執行時有選擇的確定一個LSP是否被請求。
在windows vista之後,一個winsock lsp和程式分類的新的方法被提供,所以只有一定的lSP將會被載入。這就是增加這些特性的原因。
一個主要原因是, 一些關鍵的系統程式如:winlogon和lsass建立socket,但是這些程式不使用這些socket去在網路上傳輸。所有大部分的LSP不可以被這些程式載入。一些文件已經說明LSP會導致lsass.exe程式崩潰。如果lsass崩潰,系統就會強制關機。另個載入LSP的影響是一些程式從來不退出,當一個LSP安裝或移除,如果重啟電腦。
還有一些原因就是一些程程式不需要載入指定的LSP。例如,一些程式不需要載入含有加密功能的LSP,這樣會導致程式從這個系統到達另一個沒有安裝LSP的系統時出現問題。
最後,LSP分類可被用於另一些lSP去決定把自己的LSP安裝在哪裡。一些年,一些LSP開發者已經需要一個方法去知道一個LSP的行為是到底是怎樣。例如一個資料流想要在另一個LSP的上層來加密資料。當然,這種LSP分類方法不是十分安全,原因是他依賴於另一個與他相關的第三方LSP分類。
windows vista之後的LSP分類和其它安全機制被設計用來幫助保護使用者非故意 的安裝惡意的LSP。
LSP 分類:
在windows vista之後,一個LSP是根據與windows socket呼叫如何配合來分類的。一個LSP是一個唯一標識的一組winsock SPI函式呼叫。例如 一個http內容過濾的LSP應該被定義為一個資料篩查器(data inspector)(LSP_INSPECTOR 分類)。一個LSP_INSPECTOR分類的LSP將會檢測資料引數,但是之後不會修改這些資料。一個程式可以通過查詢一個LPS的分類和去選擇不載入指定LSP。
下面的表列出了LSP可用的分類
LSP_CRYPTO_COMPRESS 這種LSP是用於資料加密和可壓縮的
LSP_FIREWALL這種LSP是用於做防火牆的
LSP_LOCAL_CACHE 這種LSP是做本地快取的
LSP_INBOUND_MODIFY 這種LSP是用於修改進入資料的
LSP_INSPECTOR 這個程式LSP是用於檢查和過濾資料的
LSP_OUTBOUND_MODIFY 這種LSP是用於修改出站資料的
LSP_PROXY 這種LSP做為一種代理來重定向發包
LSP_REDIRECTOR 這LSP是用於網路重定向
LSP_SYSTEM 這類LSP可以被用於系統服務程式
一個LSP可以有多個分類,例如一個安全防火牆LSP可能包含LSP_INSPECTOR和LSP_FIREWALL兩種分類。
如果一個LSP沒有包含任意一個類別,則他被認為是所有其它類別的。這個lSP分類將不會被用於服務和系統程式。
Categorizing LSPs
下面是一些被用於 Categorrizing LSP的一些函式
為了categorize 一個lsp,WSCSetProviderInfo和WSCSetProviderinfo32被呼叫,他的引數是一個GUID標識這個lSP的隱藏入口 ,這些資訊類被設定用於LSP Protocol entry,設定標識用於修改這些函式的行為。
WCSGetProviderInfo和WSCGetProviderInfo32函式經常被用於提取一個LSP相關的資料類和資訊。
Categorizing Applications
下面的函式被用於categerizing 一個程式。
為了Categorize an application,WCSSetApplicationCategory function 被呼叫。他的引數有可執行檔案目錄,和程式命令列,這標識這個LSP是被被作用於這個程式例項。
判斷哪個 LSP被載入
LSP Categorization最後的部分是決定哪引LSP被會載入入哪個程式。當一個程式WINSOCK時,載入LSP時差將會作Application categories和LSP categories的比較。
如果一個程式沒有被categorized,允許所有LSP載入入這個程式
如果程式和LSP都被categorized,則必須具備以下條件:
在程式中至少有一個LSP Categories被指定。
Only categories specified in the application`s specified categories are specified in the LSPs categories. For example, if the application specifies a category it
If the LSP_SYSTEM category is present in the application`s category, it must be present in the LSP`s categories.
考慮如下例子:
foo.exe這個程式cateorized為LSP_SYSTEM + LSP_FIREWALL + LSP_CRYPTO_COMPRESS。這個程式bar.exe 的 categorize為LSP_FIREWALL + LSP_CRYPTO_COMPRESS。下面的4個LSP
- LSP1 has set a category of LSP_SYSTEM.
- LSP2 is not categories set, so its category is zero.
- LSP3 has set a category of LSP_FIREWALL.
- LSP4 has set categories of LSP_SYSTEM + LSP_FIREWALL + LSP_CRYPTO_COMPRESS + LSP_INSPECTOR
在這個例子中foo.exe將會只載入LSP2,bar.exe將會載入LSP3。
檢測Winsock配置是否被安裝
sdk包含一個winsock的程式例項,他演示瞭如何判定winsock transpot provider是否被安裝在當前電腦上。
C:Program FilesMicrosoft SDKsWindowsv7.0SamplesNetDswinsockLSP
這個例子顯示了安裝一個測試 的LSP。但是他可以被用於程式設計通訊winsock 的詳細資訊。可以列出所有當前包含winsock providers和layer service provider。用以下命令列執行這個例子
instlsp -p
會輸出安裝在本地計算機上的winsock provider和layerd service provider。輸出的catalog ID和字串名稱。
可以用如下命令列來收集winsock provider的詳細資訊。
instlsp -p -v
這個輸出將會列出一個 WSAPROTOCOL_INFO的結構資訊
可以下如下命令列列出本地的layerd service provider
instlsp -l
為了對應LSP結構執行以下命令列
instlsp -m
相關文章
- 人工翻譯的分類 安睿傑線上翻譯平臺
- 【翻譯】Delphi中類的逆向工程
- 多翻譯引擎的程式
- 程式設計師翻譯技術類書籍的總結程式設計師
- [翻譯]對PDF _CVE-2009-3459分析文章的翻譯
- opencv的Mat類詳解以及mannal翻譯OpenCV
- 程式設計=翻譯?程式設計
- Easy Translator語言翻譯類工具R語言
- 口譯翻譯類別及服務內容
- 【翻譯】c++類中“空成員”的優化C++優化
- 微軟機器翻譯系統:中-英翻譯水平可“與人類媲美”微軟
- oc-plugin-book 文件協作翻譯外掛(類似 LearnKu.com 的文件翻譯)Plugin
- Yurii談翻譯(五)怎樣翻譯更地道:so…that…的翻譯
- 人類阻擋不了谷歌翻譯了!谷歌
- Yurii談翻譯(九)怎樣翻譯更地道:冠詞a的翻譯
- Yurii談翻譯(十)怎樣翻譯更地道:最高階的翻譯
- 翻譯的未來:翻譯機器和譯後編譯編譯
- 程式翻譯新突破:UC伯克利提出樹到樹的程式翻譯神經網路神經網路
- AI一分鐘 | 騰訊將成立機器人實驗室;機器翻譯重大突破:中英翻譯已達人類水平AI機器人
- Yurii談翻譯(六)怎樣翻譯更地道:“as somebody said…”的翻譯AI
- Yurii談翻譯(十三)怎樣翻譯更地道:It is…that…句型諺語的翻譯
- Yurii談翻譯(十四)怎樣翻譯更地道:否定句的翻譯
- [譯]記一次Kotlin官方文件翻譯的PR(內聯類)Kotlin
- 【翻譯】 What is class diagram(什麼是類圖)?
- TypeScript 官方手冊翻譯計劃【十二】:類TypeScript
- C# 10分鐘完成百度翻譯(機器翻譯)——入門篇C#
- 第一部分翻譯
- 有趣的翻譯
- 痛苦的翻譯
- bert分類的程式碼
- Deep Learning Tutorial (翻譯) 之使用邏輯迴歸分類手寫數字MNIST邏輯迴歸
- 翻譯
- [翻譯]利用程式碼注入脫殼
- 如何完成中文翻譯日文線上翻譯
- Yurii談翻譯(四)怎樣翻譯更地道:翻譯如鋪路
- [翻譯]JavaScript的成本JavaScript
- Symbol 的作用[翻譯]Symbol
- Before的翻譯