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

一種不透明謂詞的插入方法及裝置與流程

文檔序號(hào):12906336閱讀:473來(lái)源:國(guó)知局
一種不透明謂詞的插入方法及裝置與流程

本發(fā)明涉及軟件保護(hù)技術(shù)領(lǐng)域,更具體地說(shuō),涉及一種不透明謂詞的插入方法及裝置。



背景技術(shù):

計(jì)算機(jī)軟件作為人機(jī)交互的媒介,大大增加了計(jì)算機(jī)的便捷程度并降低了用戶使用計(jì)算機(jī)的門檻。那些功能和技術(shù)完備的商業(yè)軟件體現(xiàn)著開發(fā)人員的智慧,軟件的實(shí)現(xiàn)也蘊(yùn)藏了軟件廠商的核心商業(yè)機(jī)密。軟件盜版是軟件產(chǎn)業(yè)發(fā)展的一個(gè)重要安全問(wèn)題,軟件逆向工程通過(guò)非法途徑破解軟件,竊取軟件的核心算法和商業(yè)機(jī)密,導(dǎo)致軟件的知識(shí)產(chǎn)權(quán)遭受重大的損害,得不到應(yīng)有的權(quán)益保護(hù)。代碼混淆技術(shù)作為一種新興的軟件保護(hù)技術(shù),在軟件保護(hù)領(lǐng)域受到越來(lái)越多的關(guān)注和應(yīng)用。代碼混淆技術(shù)可分為布局混淆、數(shù)據(jù)混淆、控制流混淆和預(yù)防性混淆四類,其中不透明謂詞混淆技術(shù)具有形式簡(jiǎn)單,不顯著增加程序開銷的優(yōu)點(diǎn),成為熱點(diǎn)的控制流混淆技術(shù)之一。通過(guò)構(gòu)造不透明謂詞并將其插入程序代碼中,可以有效增加程序的復(fù)雜度,使得破解者的逆向工作變得更加困難。

常用的插入點(diǎn)選擇方式有兩種:

1.插入至需要使用布爾值進(jìn)行程序分支走向控制之處。例如if語(yǔ)句的判斷條件或循環(huán)語(yǔ)句的邊界條件判斷處。

2.在順序執(zhí)行的語(yǔ)句塊中間插入謂詞,將順序執(zhí)行的控制流轉(zhuǎn)換為分支控制流。謂詞插入后不影響程序的執(zhí)行過(guò)程,即實(shí)際的運(yùn)行過(guò)程依舊與原順序執(zhí)行的過(guò)程相同。

然而,在上述不透明謂詞插入技術(shù),由于插入后的不透明謂詞與程序中原有謂詞是分別獨(dú)立存在的,通過(guò)靜態(tài)分析技術(shù)破解者有可能找到插入的不透明謂詞,然后將其去除;因此,如何增加代碼混淆抵抗靜態(tài)分析的能力,增加代碼混淆的安全性,是本領(lǐng)域技術(shù)人員需要解決的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于提供一種不透明謂詞的插入方法及裝置,以實(shí)現(xiàn)增加代碼混淆抵抗靜態(tài)分析的能力,增加代碼混淆的安全性。

為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了如下技術(shù)方案:

一種不透明謂詞的插入方法,包括:

定位原代碼分支語(yǔ)句中的表達(dá)式;

利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式;

構(gòu)造永真混沌不透明謂詞;

利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞;

根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,將組合后生成的不透明謂詞插入所述原代碼,生成混淆代碼。

其中,所述利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式,包括:

利用比較運(yùn)算符將所述表達(dá)式p分割為三部分,分割后的表達(dá)式包括第一表達(dá)式p1、比較運(yùn)算符op、第二表達(dá)式p2。

其中,所述利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞,包括:

利用第二運(yùn)算符=將所述永真混沌不透明謂詞q分割為三部分,分割后的永真混沌不透明謂詞包括:第一不透明謂詞q1、第二運(yùn)算符=、第二不透明謂詞q2。

其中,所述根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,包括:

將第一不透明謂詞q1、第二不透明謂詞q2分別添加至所述比較運(yùn)算符op的兩端,生成的組合后的不透明謂詞p&q包括:p&q=((p1+q1)op(p2+q2))。

其中,生成的組合后的不透明謂詞p&q的真值表與表達(dá)式p的真值表相同。

一種不透明謂詞的插入裝置,包括:

表達(dá)式定位模塊,用于定位原代碼分支語(yǔ)句中的表達(dá)式;

第一分割模塊,用于利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式;

不透明謂詞構(gòu)造模塊,用于構(gòu)造永真混沌不透明謂詞;

第二分割模塊,用于利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞;

