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