最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種程序保護方法及相關裝置與流程

文檔序號:41957257發(fā)布日期:2025-05-20 16:51閱讀:5來源:國知局
一種程序保護方法及相關裝置與流程

本技術涉及終端領域,尤其涉及一種程序保護方法及相關裝置。


背景技術:

1、部分應用程序(例如,瀏覽器應用)可以從遠程服務器下載網(wǎng)頁代碼,在本地解析網(wǎng)頁代碼后,向用戶提供界面和功能。如果瀏覽器應用下載到不可信來源提供的網(wǎng)頁代碼,可能會對用戶帶來損失。當前,瀏覽器應用通常會使用代碼簽名安全機制技術,保證下載的網(wǎng)頁代碼的安全性。代碼簽名技術包括兩個環(huán)節(jié):1.程序認證或提供方在對程序進行簽名后,將簽名和程序一起下發(fā)到客戶端。2.客戶端在運行程序時,通過簽名驗證程序的完整性信息,以保護程序的完整性,并且可以驗證程序來源是否可信,防止客戶端執(zhí)行來源不可信的惡意程序。這樣,通過強制所有運行的進程只能加載帶簽名的程序的代碼簽名機制,可以保證程序的來源的可靠性,大幅度降低獲取惡意代碼的概率。

2、為了提高執(zhí)行速度,讓頁面更加快速的響應,瀏覽器應用使用即時編譯(just-in-time?compilation,jit?compilation)技術,將網(wǎng)頁內(nèi)使用的解釋型語言編寫的代碼編譯成機器碼(即,jit代碼),通過執(zhí)行jit代碼來代替使用解釋器解釋執(zhí)行代碼,提高程序的運行速度。

3、但是jit代碼為客戶端動態(tài)編譯生成的代碼,生成的jit代碼與客戶端使用的指令集、以及客戶端提供的功能相關,使得代碼來源無法預測基于解釋型語言編寫的代碼生成的jit代碼。因此,無法通過代碼簽名機制,對jit代碼進行來源驗證以及完整性保護。這使得瀏覽器的jit技術成為了攻擊者的攻擊目標。攻擊者利用瀏覽器的漏洞,篡改可執(zhí)行的jit代碼以達到執(zhí)行惡意代碼的目的,或者,攻擊者還可以通過構造畸形的網(wǎng)頁輸入,使得jit編譯器編譯出來的jit代碼用于執(zhí)行惡意行為。


技術實現(xiàn)思路

1、本技術提供了一種程序保護方法及相關裝置,實現(xiàn)了在通過渲染進程將解釋型語言代碼編譯得到jit代碼時,通過主進程和內(nèi)核檢測jit代碼的安全性及完整性,在檢測通過后,將存放jit代碼的內(nèi)存區(qū)域的權限修改為可讀、不可寫且可執(zhí)行。使得電子設備通過渲染進程執(zhí)行jit代碼之前,任何進程都無法修改jit代碼,保證jit代碼的安全。

2、第一方面,本技術提供了一種程序保護方法,應用于電子設備,電子設備運行操作系統(tǒng)和指定應用,指定應用包括主進程和渲染進程,操作系統(tǒng)包括內(nèi)核;該方法包括:在主進程獲取網(wǎng)頁服務器發(fā)送的解釋型語言代碼后,調(diào)用渲染進程編譯解釋型語言代碼,得到即時編譯jit代碼;渲染進程將jit代碼寫入第一內(nèi)存區(qū)域,第一內(nèi)存區(qū)域的權限為可讀、可寫且不可執(zhí)行;主進程計算jit代碼的第一完整性信息;主進程向內(nèi)核發(fā)送權限修改請求,權限修改請求用于通知內(nèi)核將第一內(nèi)存區(qū)域的權限修改為可讀、不可寫且可執(zhí)行;內(nèi)核接收到權限修改請求后,計算jit代碼的第二完整性信息;當內(nèi)核確定出第一完整性信息與第二完整性信息相同時,將第一內(nèi)存區(qū)域的權限修改為可讀、不可寫且可執(zhí)行;渲染進程運行解釋型語言代碼時,執(zhí)行第一內(nèi)存區(qū)域中的jit代碼。