組合模塊,用于根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合;

插入模塊,用于將組合后生成的不透明謂詞插入所述原代碼,生成混淆代碼。

其中,所述第一分割模塊利用比較運(yùn)算符將所述表達(dá)式p分割為三部分,分割后的表達(dá)式包括第一表達(dá)式p1、比較運(yùn)算符op、第二表達(dá)式p2。

其中,所述第二分割模塊利用第二運(yùn)算符=將所述永真混沌不透明謂詞q分割為三部分,分割后的永真混沌不透明謂詞包括:第一不透明謂詞q1、第二運(yùn)算符=、第二不透明謂詞q2。

其中,所述組合模塊將第一不透明謂詞q1、第二不透明謂詞q2分別添加至所述比較運(yùn)算符op的兩端,生成的組合后的不透明謂詞p&q包括:p&q=((p1+q1)op(p2+q2))。

其中,生成的組合后的不透明謂詞p&q的真值表與表達(dá)式p的真值表相同。

通過(guò)以上方案可知,本發(fā)明實(shí)施例提供的一種不透明謂詞的插入方法,包括:定位原代碼分支語(yǔ)句中的表達(dá)式;利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式;構(gòu)造永真混沌不透明謂詞;利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞;根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,將組合后生成的不透明謂詞插入所述原代碼,生成混淆代碼。

可見(jiàn),在本方案中,通過(guò)將構(gòu)造的永真不透明謂詞與程序中原有分支判斷語(yǔ)句結(jié)合為一體的新的插入混淆方法,可提高抵抗靜態(tài)分析的能力,增加代碼混淆的安全性;本發(fā)明還公開了一種不透明謂詞的插入裝置,同樣能實(shí)現(xiàn)上述技術(shù)效果。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例公開的一種不透明謂詞的插入方法流程示意圖;

圖2為本發(fā)明實(shí)施例公開的一種不透明謂詞的插入裝置結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

需要說(shuō)明的是,在攻擊者的角度,攻擊不透明謂詞p(x1,x2,...,xn)的過(guò)程可以概括為如下五個(gè)步驟:

定位構(gòu)成不透明謂詞p(x1,x2,...,xn)的指令;

確定p的輸入?yún)?shù),即x1,x2,...,xn;

確定各個(gè)輸入?yún)?shù)的取值范圍r1,r2,...,rn;

根據(jù)x1,x2,...,xn所有的取值排列組合,計(jì)算p的所有取值。如果無(wú)法對(duì)p的所有可能輸入情況一一進(jìn)行測(cè)試,可以借助統(tǒng)計(jì)的方法在一定概率上確定p的結(jié)果。

如果p的所有取值總是為真,則把條件轉(zhuǎn)移指令替換成無(wú)條件轉(zhuǎn)移指令;如果p的所有取值總是為假,則把包括條件轉(zhuǎn)移指令在內(nèi)的所有組成謂詞的指令全部忽略。

由于攻擊者首先需要定位不透明謂詞,因此在本實(shí)施例中公開了一種不透明謂詞的插入方法及裝置,將不透明謂詞q進(jìn)行分拆,然后與程序中原有的表達(dá)式p合并成為一個(gè)整體,組成一個(gè)新的更加復(fù)雜的謂詞p&q,大大增加了定位不透明謂詞的難度,實(shí)現(xiàn)增加代碼混淆抵抗靜態(tài)分析的能力,增加代碼混淆的安全性。

參見(jiàn)圖1,本發(fā)明實(shí)施例提供的一種不透明謂詞的插入方法,包括:

s101、定位原代碼分支語(yǔ)句中的表達(dá)式,利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式;

其中,所述利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式,包括:

利用比較運(yùn)算符將所述表達(dá)式p分割為三部分,分割后的表達(dá)式包括第一表達(dá)式p1、比較運(yùn)算符op、第二表達(dá)式p2。

具體的,在本方案中首先要定位分支語(yǔ)句中的表達(dá)式p,以比較運(yùn)算符op為界,分解為p1、op和p2三部分:p=(p1opp2)。

s102、構(gòu)造永真混沌不透明謂詞,利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞;

其中,所述利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞,包括:

利用第二運(yùn)算符=將所述永真混沌不透明謂詞q分割為三部分,分割后的永真混沌不透明謂詞包括:第一不透明謂詞q1、第二運(yùn)算符=、第二不透明謂詞q2。

具體的,在本方案中,需構(gòu)造永真混沌不透明謂詞q,以運(yùn)算符“=”為界,同樣分解為q1、=和q2三部分:q=(q1=q2)。

s103、根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,將組合后生成的不透明謂詞插入所述原代碼,生成混淆代碼。

