一種信息攔截方法及裝置的制造方法
【專利摘要】本發明實施例提供了一種信息攔截方法及裝置。所述方法包括:檢測是否接收到針對第一函數的調用請求,其中,第一函數為用于修改窗口位置和窗口大小的系統內核層函數;若接收到,判斷生成所述調用請求的第一程序是否屬于惡意程序;如果是,則攔截所述調用請求,進而拒絕改變窗口位置和窗口大小。應用本實施例,能夠攔截惡意程序對客戶端的窗口位置和大小的修改。
【專利說明】
_種信息攔截方法及裝置
技術領域
[0001 ]本發明涉及計算機技術領域,特別涉及一種信息攔截方法及裝置。
【背景技術】
[0002]終端系統運行一個客戶端時,通常將該客戶端的窗口顯示在終端屏幕上。用戶可以改變該客戶端的窗口位置和大小。隨著計算機技術的發展,木馬、病毒等惡意程序層出不窮。一些惡意程序通常會利用系統提供的函數惡意修改客戶端的窗口位置和大小,例如將客戶端的窗口位置修改為終端屏幕之外,或者將窗口大小修改為O等,使客戶端窗口無法正常顯示在終端屏幕上,從而破壞用戶的終端系統環境。
[0003]現有技術中,常常無法攔截這些惡意程序對客戶端的窗口位置和大小的修改。
【發明內容】
[0004]本發明實施例的目的在于提供了一種信息攔截方法及裝置,能夠攔截惡意程序對客戶端的窗口位置和大小的修改。
[0005]為了達到上述目的,本發明公開了一種信息攔截方法,所述方法包括:
[0006]檢測是否接收到針對第一函數的調用請求,其中,所述第一函數為用于改變窗口位置和窗口大小的系統內核層函數;
[0007]若接收到,判斷生成所述調用請求的第一程序是否屬于惡意程序;
[0008]如果是,則攔截所述調用請求,進而拒絕修改窗口位置和窗口大小。
[0009 ]較佳的,所述方法還包括:
[0010]當判斷出所述第一程序不屬于惡意程序時,響應所述調用請求。
[0011 ]較佳的,所述調用請求攜帶目標窗口的信息;
[0012]在檢測到所述調用請求后,還包括:
[0013]根據所述目標窗口的信息,獲得所述目標窗口所屬目標進程;
[0014]判斷所述目標進程是否與所述第一程序對應的第一進程相同;
[0015]若不相同,則執行所述判斷生成所述調用請求的第一程序是否屬于惡意程序的步驟。
[0016]較佳的,所述判斷生成所述調用請求的第一程序是否屬于惡意程序,包括:
[0017]獲得生成所述調用請求的第一程序的路徑信息;
[0018]根據所述路徑信息,獲得所述第一程序的程序文件;
[0019]根據所述程序文件,生成所述第一程序的特征值;
[0020]判斷所述特征值是否與預先存儲的惡意程序特征值匹配;
[0021]若匹配,則確定所述第一程序為惡意程序。
[0022]較佳的,所述特征值包括消息摘要算法值MD5值和/或哈希值。
[0023]較佳的,所述檢測是否接收到針對第一函數的調用請求,包括:
[0024]通過設置鉤子函數的方式,檢測是否接收到針對第一函數的調用請求。
[0025]為了達到上述目的,本發明公開了一種信息攔截裝置,所述裝置包括:
[0026]檢測模塊,用于檢測是否接收到針對第一函數的調用請求,其中,所述第一函數為用于修改窗口位置和窗口大小的系統內核層函數;
[0027]第一判斷模塊,用于當接收到所述調用請求時,判斷生成所述調用請求的第一程序是否屬于惡意程序;
[0028]攔截模塊,用于當判斷出所述第一程序屬于惡意程序時,攔截所述調用請求,進而拒絕修改窗口位置和窗口大小。
[0029]較佳的,所述裝置還包括響應模塊;
[0030]所述響應模塊,用于當判斷出所述第一程序不屬于惡意程序時,響應所述調用請求。
[0031 ]較佳的,所述調用請求攜帶目標窗口的信息;
[0032]所述裝置還包括第二判斷模塊,具體用于:
[0033]在檢測到所述調用請求后,根據所述目標窗口的信息,獲得所述目標窗口所屬目標進程;
[0034]判斷所述目標進程是否與所述第一程序對應的第一進程相同;
[0035]若不相同,則觸發所述第一判斷模塊。
[0036]較佳的,所述第一判斷模塊包括:
[0037]第一獲得子模塊,用于獲得生成所述調用請求的第一程序的路徑信息;
[0038]第二獲得子模塊,用于根據所述路徑信息,獲得所述第一程序的程序文件;
[0039]生成子模塊,用于根據所述程序文件,生成所述第一程序的特征值;
[0040]判斷子模塊,用于判斷所述特征值是否與預先存儲的惡意程序特征值匹配;
[0041]確定子模塊,用于當所述特征值與預先存儲的惡意程序特征值匹配時,確定所述第一程序為惡意程序。
[0042]較佳的,所述檢測模塊具體用于:
[0043]通過設置鉤子函數的方式,檢測是否接收到針對第一函數的調用請求。
[0044]由上述技術方案可見,本發明實施例中,當接收到針對第一函數的調用請求時,判斷生成該調用請求的第一程序是否屬于惡意程序,如果是,則攔截該調用請求,進而拒絕修改窗口位置和窗口大小,其中,第一函數為用于修改窗口位置和窗口大小的系統內核層函數。也就是說,在本實施例中,根據接收到的針對用于修改窗口位置和窗口大小的系統內核層函數的調用請求,判斷生成該調用請求的第一程序是否屬于惡意程序,如果是,則攔截該調用請求。因此,本發明實施例能夠攔截惡意程序對客戶端的窗口位置和大小的修改。
【附圖說明】
[0045]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單的介紹。顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0046]圖1為本發明實施例提供的信息攔截方法的一種流程示意圖;
[0047]圖2為本發明實施例提供的信息攔截方法的另一種流程示意圖;
[0048]圖3為本發明實施例提供的信息攔截裝置的一種結構示意圖;
[0049]圖4為本發明實施例提供的信息攔截裝置的另一種結構示意圖。
【具體實施方式】
[0050]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整的描述。顯然,所描述的實施例僅僅是本發明的一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0051]本發明實施例提供了一種信息攔截方法及裝置,能夠攔截惡意程序對客戶端的窗口位置和大小的修改。
[0052]下面通過具體實施例,對本發明進行詳細說明。
[0053]圖1為本發明實施例提供的信息攔截方法的一種流程示意圖,該方法包括如下步驟:
[0054]步驟SlOl:檢測是否接收到針對第一函數的調用請求,若接收到,則執行步驟S102o
[0055]其中,所述第一函數為用于修改窗口位置和窗口大小的系統內核層函數。由于第一函數是公共可用的函數,所以非惡意程序和惡意程序都可以調用它。第一函數可以用來改變所有窗口的窗口位置和窗口大小。
[0056]具體的,用于修改窗口位置和窗口大小的系統內核層函數可以是NtUserSetWindowPos等。在實際應用中,在修改窗口位置和窗口大小時,可以先調用系統應用層函數,通過系統應用層函數來調用系統內核層函數,實現對窗口位置和窗口大小的修改。例如,先調用系統應用層函數SetWindowPos,SetWindowPos再調用系統內核層函數NtUserSetWindowPos,通過對NtUserSetWindowPos的調用實現對窗口位置和窗口大小的修改。
[0057]值得一提的是,上述系統內核層函數和系統應用層函數并不僅限于此,基于不同的操作系統,上述系統內核層函數和系統應用層函數可能會有所不同,本申請并不對此進行限定。
[0058]需要說明的是,本實施例具體是由終端中的第一客戶端執行的。
[0059]在本實施例中,為了更準確地檢測是否接收到上述調用請求,步驟SlOl的一種【具體實施方式】包括:通過設置鉤子函數的方式,檢測是否接收到針對第一函數的調用請求。
[0000]其中,鉤子函數Hook是Windows消息處理機制的一個平臺,鉤子機制允許應用程序截獲處理Window消息或特定事件。另外,Hook實際上是一個處理消息的程序段,通過系統調用,把它掛入系統。每當調用請求發出,在沒有到達系統內核層函數之前,Hook就先捕獲該調用請求,亦即Hook先得到控制權。這時Hook既可以對該調用請求進行加工處理,也可以不作處理而繼續傳遞該調用請求,還可以強制結束即攔截該調用請求的傳遞。
[0061]鑒于上述情況,第一客戶端可以通過設置鉤子函數的方式監測針對第一函數的調用請求。當監測到調用請求時,在系統內核層函數響應該調用請求之前,第一客戶端先處理該調用請求。
[0062]步驟S102:判斷生成所述調用請求的第一程序是否屬于惡意程序,如果是,則執行步驟S103。
[0063]當判斷出所述第一程序不屬于惡意程序時,響應所述調用請求,即放行該調用請求,繼續修改窗口位置和窗口大小。
[0064]在本實施例中,所有生成所述調用請求的程序都是本實施例的監控對象,該程序可能是惡意程序,也可能不是惡意程序。
[0065]可以理解的是,當接收到所述調用請求時,根據所述調用請求,確定生成該調用請求的第一程序屬于現有技術,其具體過程此處不再贅述。其中,確定第一程序可以是確定第一程序的程序名稱和/或第一程序的程序標識等唯一標識該第一程序的信息。
[0066]在本步驟中,判斷第一程序是否屬于惡意程序可以包括多種實施方式,例如,可以根據第一程序的標識信息,將其與預先保存的惡意程序標識信息進行匹配,也可以根據第一程序的程序文件判斷其是否屬于惡意程序。當然,該判斷過程可以通過其他實施方式來實現,本實施例對此不做具體限定。
[0067]步驟S103:攔截所述調用請求,進而拒絕修改窗口位置和窗口大小。
[0068]由上述內容可知,在本實施例中,根據接收到的針對用于修改窗口位置和窗口大小的系統內核層函數的調用請求,判斷生成該調用請求的第一程序是否屬于惡意程序,如果是,則攔截該調用請求。因此,應用本發明實施例,能夠攔截惡意程序對客戶端的窗口位置和大小的修改。并且,由于系統內核層函數是惡意程序在修改窗口位置和窗口大小時必定會調用的函數,因此本實施例還能夠提高攔截惡意程序對修改窗口位置和窗口大小進行修改時的成功率。
[0069]在本發明的另一實施例中,在圖1所示實施例的基礎上,步驟S102,即判斷生成所述調用請求的第一程序是否屬于惡意程序,可以包括:
[0070]步驟1:獲得生成所述調用請求的第一程序的路徑信息。
[0071]在本步驟中,獲得第一程序的路徑信息的方式存在多種,其中一種方式可以包括:獲得第一程序的進程信息,從所述進行信息中獲取第一程序的路徑信息。本實施例對獲得第一程序的路徑信息的方式不做具體限定。
[0072]步驟2:根據所述路徑信息,獲得所述第一程序的程序文件。
[0073]可以理解的是,根據路徑信息,獲得第一程序的程序文件屬于現有技術,其具體過程此處不再贅述。
[0074]步驟3:根據所述程序文件,生成所述第一程序的特征值。
[0075]其中,所述特征值可以包括消息摘要算法值MD5值(Message-Digest Algorithm5)和/或哈希值。MD5算法可以把一個任意長度的字符串變換成一定長度的十六進制數字串。在本實施例中,MD5算法將整個程序文件當做一個字符串,通過對其進行不可逆的字符串變換操作,得到程序文件的MD5值。不同的程序文件對應不同的MD5值。哈希算法hash可以將任意長度的二進制值映射為較短的固定長度的二進制值,該二進制值稱為哈希值。即便兩個程序文件A和B中只有一個字母不同,通過哈希算法得到的A和B的哈希值也會不同。可以理解的是,MD5值和哈希值都可以唯一地表征該程序文件。
[0076]當然,本實施例中的特征值還可以是采用其他算法得到的,本實施例對此不做具體限定。
[0077]步驟4:判斷所述特征值是否與預先存儲的惡意程序特征值匹配,若匹配,則執行步驟5。
[0078]特征值是用于唯一確定第一程序的標識。通過將第一程序的特征值與預先存儲的惡意程序特征值相匹配,可以確定該第一程序是否為惡意程序。當從預先存儲的惡意程序特征值中匹配上該特征值時,說明第一程序為惡意程序,當沒有匹配上時,說明第一程序不是惡意程序。
[0079]步驟5:確定所述第一程序為惡意程序。
[0080]由上述內容可見,在本實施例中,根據第一程序的程序文件生成第一程序的特征值,并與預先存儲的惡意程序特征值匹配,當匹配成功時,確定第一程序為惡意程序,這種確定過程簡單,易實施。
[0081]在本發明的另一實施例中,在圖1所示實施例的基礎上,所述調用請求可以攜帶目標窗口的信息。在檢測到所述調用請求后,即在步驟SlOl之后,步驟S102之前,所示方法還可以包括以下步驟,這些步驟如圖2的流程示意圖所示:
[0082]步驟S104:根據所述目標窗口的信息,獲得所述目標窗口所屬目標進程。
[0083]在本實施例中,調用請求攜帶目標窗口的信息,目標窗口的信息可以為目標窗口的窗口句柄,因此,步驟S104的【具體實施方式】可以包括:根據目標窗口的窗口句柄,獲得目標窗口所屬目標進程。
[0084]其中,獲得的目標進程,可以是目標進程的進程名稱,也可以是目標進程包含的路徑信息,只要是能夠唯一標示該目標進程的信息都是可行的。
[0085]步驟S105:判斷所述目標進程是否與所述第一程序對應的第一進程相同,若不相同,則執行步驟S102。
[0086]若目標進程與第一進程相同,說明第一程序在修改自身的窗口位置和窗口大小,進而說明第一程序不是惡意程序,則響應所述調用請求,進而修改窗口位置和窗口大小。
[0087]其中,所述第一程序為生成所述調用請求的程序。
[0088]具體的,本步驟中,可以首先根據第一程序確定第一程序對應的第一進程,然后判斷目標進程是否與第一進程相同,如果不相同,則執行步驟S102。其中,根據第一程序確定第一程序的第一進程,可以包括:根據第一程序的程序名稱,從系統進程列表中確定第一進程。當然,根據第一程序確定第一進程還可以包括其他實施方式,本實施例對此不做具體限定。
[0089]在一個例子中,獲得的目標進程為d:\windows\system32\QQ.exe,如果第一進程為d: \windows\system32\sooddl.exe,貝Ij可以確定目標進程與第一進程不相同;如果第一進程為d: \windows\system32\QQ.exe,則可以確定目標進程與第一進程相同。
[0090]由上述內容可見,本實施例中,在判斷第一程序是否屬于惡意程序之前,首先判斷目標進程與第一進程是否相同,如果相同,說明目標窗口所屬第二客戶端在修改自身窗口位置和窗口大小,即能夠確定第一程序不是惡意程序,此時不需要執行判斷第一程序是否屬于惡意程序的步驟;如果不相同,則執行判斷第一程序是否屬于惡意程序的步驟。也就是說,本實施例中,在判斷出目標進程與第一進程不相同時,才執行判斷第一程序是否屬于惡意程序的步驟,因此能夠提高攔截效率。
[0091]圖3為本發明實施例提供的信息攔截裝置的一種結構示意圖,與圖1所示方法實施例相對應,所述裝置包括檢測模塊301、第一判斷模塊302和攔截模塊303。
[0092]其中,檢測模塊301,用于檢測是否接收到針對第一函數的調用請求,其中,所述第一函數為用于修改窗口位置和窗口大小的系統內核層函數;
[0093]第一判斷模塊302,用于當接收到所述調用請求時,判斷生成所述調用請求的第一程序是否屬于惡意程序;
[0094]攔截模塊303,用于當判斷出所述第一程序屬于惡意程序時,攔截所述調用請求,進而拒絕修改窗口位置和窗口大小。
[0095]在本發明的另一實施例中,在圖3所述實施例的基礎上,所述檢測模塊301具體可以用于:
[0096]通過設置鉤子函數的方式,檢測是否接收到針對第一函數的調用請求。
[0097]在本發明的另一實施例中,在圖3所述實施例的基礎上,所述裝置還可以包括響應模塊(圖中未示出);
[0098]所述響應模塊,用于當判斷出所述第一程序不屬于惡意程序時,響應所述調用請求。
[0099]在本發明的另一實施例中,在圖3所述實施例的基礎上,所述第一判斷模塊具體包括:(圖中未示出)
[0100]第一獲得子模塊,用于獲得生成所述調用請求的第一程序的路徑信息;
[0101]第二獲得子模塊,用于根據所述路徑信息,獲得所述第一程序的程序文件;
[0102]生成子模塊,用于根據所述程序文件,生成所述第一程序的特征值;
[0103]判斷子模塊,用于判斷所述特征值是否與預先存儲的惡意程序特征值匹配;
[0104]確定子模塊,用于當所述特征值與預先存儲的惡意程序特征值匹配時,確定所述第一程序為惡意程序。
[0105]在本發明的另一實施例中,在圖3所述實施例的基礎上,調用請求攜帶目標窗口的信息,所述裝置還可以包括第二判斷模塊304,該模塊可以如圖4所示。圖4所示裝置實施例與圖2所示方法實施例相對應。
[0106]其中,第二判斷模塊304,用于在檢測到所述調用請求后,根據所述目標窗口的信息,獲得所述目標窗口所屬目標進程;判斷所述目標進程是否與所述第一程序對應的第一進程相同,若不相同,則觸發第一判斷模塊302。
[0107]由于上述裝置實施例是基于方法實施例得到的,與該方法具有相同的技術效果,因此裝置實施例的技術效果在此不再贅述。
[0108]對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。
[0109]需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0110]本領域普通技術人員可以理解,上述實施方式中的全部或部分步驟是能夠通過程序指令相關的硬件來完成的,所述的程序可以存儲于計算機可讀取存儲介質中。這里所稱存儲介質,是指ROM/RAM、磁碟、光盤等。
[0111]以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所做的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。
【主權項】
1.一種信息攔截方法,其特征在于,所述方法包括: 檢測是否接收到針對第一函數的調用請求,其中,所述第一函數為用于改變窗口位置和窗口大小的系統內核層函數; 若接收到,判斷生成所述調用請求的第一程序是否屬于惡意程序; 如果是,則攔截所述調用請求,進而拒絕修改窗口位置和窗口大小。2.根據權利要求1所述的方法,其特征在于,所述方法還包括: 當判斷出所述第一程序不屬于惡意程序時,響應所述調用請求。3.根據權利要求1所述的方法,其特征在于,所述調用請求攜帶目標窗口的信息; 在檢測到所述調用請求后,還包括: 根據所述目標窗口的信息,獲得所述目標窗口所屬目標進程; 判斷所述目標進程是否與所述第一程序對應的第一進程相同; 若不相同,則執行所述判斷生成所述調用請求的第一程序是否屬于惡意程序的步驟。4.根據權利要求1-3中任一項所述的方法,其特征在于,所述判斷生成所述調用請求的第一程序是否屬于惡意程序,包括: 獲得生成所述調用請求的第一程序的路徑信息; 根據所述路徑信息,獲得所述第一程序的程序文件; 根據所述程序文件,生成所述第一程序的特征值; 判斷所述特征值是否與預先存儲的惡意程序特征值匹配; 若匹配,則確定所述第一程序為惡意程序。5.根據權利要求4所述的方法,其特征在于,所述特征值包括消息摘要算法值MD5值和/或哈希值。6.根據權利要求1所述的方法,其特征在于,所述檢測是否接收到針對第一函數的調用請求,包括: 通過設置鉤子函數的方式,檢測是否接收到針對第一函數的調用請求。7.一種信息攔截裝置,其特征在于,所述裝置包括: 檢測模塊,用于檢測是否接收到針對第一函數的調用請求,其中,所述第一函數為用于修改窗口位置和窗口大小的系統內核層函數; 第一判斷模塊,用于當接收到所述調用請求時,判斷生成所述調用請求的第一程序是否屬于惡意程序; 攔截模塊,用于當判斷出所述第一程序屬于惡意程序時,攔截所述調用請求,進而拒絕修改窗口位置和窗口大小。8.根據權利要求7所述的裝置,其特征在于,所述裝置還包括響應模塊; 所述響應模塊,用于當判斷出所述第一程序不屬于惡意程序時,響應所述調用請求。9.根據權利要求7所述的裝置,其特征在于,所述調用請求攜帶目標窗口的信息; 所述裝置還包括第二判斷模塊,具體用于: 在檢測到所述調用請求后,根據所述目標窗口的信息,獲得所述目標窗口所屬目標進程; 判斷所述目標進程是否與所述第一程序對應的第一進程相同; 若不相同,則觸發所述第一判斷模塊。10.根據權利要求7-9中任一項所述的裝置,其特征在于,所述第一判斷模塊包括: 第一獲得子模塊,用于獲得生成所述調用請求的第一程序的路徑信息; 第二獲得子模塊,用于根據所述路徑信息,獲得所述第一程序的程序文件; 生成子模塊,用于根據所述程序文件,生成所述第一程序的特征值; 判斷子模塊,用于判斷所述特征值是否與預先存儲的惡意程序特征值匹配; 確定子模塊,用于當所述特征值與預先存儲的惡意程序特征值匹配時,確定所述第一程序為惡意程序。
【文檔編號】G06F21/56GK106096402SQ201610458108
【公開日】2016年11月9日
【申請日】2016年6月22日
【發明人】楊峰
【申請人】北京金山安全軟件有限公司