亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種Android系統(tǒng)堆溢出漏洞驗證方法及裝置與流程

文檔序號:12365229閱讀:來源:國知局

技術(shù)特征:

1.一種Android系統(tǒng)的堆溢出漏洞驗證裝置,其特征在于,所述裝置包括漏洞檢測模塊、利用判定模塊和利用驗證模塊;

其中,漏洞檢測模塊,用于向堆緩沖區(qū)填寫第一輸入樣本,檢測是否發(fā)生堆溢出,以確定堆溢出漏洞的存在性;

利用判定模塊,用于根據(jù)漏洞檢測模塊的結(jié)果,向堆緩沖區(qū)填寫第二輸入樣本,通過執(zhí)行漏洞引發(fā)Android系統(tǒng)的系統(tǒng)進程崩潰,以確定堆溢出漏洞被利用的可能性;

利用驗證模塊,用于根據(jù)利用判定模塊的結(jié)果,向堆緩沖區(qū)填寫第三輸入樣本,通過執(zhí)行漏洞控制Android系統(tǒng)的系統(tǒng)進程的執(zhí)行流程,以驗證堆溢出漏洞的可利用性。

2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述第一輸入樣本比堆緩沖區(qū)大小多四個字節(jié),多出的該四個字節(jié)為溢出值value1,用來覆蓋堆中C++對象的虛函數(shù)表指針;

所述漏洞檢測模塊用于:創(chuàng)建C++對象,監(jiān)控該對象所在的堆內(nèi)存區(qū)域;該內(nèi)存區(qū)域的前四個字節(jié)存放虛函數(shù)表指針,記錄該值為vftp1;向堆緩沖區(qū)填寫第一輸入樣本,記錄該內(nèi)存區(qū)域的前四個字節(jié)的值為vftp2;如果滿足條件vftp2!=vftp1且vftp2=value1,確定C++對象的虛函數(shù)表指針被第一輸入樣本的溢出值覆蓋,確定堆溢出漏洞存在。

3.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述利用判定模塊用于:構(gòu)造第二輸入樣本,所述第二輸入樣本比緩沖區(qū)大小多四個字節(jié),多出的該四個字節(jié)為溢出值,并且該值位于堆緩沖區(qū)的內(nèi)存地址區(qū)間內(nèi),用來覆蓋堆中C++對象的虛函數(shù)表指針;

向堆緩沖區(qū)填寫所述第二輸入樣本,堆溢出后引發(fā)系統(tǒng)進程崩潰,基于系統(tǒng)進程在虛函數(shù)調(diào)用點崩潰,確定堆溢出漏洞利用可能性。

4.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述利用驗證模塊用于構(gòu)造第三輸入樣本,所述第三輸入樣本比緩沖區(qū)大小多四個字節(jié),包含:溢出值、偽造虛函數(shù)表、偽造函數(shù)以及填充數(shù)據(jù);

其中,多出的該四個字節(jié)為溢出值,其值被設(shè)置為偽造虛函數(shù)表在堆內(nèi)存空間中的起始地址,用于覆蓋C++對象的虛函數(shù)表指針;

其中,偽造虛函數(shù)表中含有一個偽造函數(shù)指針,其值被設(shè)置為偽造函數(shù)在堆內(nèi)存空間中的起始地址,用來誤導(dǎo)系統(tǒng)進程調(diào)用相應(yīng)的虛函數(shù),執(zhí)行偽造函數(shù);

其中,偽造函數(shù)由多個匯編指令組成,用于將堆緩沖區(qū)的內(nèi)存區(qū)域標(biāo)記為可執(zhí)行,并且實現(xiàn)一個顯式的功能;

其中,填充數(shù)據(jù),用于追加在偽造虛函數(shù)表和偽造函數(shù)之后,以實現(xiàn)堆內(nèi)存空間的字節(jié)對齊,并保證所述第三輸入樣本的大小比緩沖區(qū)大小多四個字節(jié)。

5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述利用驗證模塊用于:

向堆緩沖區(qū)填寫第三輸入樣本,觸發(fā)堆緩沖區(qū)溢出;

C++對象的虛函數(shù)表指針將會被溢出值覆蓋,指向堆內(nèi)存空間中偽造虛函數(shù)表;

系統(tǒng)進程調(diào)用虛函數(shù),根據(jù)被覆蓋的虛函數(shù)表指針找到偽造虛函數(shù)表,被偽造函數(shù)指針錯誤地引導(dǎo)到偽造函數(shù)處執(zhí)行指令;

