久久这里只有精品国产99-久久这里只有精品2-久久这里只有精品1-久久这里只精品热在线99-在线少女漫画-在线涩涩免费观看国产精品

淺談當下進程間通信管理的制度模式

來源:期刊VIP網所屬分類:通信時間:瀏覽:

  摘要:當一個程序開始運行時,它就是一個進程,進程所指包括運行中的程序和程序所使用到的內存和系統資源。因此定義進程(Process)是具有一定獨立功能的程序關于某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。

  1.引言

  在計算機和網絡技術日益發展的今天,病毒這個字眼越來越多地出現在了媒體和人們的言論中。計算機病毒的發展必然會促進計算機反病毒技術的發展,新型病毒的出現向以行為規則判定病毒的預防產品、以病毒特征為基礎的檢測產品,以及根據計算機病毒傳染宿主程序的方法而消除病毒的產品提出了挑戰,致使原有的反病毒技術和產品在新型的計算機病毒面前無能為力。這樣,勢必使人們認識到現有反病毒產品在對抗新型的計算機病毒方面的局限性,迫使人們在反病毒的技術和產品上進行新的更新和換代。要打敗對手,就要從了解對手開始,本文從模擬病毒隱藏性和寄生性的角度出發,以進程通信、進程快照、多線程等技術基礎,利用Visual C++的MFC窗口界面設計了一組程序自我保護軟件,經過測試實現了程序的穩定運行。

  2.進程的概念

  程序只是一組指令的有序集合,它本身沒有任何運行的含義,只是一個靜態實體。而進程則不同,它是程序在某個數據集上的執行,是一個動態實體。它因創建而產生,因調度而運行,因等待資源或事件而被處于等待狀態,因完成任務而被撤銷,反映了一個程序在一定的數據集上運行的全部動態過程。

  進程由兩個部分組成:

  (1)操作系統用來管理進程的內核對象。內核對象也是系統用來存放關于進程的統計信息的地方。

  (2)地址空間。它包含所有可執行模塊或DLL模塊的代碼和數據。它還包含動態內存分配的空間,如線程堆棧和堆分配空間。

  目前常用的操作系統都是并行的,就是多個進程可以同步運行,這時就會牽扯到進程間通信這個概念。所謂進程通信,就是不同進程之間進行一些“接觸”,這種接觸有簡單,也有復雜。機制不同,復雜度也不一樣。通信是一個廣義上的意義,不僅僅指傳遞一些信息。舉個例子來說明:比如說在使用IE上網時,你想將網頁上的一段文字保存至你的電腦上,這時有一種簡單的方法,就是復制粘貼。將你想保存的文字選中,然后將其復制,接下來將所復制的文字粘貼到.TXT文檔中,這時就形成了兩個進程之間的通信,這里的通信媒介是剪貼板。

  3.線程的概念

  為了對線程模式有一定的理解,我們可以將其想象為把一所屋子里的東西搬到另一所屋子。如果采用單線程方法,則需要自己完成從打包到扛箱子再到拆包的所有工作。如果使用單元線程模式,則表示邀請了好朋友來幫忙。每個朋友在一個單獨的房間里工作,并且不能幫助在其他房間工作的人。他們各自負責自己的空間和空間內的物品搬運。如果采用自由線程方法,仍然邀請相同的朋友來幫忙,但是所有朋友可以隨時在任何一個房間工作,共同打包物品。與此類似,房子就是運行所有線程的進程,每個朋友都是一個代碼實例,搬運的物品為應用程序的資源和變量。

  有了上面的例子,便能容易理解線程(Thread)是一個能獨立于程序的其他部分運行的作業,是進程的一個實體,是CPU調度和分派的基本單位。線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。線程是程序中的一個執行流,每個線程都有自己的專有寄存器(棧指針、程序計數器等),但代碼區是共享的,即不同的線程可以執行同樣的函數。一個線程可以執行應用程序代碼的任一部分,包括正在由另一線程執行的代碼。

  線程由兩個部分組成:

  (1)線程的內核對象,操作系統用它來對線程實施管理。內核對象也是系統用來存放線程統計信息的地方。

  (2)線程堆棧,它用于維護線程在執行代碼時需要的所有參數和局部變量。

  線程屬于一個過程,操作系統為每一個運行線程安排一定的CPU時間——時間片,線程是操作系統分配CPU時間的基本單位。系統通過一種循環的方式為線程提供時間片,線程在自己的時間內運行,因時間片相當短,因此,給用戶的感覺,就好像線程是同時運行的一樣。如果計算機擁有多個CPU,線程就能真正意義上同時運行了。

  4.進程與線程的關系

  根據操作系統的定義,進程是系統資源管理的最小單位,線程是程序執行的最小單位。進程是不活潑的,進程可以理解為是線程的容器。若要使進程完成某項操作,它必須擁有一個在它的環境中運行的線程,此線程負責執行包含在進程的地址空間中的代碼。單個進程可能包含若干個線程,這些線程都“同時”執行進程地址空間中的代碼。每個進程至少擁有一個線程,來執行進程的地址空間中的代碼。當創建一個進程時,操作系統會自動創建這個進程的第一個線程,稱為主線程。此后,該線程可以創建其他的線程。

  線程是屬于進程的,它沒有自己的獨立的數據地址空間,線程運行在進程空間內,因此線程的切換速度比較快。同一進程所產生的線程共享同一內存空間,而這些線程的執行由系統調度程序控制,調度程序決定哪個線程可執行以及什么時候執行線程。線程有優先級別,優先權較低的線程必須等到優先權較高的線程執行完后再執行。當進程退出時該進程所產生的線程都會被強制退出并清除。線程可與屬于同一進程的其他線程共享虛地址空間、全局變量,以及該進程所擁有的全部資源,包括打開的文件、信號標志及動態分配的內存等。但是其本身基本上不擁有系統資源,只擁有一點在運行中必不可少的信息(如程序計數器、一組寄存器和棧)。

  線程有點像進程身體內的細胞,我們通常聽過多進程多線程,單進程多線程。這就是說,一個系統內有幾個進程,如果進程是多個,就是多進程的,如果進程內有多個線程,那就是多線程的,多進程多線程的系統比單進程多線程的系統速度慢,但是可靠性高。

  5.程序的設計與實現

  程序的自我保護是一個大的概念,其中有多種方式和手段來實現自身的保護。比如隱藏、自我復制、注冊為服務,等等。我們實現的程序自我保護實際上是一個相互監督的過程。其中包括了程序之間的監督和報警,監聽程序的隱藏與保護。

  5.1監督

  所謂監督,是利用進程枚舉的方法,讓所有程序在運行同時不停地對進程列表進行快照,并檢查目標進程是否存在的過程。

  在Windows環境下可以通過調用ToolHelp API函數來達到枚舉系統進程的目的。微軟的Windows NT開發小組因為不喜歡ToolHelp函數,所以沒有將這些函數添加給Windows NT,所以開發了自己的Process Status函數,就是PSAPI。但是后來微軟已經將ToolHelp函數添加給了Windows 2000。ToolHelp32庫函數在KERNEL32.dll中,它們都是標準的API函數。

  ToolHelp32庫中有各種各樣的函數可以用來枚舉系統中的進程、線程,以及獲取內存和模塊信息。其中枚舉進程只需用如下三個的函數:CreateToolhelp32Snapshot()、Process32First()和Process32Next()。

  使用ToolHelp32函數的第一步是用CreateToolhelp32Snapshot()函數創建系統信息“快照”。這個函數可讓你選擇存儲在快照中的信息類型。如果你只是對進程信息感興趣,那么只要包含TH32CS_SNAPPROCESS標志即可。CreateToolhelp32Snapshot()函數返回一個HANDLE,完成調用之后,必須將此HANDLE傳給CloseHandle()。

  接下來是調用一次Process32First函數,從快照中獲取進程列表,然后重復調用Process32Next,直到函數返回FALSE為止。這樣將遍歷快照中進程列表。這兩個函數都帶兩個參數,它們分別是快照句柄和一個PROCESSENTRY32結構。

  調用完Process32First或Process32Next之后,PROCESSENTRY32中將包含系統中某個進程的關鍵信息。它的具體內容如下:

  typedef struct tagPROCESSENTRY32{

  DWORD dwSize;

  DWORD cntUsage;

  DWORD th32ProcessID;

  DWORD th32DefaultHeapID;

  DWORD th32ModuleID;

  DWORD cntThreads;

  DWORD th32ParentProcessID; LONG pcPriClassBase;

  DWORD dwFlags;

  TCHAR szExeFile;

  DWORD th32MemoryBase;

  DWORD th32AccessKey;

  }PROCESSENTRY32;

  其中進程ID就存儲在此結構的th32ProcessID。此ID可以被傳給OpenProcess()API以獲得該進程的句柄。對應的可執行文件名及其存放路徑存放在szExeFile結構成員中。在該結構中還可以找到其他一些有用的信息。

  5.2報警

  這里的報警就涉及了進程間通信的概念。本文中涉及的進程間通信是用剪貼板的方法,剪貼板在我們實際應用中是用得比較多的,它實際上是系統維護管理的一個內存區域,當我們在一個程序中復制數據的時候,實際上是將這些數據放入了內存,相反,當我們在另一個程序中粘貼數據時實際上是從內存取出數據。下面介紹一下使用剪貼板時的主要函數:打開剪貼板OpenClipboard(),不管是對剪貼板的讀還是寫,都要首先調用此函數,以判斷是否可以對剪貼板進行操作。此函數是BOOL型的,如果調用成功就返回非零,否則返回零。清空剪貼板EmptyClipborad(),每次對剪貼板的寫入操作之前,都應該調用此函數,這個函數的作用不僅是清空剪貼板,而且起到獲得剪貼板的使用權的作用。同樣,這個函數也是BOOL型的,如果調用成功就返回非零,否則返回零。對剪貼板寫入SetClipboardData(UINT uFormat,HANDLE hMem),這個函數有兩個參數,第一個參數用來表示寫入剪貼板數據的格式,第二個參數接收一個句柄值,在這里它接收一個指向內存對象的句柄,這個內存對象中存放著準備寫入剪貼板的數據內容。在調用SetClipboardData(UINT uFormat,HANDLE hMem)之前還需要調用GlobalAlloc(UINT uFlags,SIZE_T dwSytes)這樣一個函數,它專門用來為將要寫入的數據分配一塊內存空間。這個函數接收兩個參數,第一個參數表示如何來分配內存空間,這里我們將它設置為GMEM_MOVEABLE,表示動態分配內存。第二個參數是表示分配內存空間的大小。GlobalAlloc(UINT uFlags,SIZE_T dwSytes)返回一個句柄,我們無法使用句柄來間接的將數據放入內存,這時就需要調用另一個函數GlobalLock(HGLOBAL hMem),這個函數獲得一個內存對象的句柄,將這塊內存加鎖,返回一個指針,這時我們就可以給指針所指向的這塊內存寫入數據了。這個函數使用一個內存計數,計數器基數為零,每調用一次計數器加一,所以每調用一次的同時還需要調用另外一個函數GlobalUnlock(HGLOBAL hMem)來給計數器減一,相當于取消對這塊內存的鎖定。本文設計的程序實現報警功能就是在枚舉進程之后發現目標進程被終止,從而在剪貼板中寫入信息的過程。

  5.3監聽

  所謂監聽,就是報警的反方向,即從剪貼板中讀出信息。從剪貼板讀取數據的函數GetClipboardData(UINT uFormat)。這個函數只接收一個參數,參數指定讀取的格式。讀取信息之后,我們還要對信息進行if判斷,如果信息是我們預留的某個進程被結束的話,我們就啟動保護措施。

  5.4保護和隱藏

  這里的保護是指監聽程序對其他程序的保護,方法非常簡單,利用進程間通信實現程序自我保護只需要利用WinExec函數來實現目標進程的啟動就可以。而隱藏是指監聽程序自身的隱藏,只要在OnPaint()函數里調用ShowWindow(SW_HIDE)函數就可以了,同時將監聽程序命名為smss,就可以避免其被強行終止。

  6.結語

  本文中程序的設計是模仿病毒的一些特性而做成的。它實現了程序的隱藏,并且利用了系統的漏洞實現了不被終止。對我們了解病毒的特征提供了良好平臺,同時對一般程序自我保護的設計有很好的現實意義。