3、這樣,電子設備通過主進程計算完整性信息,在內(nèi)核中校驗完整性信息,防止jit代碼被篡改,實現(xiàn)保護jit代碼的完整性的效果。同時電子設備通過內(nèi)核校驗權限修改的合法性,執(zhí)行不可信程序的渲染進程沒有直接將存放jit代碼的內(nèi)存區(qū)域設置為可執(zhí)行的權限,電子設備在執(zhí)行未被簽名的不可信程序之前,必須通過主進程和內(nèi)核的校驗,并且主進程中執(zhí)行的代碼均為可信代碼,降低了在執(zhí)行jit代碼之前jit代碼被篡改的概率,并且降低了電子設備執(zhí)行惡意代碼的概率。

4、在一種可能的實現(xiàn)方式中,主進程向內(nèi)核發(fā)送權限修改請求,具體包括:主進程檢測jit代碼是否包括惡意代碼;當主進程檢測到jit代碼不包括惡意代碼時,主進程向內(nèi)核發(fā)送權限修改請求。

5、這樣,電子設備通過對執(zhí)行權限的設置,以及對于無代碼簽名的不可信代碼進行惡意代碼掃描,降低了指定應用被攻擊的風險,解決了jit代碼不能被代碼簽名技術保護的問題,降低電子設備100執(zhí)行惡意代碼的概率。

6、在一種可能的實現(xiàn)方式中,在渲染進程將jit代碼寫入第一內(nèi)存區(qū)域之后,方法還包括:主進程檢測jit代碼是否包括惡意代碼;若主進程檢測到jit代碼包括惡意代碼,向風險服務器發(fā)送第一風險數(shù)據(jù),第一風險數(shù)據(jù)用于指示jit代碼有風險。這樣,風險服務器可以獲取電子設備執(zhí)行風險代碼的信息,便于維護人員據(jù)此分析jit代碼包括惡意代碼的原因,使得維護人員可以改進電子設備的程序,避免電子設備再次獲取惡意代碼。

7、在一些示例中,在主進程獲取網(wǎng)頁服務器發(fā)送的解釋型語言代碼后,方法還包括:主進程從風險服務器獲取不可信來源信息,不可信來源信息用于指示不可信來源;主進程基于不可信來源信息,檢測解釋型語言代碼的來源是否屬于不可信來源;若主進程檢測到解釋型語言代碼的來源屬于不可信來源,停止執(zhí)行解釋型語言代碼。調(diào)用渲染進程編譯解釋型語言代碼,得到即時編譯jit代碼,具體包括:主進程檢測到解釋型語言代碼的來源不屬于不可信來源,調(diào)用渲染進程編譯解釋型語言代碼,得到即時編譯jit代碼。這樣,通過檢測解釋型語言代碼的來源,可以減小電子設備100獲取不可信來源的惡意代碼的概率。

8、在一種可能的實現(xiàn)方式中,在渲染進程將jit代碼寫入第一內(nèi)存區(qū)域之前,方法還包括:主進程調(diào)用內(nèi)核申請第二內(nèi)存區(qū)域,第二內(nèi)存區(qū)域包括第一內(nèi)存區(qū)域。主進程將第二內(nèi)存區(qū)域的地址發(fā)送到渲染進程;渲染進程基于jit代碼的數(shù)據(jù)量,查找第一內(nèi)存區(qū)域。這樣,主進程申請第二內(nèi)存區(qū)域,渲染進程可以按照jit代碼的數(shù)據(jù)量,在第二內(nèi)存區(qū)域中查找合適的內(nèi)存區(qū)域,存放jit代碼,不需要主進程多次重復申請內(nèi)存區(qū)域。

9、在一些示例中,第二內(nèi)存區(qū)域為共享內(nèi)存區(qū)域,主進程與渲染進程都能訪問第二內(nèi)存區(qū)域。

10、在一種可能的實現(xiàn)方式中,在渲染進程將jit代碼寫入第一內(nèi)存區(qū)域之前,方法還包括:渲染進程將jit代碼的數(shù)據(jù)量發(fā)送到主進程;主進程基于jit代碼的數(shù)據(jù)量,調(diào)用內(nèi)核申請第一內(nèi)存區(qū)域;主進程將第一內(nèi)存區(qū)域的地址發(fā)送到渲染進程。這樣,主進程基于jit代碼數(shù)據(jù)量,分配內(nèi)存區(qū)域,節(jié)省空閑的內(nèi)存空間。

11、在一種可能的實現(xiàn)方式中,在主進程獲取網(wǎng)頁服務器發(fā)送的解釋型語言代碼后,方法還包括:主進程驗證解釋型語言代碼的簽名;調(diào)用渲染進程編譯解釋型語言代碼,具體包括:主進程驗證解釋型語言代碼的簽名通過,調(diào)用渲染進程編譯解釋型語言代碼。這樣,主進程校驗解釋型語言代碼的代碼簽名,可以減小電子設備100執(zhí)行惡意代碼的概率。