其中,所述根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,包括:

將第一不透明謂詞q1、第二不透明謂詞q2分別添加至所述比較運(yùn)算符op的兩端,生成的組合后的不透明謂詞p&q包括:p&q=((p1+q1)op(p2+q2));生成的組合后的不透明謂詞p&q的真值表與表達(dá)式p的真值表相同。

具體的,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,生成新的不透明謂詞時(shí),可見(jiàn)將q1和q2分別添加到p左右兩端,構(gòu)成一個(gè)新的謂詞p&q,具體為:p&q=((p1+q1)op(p2+q2))。

需要說(shuō)明的是,由q1和q2的等價(jià)性,p&q的真值表與p完全相同。如果p不是永真式,則p&q會(huì)根據(jù)不同輸入表現(xiàn)出時(shí)真時(shí)假的特性,大大增加了不透明謂詞被發(fā)現(xiàn)和破解的難度,同時(shí)也使得程序原有的表達(dá)式p更加復(fù)雜,進(jìn)一步掩蓋原代碼作者的意圖,使得混淆后的程序具有更高的安全性。

下面提供一應(yīng)用本方案的具體實(shí)施例:

p=(x+1>y+2);這里的第一表達(dá)式p1=x+1、比較運(yùn)算符op為>、第二表達(dá)式p2=y(tǒng)+2;

q=x(x+1)%2=0;這里的第一不透明謂詞q1=x(x+1)%2、第二不透明謂詞q2=0;

則生成組合后的不透明謂詞為:

p&q=x+1+x(x+1)%2>y+2;

原代碼為:

在此實(shí)例中,攻擊者無(wú)法將不透明謂詞q從p&q中區(qū)分開來(lái),而是必須對(duì)整個(gè)較為復(fù)雜的p&q進(jìn)行攻擊,大大增加了難度和工作量。

下面對(duì)本發(fā)明實(shí)施例提供的插入裝置進(jìn)行介紹,下文描述的插入裝置與上文描述的插入方法可以相互參照。

參見(jiàn)圖2,本發(fā)明實(shí)施例提供的一種不透明謂詞的插入裝置,包括:

表達(dá)式定位模塊100,用于定位原代碼分支語(yǔ)句中的表達(dá)式;

第一分割模塊200,用于利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式;

不透明謂詞構(gòu)造模塊300,用于構(gòu)造永真混沌不透明謂詞;

第二分割模塊400,用于利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞;

組合模塊500,用于根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合;

插入模塊600,用于將組合后生成的不透明謂詞插入所述原代碼,生成混淆代碼。

基于上述實(shí)施例,所述第一分割模塊利用比較運(yùn)算符將所述表達(dá)式p分割為三部分,分割后的表達(dá)式包括第一表達(dá)式p1、比較運(yùn)算符op、第二表達(dá)式p2。

基于上述實(shí)施例,所述第二分割模塊利用第二運(yùn)算符=將所述永真混沌不透明謂詞q分割為三部分,分割后的永真混沌不透明謂詞包括:第一不透明謂詞q1、第二運(yùn)算符=、第二不透明謂詞q2。

基于上述實(shí)施例,所述組合模塊將第一不透明謂詞q1、第二不透明謂詞q2分別添加至所述比較運(yùn)算符op的兩端,生成的組合后的不透明謂詞p&q包括:p&q=((p1+q1)op(p2+q2))。

基于上述實(shí)施例,生成的組合后的不透明謂詞p&q的真值表與表達(dá)式p的真值表相同。

本發(fā)明實(shí)施例提供的一種不透明謂詞的插入方法,包括:定位原代碼分支語(yǔ)句中的表達(dá)式;利用第一運(yùn)算符對(duì)所述表達(dá)式進(jìn)行分割,生成分割后的表達(dá)式;構(gòu)造永真混沌不透明謂詞;利用第二運(yùn)算符對(duì)所述永真混沌不透明謂詞進(jìn)行分割,生成分割后的永真混沌不透明謂詞;根據(jù)預(yù)定組合規(guī)則,將分割后的表達(dá)式與分割后的永真混沌不透明謂詞進(jìn)行組合,將組合后生成的不透明謂詞插入所述原代碼,生成混淆代碼。可見(jiàn),在本方案中,通過(guò)將構(gòu)造的永真不透明謂詞與程序中原有分支判斷語(yǔ)句結(jié)合為一體的新的插入混淆方法,可提高抵抗靜態(tài)分析的能力,增加代碼混淆的安全性;本發(fā)明還公開了一種不透明謂詞的插入裝置,同樣能實(shí)現(xiàn)上述技術(shù)效果。

本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。

對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1