999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于API Hook技術的虛擬串口的實現

2010-05-11 03:48:36劉洋吳熠銘黃可嘉林創魯
自動化與信息工程 2010年3期
關鍵詞:設備系統

劉洋 吳熠銘 黃可嘉 林創魯

1 引言

串行通信接口(簡稱串口),按電氣標準及協議可分為RS-232-C、RS-422與RS-485,無論那種標準,都只對接口的電氣特性做出規定,其軟件協議都是一致的。串口作為工業控制領域最常用的一種通訊接口,自1970年標準化至今已近40年時間[1]。然而隨著無線技術的日益發展,無線傳輸技術應用越來越被各行各業所接受。無線監控作為一個特殊使用方式也逐漸被廣大用戶看好,其安裝方便、靈活性強、性價比高等特性,使更多行業的監控系統樂于采用無線監控方式,用于建立被監控點和監控中心之間的連接。無線監控技術已經在現代化住宅小區、交通、運輸、水利、航運、治安、消防等領域得到了廣泛的應用。但現有的很多成熟應用系統依然使用RS232方式,有迫切的需要把它們從傳統的有線方式遷移到無線監控領域,虛擬串口于是應運而生。

2 虛擬串口

串口通訊,不論RS-232-C、RS-422或是RS-485標準,其通訊協議都是一樣的。對于 Windows系統而言,都叫做COM口。虛擬串口并不是物理上存在的串口,而是使用虛擬手段模擬出來的,具備物理串口全部的邏輯特征。使用戶程序在操作上無法判斷所使用的究竟是物理串口還是虛擬串口。

2.1 常規的虛擬串口

常規的虛擬串口(如圖1所示)是通過虛擬驅動程序來實現的。它是在操作系統上利用虛擬I/O技術建立虛擬串口設備來模擬一個串口。它的特點是全局性和便捷性。但其缺點也相當明顯,就是穩定性欠佳。

圖1 普通虛擬串口結構

2.2 API Hook鉤子技術

API Hook(鉤子)技術是消息處理中的一個環節,用于監控消息在系統中的傳遞,并在這些消息到達最終的消息處理過程前,處理某些特定的消息。簡單的說就是改變程序流程的技術。它有一個重要原則:被Hook的API的原有功能不能受到任何影響。如果API被Hook之后,其原有功能失效,這樣操作不能稱之為 Hook,而是替換取代。因為操作系統的正常功能受到影響,甚至可能會引發系統崩潰。

2.3 基于API Hook技術的虛擬串口

圖2為本文所提出的創新型API Hook虛擬串口,它采用API Hook技術[2],避免使用系統內核驅動程序,很好的解決了常規虛擬串口的穩定性問題。因為API Hook虛擬串口是工作在用戶態的,它通過 API Hook手段,改變系統API函數的功能,重定向串口數據,“欺騙”用戶程序來實現的[3]。而且由于在Windows系統上,程序空間的獨立性,使得基于API Hook虛擬串口只針對特定程序有效,這能大幅提高系統的安全性和可靠性。

圖2 基于API Hook技術的虛擬串口結構

基于API Hook技術的虛擬串口和普通虛擬串口的技術優勢比較如表1所示:

表1 技術優勢比較表

2.4 基于API Hook的虛擬串口的實現

API Hook虛擬串口使用API Hook技術,在系統用戶層注入一個接口模塊。這個接口模塊在系統中起到 Filter(過濾)的作用。對于普通的文件操作全部放行(即交由操作系統來處理),而針對虛擬串口的操作都全部攔截下來,由Pipe(管道,Windows下進程間通訊最常使用的技術手段)接口發送給用戶預先定義好的I/O設備來處理。這里的I/O設備是廣義上的I/O設備,即可以是網絡,文件,USB,串口,虛擬I/O等。采用此方案的虛擬串口,實現了形式上的多樣化,不再局限于常規的串口轉以太網,還能實現串口轉文件,串口轉串口,串口數據廣播等多項功能。

3 系統架構

基于API Hook的虛擬串口軟件主要由3個獨立的模塊實現:加載器(Loader),虛擬串口接口,管道(Pipe)模塊:

(1)、加載器:負責創建目標進程和加載虛擬串口接口。

(2)、虛擬串口接口:所有虛擬串口的操作都在這個模塊實現,包括注冊虛擬串口設備,創建 Pipe,初始化虛擬串口,讀寫虛擬串口,卸載關閉接口,共5部分。

(3)、Pipe模塊:由虛擬串口接口所創建,單獨負責與外部I/O設備通訊。

系統工作流程如圖3所示。

3.1 加載虛擬串口接口

基于API Hook技術的虛擬串口是以DLL(動態鏈接庫)的形式存在的,需要加載至目標用戶程序的代碼空間才能發揮作用,使用加載器 Loader就能達到這一目的。

Loader的結構比較簡單:通過 CreateProcess帶CREATE_SUSPENDED標志創建并掛起目標進程,讓目標程序暫停運行后,通過 WriteProcessMemory寫入啟動代碼,然后調用CreateRemoteThread以執行LoadLibrary命令來加載虛擬串口接口庫,最后調用ResumeThread來繼續執行用戶程序,至此加載過程全部完成,加載器停止運行。

3.2 注冊虛擬串口設備

