本發(fā)明涉及代碼安全?,尤其涉及一種代碼混淆方法、裝置、電子設備及存儲介質(zhì)。
背景技術:
1、代碼混淆是一種常用技術手段,廣泛應用于保護代碼的知識產(chǎn)權(quán)、安全性及縮小代碼體積。其常用的方法包括:變量和函數(shù)重命名、刪除空白和注釋、字符串加密或編碼、控制流平坦化及無用代碼插入等。
2、現(xiàn)有的代碼混淆方法通常采用固定方式進行代碼混淆,市場上已存在較多逆向工具,混淆后的代碼也較容易被還原,因此安全性較差。
技術實現(xiàn)思路
1、本發(fā)明提供一種代碼混淆方法、裝置、電子設備及存儲介質(zhì),用以解決現(xiàn)有技術中代碼混淆方法安全性較差的缺陷,根據(jù)源代碼文件的安全級別,采用不同的混淆程度進行代碼混淆,提升了代碼混淆方法的安全性。
2、本發(fā)明提供一種代碼混淆方法,包括如下步驟:
3、確定待混淆代碼中的目標函數(shù),所述目標函數(shù)是待混淆的函數(shù);
4、獲取所述目標函數(shù)對應的混淆后函數(shù),所述混淆后函數(shù)被調(diào)用時先調(diào)用第一數(shù)量個目標中轉(zhuǎn)函數(shù)再調(diào)用所述目標函數(shù),所述第一數(shù)量是根據(jù)所述待混淆代碼對應的目標安全級別確定的;
5、將所述目標函數(shù)更新為所述混淆后函數(shù),得到混淆后代碼。
6、根據(jù)本發(fā)明提供的一種代碼混淆方法,所述獲取所述目標函數(shù)對應的混淆后函數(shù),包括:
7、確定所述目標函數(shù)對應的目標混淆次數(shù),所述目標混淆次數(shù)用于指示調(diào)用所述目標中轉(zhuǎn)函數(shù)的次數(shù),所述待混淆代碼對應的安全級別越高,所述目標函數(shù)對應的目標混淆次數(shù)越多;
8、確定與所述目標混淆次數(shù)對應的目標混淆數(shù)組,所述目標混淆數(shù)組用于調(diào)用所述第一數(shù)量個目標中轉(zhuǎn)函數(shù)和所述目標函數(shù);
9、根據(jù)所述目標混淆數(shù)組,確定所述混淆后函數(shù)。
10、根據(jù)本發(fā)明提供的一種代碼混淆方法,所述確定所述目標函數(shù)對應的目標混淆次數(shù),包括:
11、獲取所述待混淆代碼對應的目標安全級別;
12、根據(jù)所述目標安全級別,以及預設的安全級別與混淆次數(shù)的對應關系,確定與所述目標安全級別對應的目標混淆次數(shù),所述目標安全級別對應的目標混淆次數(shù)為所述目標函數(shù)對應的目標混淆次數(shù)。
13、根據(jù)本發(fā)明提供的一種代碼混淆方法,所述確定與所述目標混淆次數(shù)對應的目標混淆數(shù)組,包括:
14、獲取第二數(shù)量個初始數(shù)組,每個所述初始數(shù)組中包括相同的多個初始數(shù)值且所述多個初始數(shù)值的排列順序不同,所述多個初始數(shù)值分別對應多個中轉(zhuǎn)函數(shù),所述多個中轉(zhuǎn)函數(shù)包括所述目標函數(shù),所述第二數(shù)量等于所述目標混淆次數(shù)與一之和;
15、從每個所述初始數(shù)組中選出一個初始數(shù)值,得到第二數(shù)量個初始數(shù)值;
16、根據(jù)所述第二數(shù)量個初始數(shù)值,確定所述目標混淆數(shù)組,所述目標混淆數(shù)組對應所述第一數(shù)量個目標中轉(zhuǎn)函數(shù)和所述目標函數(shù)。
17、根據(jù)本發(fā)明提供的一種代碼混淆方法,所述待混淆代碼中包括多個待混淆的函數(shù),所述多個待混淆的函數(shù)為所述多個中轉(zhuǎn)函數(shù),所述多個初始數(shù)值是從零開始遞增的整數(shù),所述目標函數(shù)是所述多個待混淆的函數(shù)中的任一個,所述目標函數(shù)對應所述第二數(shù)量個初始數(shù)值中的目標初始數(shù)值,所述從每個所述初始數(shù)組中選出一個初始數(shù)值,得到第二數(shù)量個初始數(shù)值,包括:
18、在所述第二數(shù)量個初始數(shù)組的第一個初始數(shù)組中獲取下標為所述目標初始數(shù)值的第一個初始數(shù)值,再在下一個初始數(shù)組中獲取下標為所述第一個初始數(shù)值的第二個初始數(shù)值,再在下一個初始數(shù)組中獲取下標為所述第二個初始數(shù)值的第三個初始數(shù)值,照此方法遍歷所述第二數(shù)量個初始數(shù)組,得到第二數(shù)量個初始數(shù)值;
19、所述根據(jù)所述第二數(shù)量個初始數(shù)值,確定所述目標混淆數(shù)組,包括:
20、根據(jù)所述第二數(shù)量個初始數(shù)值的獲取順序,從最后獲取的初始數(shù)值開始倒序排列所述第二數(shù)量個初始數(shù)值,得到所述目標混淆數(shù)組。
21、根據(jù)本發(fā)明提供的一種代碼混淆方法,所述根據(jù)所述目標混淆數(shù)組,確定所述混淆后函數(shù),包括:
22、生成目標數(shù)量個子混淆函數(shù),每個所述子混淆函數(shù)包括當前調(diào)用的函數(shù)的初始數(shù)值、剩下的函數(shù)調(diào)用個數(shù)和目標函數(shù)對應的參數(shù);
23、將所述目標數(shù)量個子混淆函數(shù)確定為所述混淆后函數(shù)。
24、本發(fā)明還提供一種代碼混淆裝置,包括如下模塊:
25、函數(shù)確定模塊,用于確定待混淆代碼中的目標函數(shù),所述目標函數(shù)是待混淆的函數(shù);
26、函數(shù)獲取模塊,用于獲取所述目標函數(shù)對應的混淆后函數(shù),所述混淆后函數(shù)被調(diào)用時先調(diào)用第一數(shù)量個目標中轉(zhuǎn)函數(shù)再調(diào)用所述目標函數(shù),所述第一數(shù)量是根據(jù)所述待混淆代碼對應的目標安全級別確定的;
27、函數(shù)更新模塊,用于將所述目標函數(shù)更新為所述混淆后函數(shù),得到混淆后代碼。
28、本發(fā)明還提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如上述任一種所述代碼混淆方法。
29、本發(fā)明還提供一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種所述代碼混淆方法。
30、本發(fā)明還提供一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種所述代碼混淆方法。
31、本發(fā)明提供的代碼混淆方法、裝置、電子設備及存儲介質(zhì),根據(jù)源代碼文件的安全級別,采用不同的混淆程度進行代碼混淆,提升了代碼混淆方法的安全性。
1.一種代碼混淆方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的代碼混淆方法,其特征在于,所述獲取所述目標函數(shù)對應的混淆后函數(shù),包括:
3.根據(jù)權(quán)利要求2所述的代碼混淆方法,其特征在于,所述確定所述目標函數(shù)對應的目標混淆次數(shù),包括:
4.根據(jù)權(quán)利要求2所述的代碼混淆方法,其特征在于,所述確定與所述目標混淆次數(shù)對應的目標混淆數(shù)組,包括:
5.根據(jù)權(quán)利要求4所述的代碼混淆方法,其特征在于,所述待混淆代碼中包括多個待混淆的函數(shù),所述多個待混淆的函數(shù)為所述多個中轉(zhuǎn)函數(shù),所述多個初始數(shù)值是從零開始遞增的整數(shù),所述目標函數(shù)是所述多個待混淆的函數(shù)中的任一個,所述目標函數(shù)對應所述第二數(shù)量個初始數(shù)值中的目標初始數(shù)值,所述從每個所述初始數(shù)組中選出一個初始數(shù)值,得到第二數(shù)量個初始數(shù)值,包括:
6.根據(jù)權(quán)利要求2所述的代碼混淆方法,其特征在于,所述根據(jù)所述目標混淆數(shù)組,確定所述混淆后函數(shù),包括:
7.一種代碼混淆裝置,其特征在于,包括:
8.一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如權(quán)利要求1至6任一項所述代碼混淆方法。
9.一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至6任一項所述代碼混淆方法。
10.一種計算機程序產(chǎn)品,包括計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至6任一項所述代碼混淆方法。