本發(fā)明涉及直播視頻播放技術(shù)領(lǐng)域,具體涉及一種flash中防止代碼被破解的方法及系統(tǒng)。
背景技術(shù):
目前,flash被廣泛的用于網(wǎng)頁設(shè)計和網(wǎng)頁動畫制作及網(wǎng)頁視頻播放等。大多數(shù)的視頻網(wǎng)站包括直播網(wǎng)站都采用flash做為其視頻播放器,并且大多數(shù)的網(wǎng)頁游戲也會使用flash來開發(fā)。而swf文件(swf,全稱shockwaveflash,是macromedia公司的動畫設(shè)計軟件flash的專用格式,因此swf文件通常也被稱為flash文件)其代碼是使用actionscript腳本語言來進(jìn)行編寫。actionscript腳本語言很容易被反編譯,并且反編譯后代碼和原始的代碼差不多,從而非常容易弄清楚其中的實(shí)現(xiàn)邏輯。因此,需要對actionscript的代碼采取保護(hù)措施,以提高被黑客逆向破解的門檻或者時間。
現(xiàn)在常用的做法是對actionscript代碼中所使用的所有變量名和/或函數(shù)名進(jìn)行混淆或者加密,然而僅僅加密函數(shù)名、變量名只是增加閱讀代碼的時間,其源代碼的實(shí)現(xiàn)邏輯和執(zhí)行流程并沒有發(fā)生變化,并未實(shí)質(zhì)提高代碼被黑客逆向破解的門檻,采用修改變量名和/或函數(shù)名的做法并未起到很好的防止代碼被破解的效果。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種flash中防止代碼被破解的方法及系統(tǒng),有效提高代碼被黑客逆向破解的門檻,防止代碼被破解。
為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:一種flash中防止代碼被破解的方法:在程序中添加多條代碼分支,在程序的開頭添加一個分支判斷變量作為判斷執(zhí)行哪條代碼分支的條件,并在每條代碼分支中添加一個分支比較變量作為該分支的執(zhí)行條件,其中僅有一個分支的分支比較變量與分支判斷變量相同;將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中;在分支比較變量與分支判斷變量不一致的代碼分支中添加無用代碼。
在上述技術(shù)方案的基礎(chǔ)上,對分支判斷變量進(jìn)行md5計算得出分支判斷變量的md5值,并將分支判斷變量的md5值作為當(dāng)前的分支判斷變量;對各代碼分支的分支比較變量分別進(jìn)行md5計算得出各分支比較變量的md5值,并將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量。
在上述技術(shù)方案的基礎(chǔ)上,所述無用代碼為對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼。
在上述技術(shù)方案的基礎(chǔ)上,對程序原本的執(zhí)行代碼進(jìn)行修改包括:減少或增加程序原本的執(zhí)行代碼的循環(huán)執(zhí)行次數(shù)、修改程序原本的執(zhí)行代碼中使用的key值或?qū)⒊绦蛟镜膱?zhí)行代碼進(jìn)行加密操作的結(jié)果添加至程序原本的執(zhí)行代碼的最后。
在上述技術(shù)方案的基礎(chǔ)上,所述分支判斷變量為數(shù)值型變量。
本發(fā)明還公開了一種flash中防止代碼被破解的系統(tǒng),其特征在于,包括:
分支創(chuàng)建模塊,用于在程序中添加多條代碼分支,在程序的開頭添加一個分支判斷變量作為判斷執(zhí)行哪條代碼分支的條件,并在每條代碼分支中添加一個分支比較變量作為該分支的執(zhí)行條件,且其中僅有一分支的分支比較變量與分支判斷變量相同;
代碼轉(zhuǎn)移模塊,用于將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中;
代碼添加模塊,用于在分支比較變量與分支判斷變量不一致的代碼分支中添加無用代碼。
在上述技術(shù)方案的基礎(chǔ)上,所述flash中防止代碼被破解的系統(tǒng)還包括變量修改模塊,所述變量修改模塊用于對分支判斷變量進(jìn)行md5計算得出分支判斷變量的md5值,并將分支判斷變量的md5值作為當(dāng)前的分支判斷變量;對各代碼分支的分支比較變量分別進(jìn)行md5計算得出各分支比較變量的md5值,并將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量。
在上述技術(shù)方案的基礎(chǔ)上,所述無用代碼為對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼。
在上述技術(shù)方案的基礎(chǔ)上,所述flash中防止代碼被破解的系統(tǒng)還包括無用代碼生成模塊,所述無用代碼生成模塊用于對程序原本的執(zhí)行代碼進(jìn)行修改以生成無用代碼。
在上述技術(shù)方案的基礎(chǔ)上,對程序原本的執(zhí)行代碼進(jìn)行修改包括:減少或增加程序原本的執(zhí)行代碼的循環(huán)執(zhí)行次數(shù)、修改程序原本的執(zhí)行代碼中使用的key值或?qū)⒊绦蛟镜膱?zhí)行代碼進(jìn)行加密操作的結(jié)果添加至程序原本的執(zhí)行代碼的最后。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
(1)本發(fā)明通過在程序中添加多條代碼分支,將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中,在其他代碼分支中添加無用代碼,通過分支判斷變量與分支比較變量的設(shè)置使得在執(zhí)行程序時僅執(zhí)行分支比較變量與分支判斷變量一致的代碼分支,同時采用多條代碼分支及無用代碼將真正執(zhí)行的代碼隱藏到大量的代碼中,又有效提高代碼被黑客逆向破解的門檻,防止代碼被破解。
(2)本發(fā)明還將分支判斷變量的md5值作為當(dāng)前的分支判斷變量及將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量,通常的分支都是判斷一個變量或者一段字符串是否等于某個值,從而代碼可讀性比較高。而本發(fā)明則使用將分支判斷變量及各分支比較變量的md5值作為分支的判斷條件,從而使得分支代碼比較復(fù)雜也不易于讀懂,增加代碼被黑客破解的難度。
(3)本發(fā)明還將對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼作為無用代碼,可以使黑客逆向破解時更為困惑,讓其以為每條分支代碼都是有可能會被執(zhí)行,且是在不同的條件下去執(zhí)行,使得黑客逆向破解時需要去分析逆向所有的分支代碼,從而提高黑客對各代碼分支的破解難度。
附圖說明
圖1為本發(fā)明實(shí)施例中flash中防止代碼被破解的方法的流程示意圖;
圖2為本發(fā)明實(shí)施例中flash中防止代碼被破解的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
參見圖1所示,本發(fā)明實(shí)施例提供一種flash中防止代碼被破解的方法,包括以下步驟:
s1,在程序中添加多條代碼分支,在程序的開頭添加一個分支判斷變量作為判斷執(zhí)行哪條代碼分支的條件,并在每條代碼分支中添加一個分支比較變量作為該分支的執(zhí)行條件,其中僅有一個分支的分支比較變量與分支判斷變量相同;
具體來說,與上述內(nèi)容對應(yīng)的實(shí)現(xiàn)代碼可如下:
先對分支判斷變量進(jìn)行一些邏輯運(yùn)算,得到分支判斷變量對應(yīng)的結(jié)果:
inttype=5;
type=type+3;
type=type*2;
將程序原本的執(zhí)行代碼放到正確的執(zhí)行結(jié)果的分支處,而其他分支則可以使用無用的代碼。
iftype=5
{
插入無用的代碼
}
elseiftype=16
{
插入原本程序流程該執(zhí)行的代碼
}
elseiftype=17
{
插入無用的代碼
}。
s2,將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中;
s3,在分支比較變量與分支判斷變量不一致的代碼分支中添加無用代碼。
本發(fā)明實(shí)施例通過在程序中添加多條代碼分支,將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中,在其他代碼分支中添加無用代碼,在執(zhí)行程序時僅執(zhí)行分支比較變量與分支判斷變量一致的代碼分支,同時采用多條代碼分支及無用代碼將真正執(zhí)行的代碼隱藏到大量的代碼中,又有效提高代碼被黑客逆向破解的門檻,防止代碼被破解。
本發(fā)明實(shí)施例通過將分支判斷變量的md5值作為當(dāng)前的分支判斷變量及將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量,增加代碼被黑客破解的難度。具體方法如下:
對分支判斷變量進(jìn)行md5計算得出分支判斷變量的md5值,并將分支判斷變量的md5值作為當(dāng)前的分支判斷變量;對各代碼分支的分支比較變量分別進(jìn)行md5計算得出各分支比較變量的md5值,并將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量。通常的分支都是判斷一個變量或者一段字符串是否等于某個值,從而代碼可讀性比較高。而本發(fā)明則使用將分支判斷變量及各分支比較變量的md5值作為分支的判斷條件,從而使得分支代碼比較復(fù)雜也不易于讀懂,增加代碼被黑客破解的難度。
具體來說,與上述內(nèi)容對應(yīng)的實(shí)現(xiàn)代碼可如下:
假設(shè)分支比較變量的原始代碼如下:
采用4的md5值和5的md5值來作為分支比較變量:
其中4的md5值是“a2f3e71d9181a67b”
其中5的md5值是“bbce2345d7772b06”
那么分支比較變量則應(yīng)改成:
本發(fā)明實(shí)施例還通過將對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼作為無用代碼來提高黑客對各代碼分支的破解難度。具體方法如下:
無用代碼為對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼。對程序原本的執(zhí)行代碼進(jìn)行修改包括:減少或增加程序原本的執(zhí)行代碼的循環(huán)執(zhí)行次數(shù)、修改程序原本的執(zhí)行代碼中使用的key值或?qū)⒊绦蛟镜膱?zhí)行代碼進(jìn)行加密操作的結(jié)果添加至程序原本的執(zhí)行代碼的最后。
將對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼作為無用代碼,可以使黑客逆向破解時更為困惑,讓其以為每條分支代碼都是有可能會被執(zhí)行,且是在不同的條件下去執(zhí)行,使得黑客逆向破解時需要去分析逆向所有的分支代碼,從而提高黑客對各代碼分支的破解難度。
本發(fā)明實(shí)施例通過采用多條代碼分支及無用代碼將真正執(zhí)行的代碼隱藏到大量的代碼中,并將分支判斷變量及各分支比較變量的md5值分別作為分支的判斷條件,并對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼作為無用代碼,從而使得分支代碼比較復(fù)雜也不易于讀懂,增加代碼被黑客破解的難度。
參見圖2所示,本發(fā)明實(shí)施例還包括一種flash中防止代碼被破解的系統(tǒng),包括:
分支創(chuàng)建模塊,用于在程序中添加多條代碼分支,在程序的開頭添加一個分支判斷變量作為判斷執(zhí)行哪條代碼分支的條件,并在每條代碼分支中添加一個分支比較變量作為該分支的執(zhí)行條件,其中僅有一個分支的分支比較變量與分支判斷變量相同;
代碼轉(zhuǎn)移模塊,用于將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中;
代碼添加模塊,用于在分支比較變量與分支判斷變量不一致的代碼分支中添加無用代碼。
本發(fā)明實(shí)施例通過分支創(chuàng)建模塊、代碼轉(zhuǎn)移模塊及代碼添加模塊實(shí)現(xiàn)在在程序中添加多條代碼分支,將程序原本的執(zhí)行代碼放到分支比較變量與分支判斷變量一致的代碼分支中,在其他代碼分支中添加無用代碼,通過分支判斷變量與分支比較變量的設(shè)置使得在執(zhí)行程序時僅執(zhí)行分支比較變量與分支判斷變量一致的代碼分支,同時采用多條代碼分支及無用代碼將真正執(zhí)行的代碼隱藏到大量的代碼中,又有效提高代碼被黑客逆向破解的門檻,防止代碼被破解。
flash中防止代碼被破解的系統(tǒng)還包括變量修改模塊,變量修改模塊用于對分支判斷變量進(jìn)行md5計算得出分支判斷變量的md5值,并將分支判斷變量的md5值作為當(dāng)前的分支判斷變量;對各代碼分支的分支比較變量分別進(jìn)行md5計算得出各分支比較變量的md5值,并將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量。
本發(fā)明實(shí)施例還通過變量修改模塊將分支判斷變量的md5值作為當(dāng)前的分支判斷變量及將各分支比較變量的md5值分別作為該代碼分支當(dāng)前的分支判斷變量,通常的分支都是判斷一個變量或者一段字符串是否等于某個值,從而代碼可讀性比較高。而本發(fā)明則使用將分支判斷變量及各分支比較變量的md5值作為分支的判斷條件,從而使得分支代碼比較復(fù)雜也不易于讀懂,增加代碼被黑客破解的難度。
無用代碼為對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼。flash中防止代碼被破解的系統(tǒng)還包括無用代碼生成模塊,無用代碼生成模塊用于對程序原本的執(zhí)行代碼進(jìn)行修改以生成無用代碼。對程序原本的執(zhí)行代碼進(jìn)行修改包括:減少或增加程序原本的執(zhí)行代碼的循環(huán)執(zhí)行次數(shù)、修改程序原本的執(zhí)行代碼中使用的key值或?qū)⒊绦蛟镜膱?zhí)行代碼進(jìn)行加密操作的結(jié)果添加至程序原本的執(zhí)行代碼的最后。
本發(fā)明實(shí)施例還通過無用代碼生成模塊將對程序原本的執(zhí)行代碼進(jìn)行修改而生成的代碼作為無用代碼,可以使黑客逆向破解時更為困惑,讓其以為每條分支代碼都是有可能會被執(zhí)行,且是在不同的條件下去執(zhí)行,使得黑客逆向破解時需要去分析逆向所有的分支代碼,從而提高黑客對各代碼分支的破解難度。
本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。