无码AV大香线蕉伊人久久| 欧洲乱码一卡2卡三卡4卡高清| 久久综合九色综合欧洲98| 久久久橹橹橹久久久久高清| 美女直播全婐APP免费| 欧美人妻一区二区三区| 日韩精品无码一区二区视频| 无码H肉3D动漫在线观看| 驯服小挗子2韩语中字| 亚洲欧美综合精品成人网站| 岳妇伦丰满69ⅩⅩ| 97久久国产亚洲精品超碰热| 差差漫画页面在线阅读弹窗在线看 | 四虎影视新紧急入口| 亚洲AV无码成人精品区天堂| 夜夜躁狠狠躁日日躁| AV片在线观看免费| 国产成人艳妇AA视频在线| 精品国产AⅤ一区二区三区V免费| 麻花传媒网站永久入口视频| 日本精产国品一二三产品| 午夜.DJ高清在线观看免费7| 亚洲熟妇成人精品二区蜜臀| AV无码东京热亚洲男人的天堂| 夫上司人妻秘书OL中文有码| 好男人好社区好资源在线| 麻豆影视视频在线观看完整版| 人善交VIDEOS欧美3D| 性CHINESE新婚VIDEO| 一二三四在线视频社区8| 边做奶水边喷H高H共妻| 国产无遮挡又黄又爽奶头| 老熟女另类XXX精品视频| 日文中文字幕乱码一二三区别| 亚洲AV成人无码久久WWW| 与子敌伦刺激对白播放| 顶级欧美熟妇高潮XXXXX| 精品久久综合1区2区3区激情| 欧美丰满美乳XXⅩ高潮www| 脱岳裙子从后面挺进去电影| 亚洲最大天堂无码精品区| 超碰人人透人人爽人人看| 好紧我太爽了视频免费| 欧美熟妇内射深插| 亚洲AV成人无码精品网站老司机| 777爽死你免费看一二区无码| 国产精品JIZZ在线观看| 久久综合无码中文字幕无码TS| 日日摸夜夜添夜夜添无码| 亚洲色欲久久久综合网东京热| 把腿张开老子cao烂你动态图 | 成人国产精品一区二区网站免费| 黑人巨大粗物挺进了少妇| 欧洲熟妇色XXXXX欧美老妇伦| 性XXⅩ欧美老妇肥老太| 99RE66热这里只有精品3| 国产女人乱子对白AV片| 欧美性XXXX极品少妇| 亚洲国产成人AV网站| XXXAV久久久久久久久久久| 国产亚洲精品美女久久久| 人妻AV一区二区三区精品| 亚洲精品无码一区二区AⅤ污美国| 别揉我奶头~嗯~啊~免费视频 | 99久久免费国产精品| 韩国理论电费2023最| 日本成熟…@视频| 一边做饭一边躁狂我会怎么样呢| 国产肥熟女视频一区二区三区| 女人为啥摸几下就让进了| 亚洲AV永久无码精品国产精品 | 台湾无码AV一区二区三区| 中文字幕无码日韩AV| 果冻传媒一二三工厂免费观看| 人妻无码AⅤ中文字幕系列| 亚洲视频在线观看| 国产大陆亚洲精品国产| 青草伊人久久综在合线亚洲| 亚洲中文字幕久久精品无码VA | 亚洲成AV人片在线观看无线| 成人网站亚洲二区乱码| 美女内射毛片在线看| 亚洲成在人线AV品善网好看| 公粗挺进了我的密道在线播放 | 2018天天躁夜夜躁狠狠躁| 精品久久久久久人妻无码中文字幕 | 久久久久亚洲精品成人网| 亚洲AV成人无码一二三在线观看| 部长的夫人的味道中字| 蜜臀AⅤ永久无码一区二区| 亚洲AV综合色区无码二区偷拍| 国产Gay男同gv网站播放免费| 欧美巨大XXXX做受高清| 影音先锋中文字幕人妻| 精品国产亚洲AV麻豆尤物| 午夜三级理论在线观看高清| 成人亚洲A片Ⅴ一区二区小说| 男女啪啪免费观看网站| 一本无线乱码不卡一二三四| 国产在线精品一区二区| 忘忧草日本在线播放WWW| 成人精品免费视频在线观看| 欧美成人黑人XX视频免费观看| 一区二区无码免费视频| 经典WC偷窥美女如厕MP4| 午夜理论片YY44880影院| 国产白丝JK捆绑束缚调教视频| 人妻在厨房被侮辱高清版| 99精产国电影品一二三产区区别 | 综合 欧美 亚洲日本| 精品久久人人爽天天玩人人妻| 香蕉久久人人97超碰CAOPR| 高清成人爽A毛片免费| 日韩AV高清无码| 薄先生突然黏她上瘾TXT下载| 欧美噜噜久久久XXX| 18禁美女裸身无遮挡免费网站| 久久久中精品2020中文| 亚洲色成人四虎在线观看| 精品一区二区三区免费乱码视频| 亚洲AV综合永久无码精品天堂| 国产精成人品日日拍夜夜免费| 少妇性活BBBBBBBBB小说| 敌伦交换第11部分给了| 日韩亚洲欧美精品综合| 成AV人电影在线观看| 日本强伦姧人妻69影院| 被黑人的大JJ干得很舒服吗 | 亚洲成A人片在线观看无码不卡 | 亚洲AV中文无码乱人伦在线播放| 国产无人区一码二码三码MBA| 无码欧亚熟妇人妻AV在线外遇| 国产成人久久AV免费| 我被八个男人玩到早上| 国产精品IGAO视频网网址| 西方37大但人文艺术A管77| 国产欧美精品区一区二区三区| 无人区乱码一区二区三区| 国语自产少妇精品视频| 亚洲国产精品悠悠久久琪琪| 九九电影网午夜理论片| 亚洲中文字幕久久精品蜜桃| 军人全身脱精光自慰| 2017亚洲А∨天堂| 尿眼PEEHOLE重口| 锕锕锕锕锕锕锕好痛免费网址| 人人妻人人澡人人爽人人正品| 成人午夜精品无码区| 无码AV动漫精品专区| 韩国AV一区二区| 亚洲中字幕日产2021草莓| 蜜臀久久99精品久久久久久| ⅩXXⅩ内射意大利老妇| 日本人做暖免费高清视频| 国产成人AV一区二区三区在线观| 午夜A级成人免费毛片| 激情综合婷婷色五月蜜桃| 一区二区狠狠色丁香久久婷婷| 内地CHINA高潮VIDEO| 被绑在机器上强行高潮H| 天天做天天爱夜夜爽毛片毛片| 国产亚洲美女精品久久久久 | 成人H视频在线观看| 婷婷五月深深久久精品| 狠狠躁夜夜躁人人爽天天BL| 永久免费AV无码网站在线观看| 欧美日韩一区二区三区人妻| 丰满人妻妓熟妇又伦精品软件| 性无码一区二区三区在线观看| 久久精品亚洲男人的天堂| AV无码免费岛国动作片片段欣赏| 日本最新高清一区二区三 | 美美哒中文日本免费6| 插插插精品亚洲一区| 性色AV蜜臀AV色欲AV| 久久久久久精品毛片A级蜜桃| BGMBGMBGM老太太HD| 无码AV一区二区三区不卡| 久久精品道一区二区三区| HD2LINODE日本成熟IP| 偷拍农村老熟妇XXXXX7视频| 精产国品一二三产区区别在哪儿呢| 中文字幕人妻互换激情| 色综合久久久久久久久五月| 叫吧宝贝我想听你叫什么| AV无码AV在线A∨天堂APP| 无码专区人妻系列日韩精品少妇| 久久久久国色AⅤ免费看| 被黑人巨茎日出白浆的少妇| 性色av蜜臀av色欲av免费| 免费看撕开奶罩揉吮奶头视频| 高清一区二区三区日本久| 亚洲日韩AV成人无码| 秋霞电影院yy2933| 国内AI明星造梦鞠婧祎MV| 97色偷偷色噜噜男人的天堂 | 国产精品国产三级国产AN| 在线VA无码中文字幕| 婷婷国产成人精品视频| 久久一日本道色综合久久|