在加載器調用完LoadLibrary命令后,虛擬串口接口即進入執行狀態。首先它需要向注冊表登記虛擬串口的相關信息,其中最重要的就是虛擬串口的設備名字,其形式為COMx(x是1~99的整數)。然后通過API Hook技術,修改系統API函數的入口,需要偵聽并處理 CreateFile, Set(Get)CommMask,ReadFile,WriteFile,CloseHandle和PurgeComm這7個API函數。它們依次對應:打開,設置(查詢),讀取,寫入,關閉和刷新緩存的操作。完成這一步驟后,虛擬串口就可正常進入讀寫流程了。

圖3 系統工作流程圖

3.3 創建 Pipe接口

Pipe是由操作系統提供的一種IPC(InterProcess Communication 進程間通信)接口。這里使用的是Named Pipe(命名管道)。它可以在同一臺機器的不同進程間以及不同機器上的不同進程間進行雙向通信(需使用UNC命名規范)。管道的最大好處在于:它可以象對普通文件一樣進行操作,也就是說,它可以使用ReadFile和WriteFile函數進行與底層實現無關的讀寫操作,這與串口讀寫操作完全一致。故使用此方法能簡化開發的工作量和提高程序的兼容性。

3.4 虛擬串口的讀寫流程

虛擬串口的讀寫處理流程如圖4所示:第一步,按照用戶程序所指定的參數設置虛擬串口設備。由于虛擬串口并非物理串口,所以它沒有波特率、數據位、起始位、停止位和硬件流等設置,故不論GetCommMask和SetCommMask如何配置,其接口函數均返回正確即可。第二步,通過偵聽函數來監視用戶程序是否將要操作一個串口設備,如為非虛擬串口設備,則調用操作系統自身的系統 API函數來處理,如為虛擬串口設備則通過 Pipe來轉發數據,而Pipe的另一端按照要求處理數據。最后系統重新進入第二步,繼續偵聽串口操作,直到用戶程序請求關閉設備為止。

圖4 虛擬串口讀寫處理流程圖

4 結論

通過API Hook虛擬串口實現的用戶層虛擬串口設備,不僅系統性能不受影響,還無需注冊系統設備,沒有驅動級串口的兼容問題,且能替換現有物理串口(虛擬轉發),是遷移現有串口接入軟件到網絡接入方式的最優方案。

[1] Wikipedia. “Serial port”http://en.wikipedia.org/ wiki/Serial_port

[2] Holy Father. "Hooking Windows API - Technics of hooking API functions on Windows 1.1”

[3] Windows Developer Center (MSDN). “Hooks”http://msdn.microsoft.com/en-us/library/ms632589(VS.85).aspx

[4] Eltima Software Inc. “Virtual Serial Port Driver”(vspd)http://wiki.eltima.com/user-guides/vspd/intro.html

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 国内黄色精品| 国产精品网址你懂的| 久久这里只有精品免费| 无码精品国产VA在线观看DVD| 日本欧美午夜| 天天视频在线91频| 91网红精品在线观看| 亚洲大学生视频在线播放| 日本黄色a视频| 亚洲精品男人天堂| 成人国产精品一级毛片天堂| 女高中生自慰污污网站| 久久99国产精品成人欧美| 欧美精品三级在线| 亚洲有码在线播放| 久久精品人人做人人爽| 国产精品一区二区无码免费看片| 成人久久18免费网站| 亚洲精品动漫| 成人午夜精品一级毛片 | 亚洲欧美综合在线观看| 毛片一级在线| 污网站免费在线观看| 在线色国产| 毛片免费网址| 亚洲精品麻豆| 国产精品伦视频观看免费| 亚洲乱码在线播放| 人妻少妇乱子伦精品无码专区毛片| 免费在线观看av| 国产成人a在线观看视频| 天天干天天色综合网| 性欧美精品xxxx| 国产h视频免费观看| 一本无码在线观看| 欧美精品成人一区二区视频一| 91国内在线观看| 久久人妻xunleige无码| 欧美成人一区午夜福利在线| 91免费国产高清观看| 亚洲成人在线免费| 97视频免费看| 国产69精品久久久久孕妇大杂乱| 国产综合另类小说色区色噜噜| 一级香蕉人体视频| 国产99视频精品免费视频7| 亚洲精品午夜天堂网页| 国产成人8x视频一区二区| 国产不卡在线看| 欧美日韩精品一区二区视频| 欧美高清视频一区二区三区| 国产高清在线观看91精品| 欧美v在线| 精品久久国产综合精麻豆| 中国丰满人妻无码束缚啪啪| 中文一级毛片| 日韩成人午夜| 久久狠狠色噜噜狠狠狠狠97视色| 人妻夜夜爽天天爽| 亚洲码一区二区三区| 香蕉在线视频网站| 国产网站黄| 丰满人妻一区二区三区视频| 国产欧美日韩视频怡春院| 亚洲天堂网在线播放| 亚洲综合亚洲国产尤物| 91蝌蚪视频在线观看| 中文字幕亚洲精品2页| 亚洲男女天堂| 久久国产精品波多野结衣| 免费A级毛片无码免费视频| 美女扒开下面流白浆在线试听| 亚洲成肉网| 伊人久久久久久久久久| 久久熟女AV| 99热这里只有免费国产精品 | 亚洲成人黄色网址| 婷婷激情亚洲| 亚洲国产成人精品一二区| a级毛片网| 久久综合伊人77777| 日韩免费毛片视频|