12、在一些示例中,主進程驗證解釋型語言代碼的簽名信息通過,具體包括:主進程確定出該簽名屬于可信來源。

13、在一種可能的實現(xiàn)方式中,若主進程驗證解釋型語言代碼的簽名不通過,停止執(zhí)行解釋型語言代碼的操作。在一些示例中,主進程驗證解釋型語言代碼的簽名不通過,具體包括:主進程確定出該簽名屬于不可信來源。

14、在一種可能的實現(xiàn)方式中,在內(nèi)核接收到權限修改請求后,方法還包括:內(nèi)核判斷發(fā)送權限修改請求的進程是否為主進程;計算jit代碼的第二完整性信息,具體包括:內(nèi)核判定出發(fā)送權限修改請求的進程為主進程,計算第二完整性信息。這樣,電子設備驗證發(fā)送該權限修改請求的進程是否為主進程,可以防止渲染進程跳過主進程修改第一內(nèi)存區(qū)域的權限。

15、在一些示例中,若內(nèi)核判定出發(fā)送權限修改請求的進程不為主進程,檢測第一內(nèi)存區(qū)域中的代碼是否為具有代碼簽名的代碼。內(nèi)核檢測到第一內(nèi)存區(qū)域中的代碼具有代碼簽名,并且驗證代碼簽名通過,按照權限修改請求修改第一內(nèi)存區(qū)域的權限。內(nèi)核檢測到第一內(nèi)存區(qū)域中的代碼不具有代碼簽名或驗證代碼簽名不通過,拒絕修改第一內(nèi)存區(qū)域的權限。這樣,內(nèi)核在接收到主進程以外的進程發(fā)送的權限修改請求后,校驗該內(nèi)存區(qū)域的數(shù)據(jù)的代碼簽名,可以保證電子設備能夠順利執(zhí)行具有可信來源的代碼簽名的代碼。

16、在一種可能的實現(xiàn)方式中,方法還包括:當內(nèi)核確定出第一完整性信息與第二完整性信息不同時,拒絕修改第一內(nèi)存區(qū)域的權限。這樣,當電子設備檢測到第一完整性信息與第二完整性信息不同,表明jit代碼被篡改,拒絕修改第一內(nèi)存區(qū)域的權限。

17、在一種可能的實現(xiàn)方式中,當方法還包括:在渲染進程執(zhí)行完第一內(nèi)存區(qū)域中的jit代碼之后,回收第一內(nèi)存區(qū)域。

18、在一種可能的實現(xiàn)方式中,方法還包括:在回收第一內(nèi)存區(qū)域之前,內(nèi)核計算jit代碼的第三完整性信息;當?shù)谌暾孕畔⑴c第二完整性信息不同時,電子設備向風險服務器發(fā)送第二風險數(shù)據(jù),第二風險數(shù)據(jù)用于指示jit代碼有風險。這樣,電子設備在回收第一內(nèi)存區(qū)域之前,檢測jit代碼的完整性信息,可以及時發(fā)現(xiàn)是否執(zhí)行有風險的jit代碼,使得電子設備可以盡快修復篡改漏洞,防止再次出現(xiàn)jit代碼被篡改的情形。

19、在一種可能的實現(xiàn)方式中,方法還包括:電子設備基于散列函數(shù)計算第一完整性信息以及第二完整性信息。

20、在一種可能的實現(xiàn)方式中,解釋型語言代碼為javascript代碼。

21、第二方面,本技術提供了一種電子設備,包括一個或多個處理器和一個或多個存儲器。該一個或多個存儲器與一個或多個處理器耦合,一個或多個存儲器用于存儲計算機可執(zhí)行程序,當一個或多個處理器執(zhí)行計算機可執(zhí)行程序時,使得電子設備執(zhí)行上述第一方面任一項可能的實現(xiàn)方式中的程序保護方法。

22、第三方面,本技術實施例提供了一種計算機存儲介質(zhì),包括計算機程序,當計算機程序在電子設備上運行時,使得電子設備執(zhí)行上述第一方面任一項可能的實現(xiàn)方式中的程序保護方法。

23、第四方面,本技術實施例提供了一種計算機程序產(chǎn)品,當計算機程序產(chǎn)品在計算機上運行時,使得計算機執(zhí)行上述第一方面任一項可能的實現(xiàn)方式中的程序保護方法。

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