32位進程和64位進程交叉注入方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及安全應用技術領域,尤其涉及一種32位進程和64位進程交叉注入方法及裝置。
【背景技術】
[0002]目前,隨著windows7系統(tǒng)的發(fā)布,64位操作系統(tǒng)越來越普及。64位系統(tǒng)的設計完全兼容32位系統(tǒng),所以在64位系統(tǒng)上會同時存在32位進程和64位進程。但是由于64位進程基址和32位進程基址不一樣,導致32進程不能對64位進程直接進行遠程注入,反之亦然,64位進程也不能對32位進程直接進行遠程注入。這樣就會導致對用戶進程的審計和控制不準確。
[0003]鑒于此,如何解決windows系統(tǒng)下32位進程和64位進程交叉遠程注入的問題,以提高對用戶進程的審計和控制的準確性成為目前需要解決的技術問題。
【發(fā)明內(nèi)容】
[0004]為解決上述的技術問題,本發(fā)明提供一種32位進程和64位進程交叉注入方法及裝置,能夠解決windows系統(tǒng)下32位進程和64位進程交叉遠程注入的問題,提高安全軟件對用戶進程行為的審計和控制的準確性。
[0005]第一方面,本發(fā)明提供一種32位進程和64位進程交叉注入方法,包括:
[0006]在第一進程啟動第二進程時,將所述第二進程創(chuàng)建為一個暫停的進程,并獲取所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息;
[0007]將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息發(fā)送給第三進程;
[0008]所述第三進程根據(jù)接收的所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息,獲取相應的注入信息,并根據(jù)所述注入信息,對所述第二進程進行遠程注入;
[0009]其中,所述第三進程為所述第二進程的守護進程,所述第一進程與所述第二進程中的一個進程為64位進程、另一個進程為32位進程。
[0010]可選地,在所述對所述第二進程進行遠程注入之后,還包括:
[0011]所述第三進程在對所述第二進程的遠程注入完成之后,向所述第一進程發(fā)送注入完成信息;
[0012]所述第一進程在接收到所述第三進程發(fā)送的注入完成信息之后,使注入完成之后的第二進程繼續(xù)運行。
[0013]可選地,在所述獲取所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息之后,在所述將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息發(fā)送給第三進程之前,還包括:
[0014]將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息保存到共享內(nèi)存中。
[0015]可選地,所述第一進程為64位進程,所述第二進程為32位進程。
[0016]可選地,所述第一進程為32位進程,所述第二進程為64位進程。
[0017]第二方面,本發(fā)明提供一種32位進程和64位進程交叉注入裝置,包括:
[0018]獲取模塊,用于在第一進程啟動第二進程時,將所述第二進程創(chuàng)建為一個暫停的進程,并獲取所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息;
[0019]第一發(fā)送模塊,用于將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息發(fā)送給第三進程;
[0020]遠程注入模塊,用于所述第三進程根據(jù)接收的所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息,獲取相應的注入信息,并根據(jù)所述注入信息,對所述第二進程進行遠程注入;
[0021]其中,所述第三進程為所述第二進程的守護進程,所述第一進程與所述第二進程中的一個進程為64位進程、另一個進程為32位進程。
[0022]可選地,所述裝置,還包括:
[0023]第二發(fā)送模塊,用于所述第三進程在對所述第二進程的遠程注入完成之后,向所述第一進程發(fā)送注入完成信息;
[0024]運行模塊,用于所述第一進程在接收到所述第三進程發(fā)送的注入完成信息之后,使注入完成之后的第二進程繼續(xù)運行。
[0025]可選地,所述裝置,還包括:
[0026]保存模塊,用于將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息保存到共享內(nèi)存中。
[0027]可選地,所述第一進程為64位進程,所述第二進程為32位進程。
[0028]可選地,所述第一進程為32位進程,所述第二進程為64位進程。
[0029]由上述技術方案可知,本發(fā)明的32位進程和64位進程交叉注入方法及裝置,能夠解決windows系統(tǒng)下32位進程和64位進程交叉遠程注入的問題,提高安全軟件對用戶進程行為的審計和控制的準確性。
【附圖說明】
[0030]圖1為本發(fā)明一實施例提供的一種32位進程和64位進程交叉注入方法的流程示意圖;
[0031]圖2為本發(fā)明另一實施例提供的一種32位進程和64位進程交叉注入方法的流程示意圖;
[0032]圖3為本發(fā)明一實施例提供的一種32位進程和64位進程交叉注入裝置的結構示意圖;
[0033]圖4為本發(fā)明另一實施例提供的一種32位進程和64位進程交叉注入裝置的結構示意圖。
【具體實施方式】
[0034]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他的實施例,都屬于本發(fā)明保護的范圍。
[0035]圖1示出了本發(fā)明一實施例提供的32位進程和64位進程交叉注入方法的流程示意圖,如圖1所示,本實施例的32位進程和64位進程交叉注入方法如下所述。
[0036]101、在第一進程啟動第二進程時,將所述第二進程創(chuàng)建為一個暫停的進程,并獲取所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息。
[0037]102、將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息發(fā)送給第三進程。
[0038]103、所述第三進程根據(jù)接收的所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息,獲取相應的注入信息,并根據(jù)所述注入信息,對所述第二進程進行遠程注入。
[0039]其中,所述第三進程為所述第二進程的守護進程,所述第一進程與所述第二進程中的一個進程為64位進程、另一個進程為32位進程。
[0040]在具體應用中,本實施例所述第一進程為64位進程,所述第二進程為32位進程;
[0041]或者,本實施例所述第一進程為32位進程,所述第二進程為64位進程。
[0042]在具體應用中,如圖2所示,在所述步驟103之后,還包括步驟104-105:
[0043]104、所述第三進程在對所述第二進程的遠程注入完成之后,向所述第一進程發(fā)送注入完成信息。
[0044]105、所述第一進程在接收到所述第三進程發(fā)送的注入完成信息之后,使注入完成之后的第二進程繼續(xù)運行。
[0045]在具體應用中,在所述步驟101與步驟102之間,還可包括圖中未示出的步驟106:
[0046]106、將所述第二進程的進程信息和所述第一進程中需注入所述第二進程的模塊信息保存到共享內(nèi)存中。
[0047]本實施例的32位進程和64位進程交叉注入方法,能夠解決windows系統(tǒng)下32位進程和64位進程交叉遠程注入的問題,提高安全軟件對用戶進程行為的審計和控制的準確性。
[0048]舉例來說,以64位進程啟動32位進程為例,本實施例的32位進程和64位進程交叉注入方法可以包括:
[0049]S1、在64位進程啟動32位進程時,將所述32位進程創(chuàng)建為一個暫停的進程,并獲取所述32位進程的進程信息和所述64位進程中需注入所述32位進程的模塊信息。
[0050]S2、將所述32位進程的進程信息和所述64位進程中需注入所述32位進程的模塊信息保存到共享內(nèi)存中。
[0051]S3、將所述32位進程的進程信息和所述64位進程中需注入所述32位進程的模塊信息發(fā)送給所述32位進程的守護進程。
[0052]S4、所述32位進程的守護進程根據(jù)接收的所述32位進程的進程信息和所述64位進程中需注入所述32位進程的模塊信息,獲取相應的注入信息,并根據(jù)所述注入信息,對所述32位進程進行遠程注入。
[0053]S5、所述32位進程的守護進程在對所述32位進程的遠程注入完成之后,向所述64位進程發(fā)送注入完成信息。
[0054]S6、所述64位進程在接收到所述32位進程的守護進程發(fā)送的注入完成信息之后,使注入完成之后的32位進程繼續(xù)運