基于執(zhí)行偽造的函數(shù),確定堆溢出漏洞可利用性。

6.一種Android系統(tǒng)的堆溢出漏洞驗證方法,其特征在于,包括:

步驟1,向堆緩沖區(qū)填寫第一輸入樣本,檢測是否發(fā)生堆溢出,以確定Android系統(tǒng)是否存在堆溢出漏洞;

步驟2,基于堆溢出漏洞存在的檢測結(jié)果,向堆緩沖區(qū)填寫第二輸入樣本,執(zhí)行漏洞引發(fā)Android系統(tǒng)的系統(tǒng)進程崩潰,確定堆溢出漏洞被利用的可能性;

步驟3,基于堆溢出漏洞可能可利用,向堆緩沖區(qū)填寫第三輸入樣本,執(zhí)行漏洞控制Android系統(tǒng)的系統(tǒng)進程的執(zhí)行流程,驗證堆溢出漏洞的可利用性。

7.根據(jù)權(quán)利要求6所述的方法,其特征在于,其中,所述第一輸入樣本比緩沖區(qū)大小多四個字節(jié),多出的該四個字節(jié)為溢出值value1,用來覆蓋堆中C++對象的虛函數(shù)表指針;

所述步驟1進一步包括:

創(chuàng)建C++對象,監(jiān)控該對象所在的堆內(nèi)存區(qū)域,該內(nèi)存區(qū)域的前四個字節(jié)存放的是虛函數(shù)表指針,記錄該值為vftp1;

向堆緩沖區(qū)填寫第一輸入樣本,記錄該內(nèi)存區(qū)域的前四個字節(jié)的值為vftp2;如果滿足條件vftp2!=vftp1且vftp2=value1,確定C++對象的虛函數(shù)表指針被第一輸入樣本的溢出值覆蓋,確定堆溢出漏洞存在。

8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟2進一步包括:

構(gòu)造第二輸入樣本,所述第二輸入樣本比緩沖區(qū)大小多四個字節(jié),多出的該四個字節(jié)為溢出值,并且該溢出值位于堆緩沖區(qū)的內(nèi)存地址區(qū)間內(nèi),用來覆蓋堆中C++對象的虛函數(shù)表指針。;

向堆緩沖區(qū)填寫所述第二輸入樣本,堆溢出后引發(fā)系統(tǒng)進程崩潰,基于系統(tǒng)進程在虛函數(shù)調(diào)用點崩潰,確定堆溢出漏洞利用可能性。

9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述第三輸入樣本比緩沖區(qū)大小多四個字節(jié),包含:溢出值、偽造虛函數(shù)表、偽造函數(shù)以及填充數(shù)據(jù);

其中,多出的該四個字節(jié)為溢出值,其值被設(shè)置為偽造虛函數(shù)表在堆內(nèi)存空間中的起始地址,用于覆蓋C++對象的虛函數(shù)表指針;

其中,偽造虛函數(shù)表中含有一個偽造函數(shù)指針,其值被設(shè)置為偽造函數(shù)在堆內(nèi)存空間中的起始地址,用來誤導(dǎo)系統(tǒng)進程調(diào)用相應(yīng)的虛函數(shù),執(zhí)行偽造函數(shù);

其中,偽造的函數(shù)由多個匯編指令組成,用于將堆緩沖區(qū)的內(nèi)存區(qū)域標(biāo)記為可執(zhí)行,并且實現(xiàn)一個顯式的功能;

其中,填充數(shù)據(jù),用于追加在偽造虛函數(shù)表和偽造函數(shù)之后,以實現(xiàn)堆內(nèi)存空間的字節(jié)對齊,并保證所述第三輸入樣本的大小比緩沖區(qū)大小多四個字節(jié)。

10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述步驟3進一步包括:

向堆緩沖區(qū)填寫第三輸入樣本,觸發(fā)堆緩沖區(qū)溢出;

C++對象的虛函數(shù)表指針將會被溢出值覆蓋,指向堆內(nèi)存空間中偽造虛函數(shù)表;

系統(tǒng)進程調(diào)用虛函數(shù),根據(jù)被覆蓋的虛函數(shù)表指針找到偽造虛函數(shù)表,被偽造的函數(shù)指針錯誤地引導(dǎo)到偽造函數(shù)處執(zhí)行指令;

基于執(zhí)行偽造的函數(shù),確定堆溢出漏洞可利用性。

當(dāng)前第2頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1