一種對Flash代碼進行保護的方法及裝置與流程
2023-05-28 01:56:11 4

本發明涉及網絡直播技術領域,尤其涉及一種對flash代碼進行保護的方法及裝置。
背景技術:
目前,flash被廣泛的用於網頁設計和網頁動畫製作及網頁視頻播放等。大多數的視頻網站,包括直播網站都採用flash做為其視頻播放器,並且大多數的網頁遊戲也會使用flash來開發。swf(smallwebformat,小型網頁格式)文件是常見的flash動畫文件,而swf文件的代碼是使用actionscript腳本語言來進行編寫。而actionscript腳本語言很容易被黑客反向破解,並且反向破解後代碼和原始的代碼差不多,因此,黑客很容易弄清楚其中的實現邏輯並實施攻擊。
綜上,現階段急需一種方法能夠對flash代碼進行保護,以提高被黑客反向破解的難度,從而對降低黑客入侵的風險。
技術實現要素:
本申請實施例通過提供一種對flash代碼進行保護的方法及裝置,解決了現有技術中的flash代碼容易被反向破解,存在嚴重的數據的安全隱患的技術問題。實現了提高flash代碼被黑客反向破解的難度,降低黑客入侵的風險的技術效果。
一方面,本申請通過本申請的一實施例提供如下技術方案:
一種對flash代碼進行保護的方法,包括:
獲取待保護的第一組flash代碼;
在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,所述混淆代碼在被執行時不會影響到所述第一組flash代碼對應功能的正常實現。
優選地,所述在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,包括:
在所述第一組flash代碼中加入無效的循環語句,獲得所述第二組flash代碼。
優選地,所述循環語句,具體為:
多層套嵌的循環語句。
優選地,所述在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,包括:
在所述第一組flash代碼中加入虛假的網絡協議包,獲得所述第二組flash代碼。
優選地,所述在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,包括:
在所述第一組flash代碼中加入虛假的網絡數據下載代碼,獲得所述第二組flash代碼。
另一方面,本申請通過本申請的一實施例,提供如下技術方案:
一種對flash代碼進行保護的裝置,包括:
獲取模塊,用於獲取待保護的第一組flash代碼;
添加模塊,用於在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,所述混淆代碼在被執行時不會影響到所述第一組flash代碼對應功能的正常實現。
優選地,所述加入模塊,包括:
第一添加子模塊,用於在所述第一組flash代碼中加入無效的循環語句,獲得所述第二組flash代碼。
優選地,所述循環語句,具體為:
多層套嵌的循環語句。
優選地,所述加入模塊,包括:
第二添加子模塊,用於在所述第一組flash代碼中加入虛假的網絡協議包,獲得所述第二組flash代碼。
優選地,所述加入模塊,包括:
第三添加子模塊,用於在所述第一組flash代碼中加入虛假的網絡數據下載代碼,獲得所述第二組flash代碼。
本申請實施例中提供的一個或多個技術方案,至少具有如下技術效果或優點:
在本申請實施例中,公開了一種對flash代碼進行保護的方法,包括:獲取待保護的第一組flash代碼;在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,所述混淆代碼在被執行時不會影響到所述第一組flash代碼對應功能的正常實現。由於在在第一組flash代碼中加入混淆代碼,使得第一組flash可以隱藏在混淆代碼中,這增加了反向破解的難度,黑客難以基於第二組flash代碼獲得第一組flash代碼,也就難以基於第一組flash代碼進行惡意攻擊。所以,有效地解決了現有技術中的flash代碼容易被反向破解,存在嚴重的數據的安全隱患的技術問題。實現了提高flash代碼被黑客反向破解的難度,降低黑客入侵的風險,提高數據安全的技術效果。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本申請實施例中一種對flash代碼進行保護的方法的流程圖;
圖2為本申請實施例中一種對flash代碼進行保護的裝置的結構圖。
具體實施方式
本申請實施例通過提供一種對flash代碼進行保護的方法及裝置,解決了現有技術中的flash代碼容易被反向破解,存在嚴重的數據的安全隱患的技術問題。實現了提高flash代碼被黑客反向破解的難度,降低黑客入侵的風險的技術效果。
本申請實施例的技術方案為解決上述技術問題,總體思路如下:
一種對flash代碼進行保護的方法,包括:獲取待保護的第一組flash代碼;在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,所述混淆代碼在被執行時不會影響到所述第一組flash代碼對應功能的正常實現。
為了更好的理解上述技術方案,下面將結合說明書附圖以及具體的實施方式對上述技術方案進行詳細的說明。
實施例一
本實施例提供了一種對flash代碼進行保護的方法,如圖1所述,包括:
步驟s101:獲取待保護的第一組flash代碼。
步驟s102:在第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,混淆代碼在被執行時不會影響到第一組flash代碼對應功能的正常實現。
在具體實施過程中,所述混淆代碼在運行時,不會對原flash代碼(即:第一組flash代碼)造成任何影響,不會影響到原flash代碼的相關功能的實現。
在具體實施過程中,所述混淆代碼可以為:無效的循環語句、虛假的網絡協議包、虛假的網絡數據下載代碼。
其中,所述是無效的循環語句是沒有任何用處的循環語句代碼;所述虛假的網絡協議包中攜帶有無效的ip(internetprotocol,網際網路協議)地址,無法成功創建網絡連結;在所述虛假的網絡數據下載代碼中攜帶有無效的網絡連結,無法下載網絡數據。這些混淆代碼在運行時不會影響到原flash代碼(即:第一組flash代碼)的相關功能的實現。這些混淆代碼的真實作用是為了隱藏原flash代碼,通過將原flash代碼隱藏在大量的混淆代碼中,獲得了第二組flash代碼,這樣,大大增加了黑客分析原flash代碼的難度,有效降低了原flash代碼被反向破解的概率,降低了被黑客攻擊的風險,從而提高了數據的安全。
具體來講,在執行步驟s102時,可以有以下三種方式:
方式一:在第一組flash代碼中加入無效的循環語句,獲得第二組flash代碼。
在閱讀代碼時,如果代碼中有循環語句,則會增加讀懂代碼的難度,而如果有多重循環語句,則耗費的時間會更多。
因此,在本方法中,通過設計一些循環語句來膨脹代碼的代碼數量,同時也打亂原有的執行流程,從而可以比較好的提高讀懂此段代碼的時間和門檻。而在循環語句中可以加入一些不會產生任何效果的代碼(比如:可以創建一些顯示對象,然後再進行刪除;或者,執行一些無用的加減乘除算法來計算一個數據的結果;或者,在循環語句中增加輸入一個參數,然後在循環語句中對參數進行複雜的運算後,再對參數進行還原操作;等等),從而使循環語句在被執行時不會影響到第一組flash代碼對應功能的正常實現。
具體的一種實現舉例如下:
同理,還可以在上述代碼中添加其他類型的更多的無用的代碼,從而將真實需要執行的邏輯(例如:第一組flash代碼)隱藏到一大堆無用的代碼中,可以很好的起到對抗被反向破解的效果。同時,對於這種循環代碼還可以套嵌多層,從而使得代碼更為複雜。
至此,就可以實現在flash的代碼中插入一些不幹擾正常程序執行的無用的循環代碼,從而增加反向破解的難度的效果。
方式二:在第一組flash代碼中加入虛假的網絡協議包,獲得第二組flash代碼。
對於分析一個flash的功能代碼,如果其中有網絡協議數據的往來,通常都會認為是一個客戶端伺服器協議交互來完成的功能,從而其分析成本會更高。
因此,在本方法中,可以在第一組flash代碼中引入一些數據計算並構造一些虛假的網絡協議包。具體來講,可以在數據計算後,將計算結構打包成網絡數據包,然後調用網絡進行發送,而由於不能對正常程序進行幹擾,所以可以創建一個失敗的網絡連結,然後調用網絡來發送,最終該網絡包是永遠發送不成功,從而不會對原flash代碼(即:第一組flash代碼)造成幹擾,同時在原始代碼中引入了網絡發包和計算能夠使得代碼更為複雜。
具體的一種實現舉例如下:
intkey=123;
//變量key,其中值是123。
添加一些對key進行複雜運算的代碼,例如:
key=key+xxx;
key=key*xxx;
然後,創建一個失敗的網絡來發送數據
varmysocket:socket=newsocket;
創建一個網絡套接字
mysocket.connect(ip,port);
網絡套接字連結ip地址。
其中,第一個參數ip可以填入一個肯定失敗的ip地址,從而網絡連結是創建不成功的。
mysocket.writeutfbytes(key);
將數據計算結果寫入到網絡套接字發送出去,其中,這個數據永遠發送不出去,從而不會干擾原flash代碼(即:第一組flash代碼)。同時,其中也會使用到原flash代碼(即:第一組flash代碼)的變量,但是不會影響原flash代碼(即:第一組flash代碼)的邏輯,從而使得混淆代碼更真實。
至此,就實現了在第一組flash代碼中加入虛假的網絡協議包的代碼,從而增加反向破解的難度的效果。
方式三:在第一組flash代碼中加入虛假的網絡數據下載代碼,獲得第二組flash代碼。
由於在逆向破解中,如果程序中部分功能是通過下載另一個flash代碼來完成的,那麼對於逆向破解者來說則需要首先下載另一個flash組件,然後分析另一flash組件的功能,從而才能完全分析清楚整個功能的實現邏輯。而其中下載組件的網絡連結可以填一個虛假的網絡連結,從而不會真正下載一個真實的flash組件,所以不會影響正常的程序執行。
具體實現加入一個下載另一flash的組件功能如下:
首先,定義一個actionscript的組件loader,用於加載swf文件。
privatevarswfloader:loader=newloader;
對加載的swf文件註冊一個事件,用來感知到swf文件加載完成,加載完成後會觸發swfcomplete函數的執行。
swfloader.contentloaderinfo.addeventlistener(event.complete,swfcomplete);
然後,從網絡上加載swf文件。
調用loader的接口load來從網絡中加載swf文件。
其中,urlrequest("htttps://xx.swf")標示從網絡中加載xx.swf
swfloader.load(newurlrequest("htttps://xx.swf"));
最後,編寫回調接口,回調接口中完成對swf文件的校驗。
swfcompletehandler則是上面註冊的swf加載完成後的回調函數。
privatefunctionswfcompletehandler(evt:event):void
{
此處,可以加入對數據的運算操作,而此段代碼在正常流程中並不會執行,由於請求的url(uniformresourcelocator,統一資源定位符)地址是一個錯誤的地址,所以不會下載出一個正確的flash組件,從而可以在此段代碼中加入各種各樣的幹擾代碼。
}
至此,就實現在原始代碼中加入虛假的網絡數據下載代碼,從而增加反向破解的難度的效果。
作為一種可選的實施例,可以在執行步驟s102時,可以將上述三種方式任組合疊加使用,並且對每種方式可以使用多次,從而可以起到混淆程度更大,反向破解更複雜的效果。
上述本申請實施例中的技術方案,至少具有如下的技術效果或優點:
在本申請實施例中,公開了一種對flash代碼進行保護的方法,包括:獲取待保護的第一組flash代碼;在第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,混淆代碼在被執行時不會影響到第一組flash代碼對應功能的正常實現。由於在在第一組flash代碼中加入混淆代碼,使得第一組flash可以隱藏在混淆代碼中,這增加了反向破解的難度,黑客難以基於第二組flash代碼獲得第一組flash代碼,也就難以基於第一組flash代碼進行惡意攻擊。所以,有效地解決了現有技術中的flash代碼容易被破解,存在嚴重的數據的安全隱患的技術問題。實現了提高flash代碼被黑客反向破解的難度,降低黑客入侵的風險,提高數據安全的技術效果。
實施例二
基於同一發明構思,本實施例提供一種對flash代碼進行保護的裝置,如圖2所示,包括:
獲取模塊201,用於獲取待保護的第一組flash代碼;
添加模塊202,用於在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,所述混淆代碼在被執行時不會影響到所述第一組flash代碼對應功能的正常實現。
其中,所述第二組flash代碼的安全級別高於所述第一組flash代碼的安全級別。
作為一種可選的實施例,加入模塊202,包括:
第一添加子模塊,用於在所述第一組flash代碼中加入無效的循環語句,獲得所述第二組flash代碼。
作為一種可選的實施例,所述循環語句,具體為:多層套嵌的循環語句。
作為一種可選的實施例,加入模塊202,包括:
第二添加子模塊,用於在所述第一組flash代碼中加入虛假的網絡協議包,獲得所述第二組flash代碼。
作為一種可選的實施例,加入模塊202,所述加入模塊,包括:
第三添加子模塊,用於在所述第一組flash代碼中加入網絡數據下載代碼,獲得所述第二組flash代碼。
由於本實施例所介紹的對flash代碼進行保護的裝置為實施本申請實施例中對flash代碼進行保護的方法所採用的裝置,故而基於本申請實施例中所介紹的對flash代碼進行保護的方法,本領域所屬技術人員能夠了解本實施例的對flash代碼進行保護的裝置的具體實施方式以及其各種變化形式,所以在此對於該對flash代碼進行保護的裝置如何實現本申請實施例中的方法不再詳細介紹。只要本領域所屬技術人員實施本申請實施例中對flash代碼進行保護的方法所採用的裝置,都屬於本申請所欲保護的範圍。
上述本申請實施例中的技術方案,至少具有如下的技術效果或優點:
在本申請實施例中,公開了一種對flash代碼進行保護的裝置,包括:獲取模塊,用於獲取待保護的第一組flash代碼;添加模塊,用於在所述第一組flash代碼中加入混淆代碼,獲得第二組flash代碼,其中,所述混淆代碼在被執行時不會影響到所述第一組flash代碼對應功能的正常實現。由於在在第一組flash代碼中加入混淆代碼,使得第一組flash可以隱藏在混淆代碼中,這增加了反向破解的難度,黑客難以基於第二組flash代碼獲得第一組flash代碼,也就難以基於第一組flash代碼進行惡意攻擊。所以,有效地解決了現有技術中的flash代碼容易被破解,存在嚴重的數據的安全隱患的技術問題。實現了提高flash代碼被黑客反向破解的難度,降低黑客入侵的風險,提高數據安全的技術效果。
本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或電腦程式產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、cd-rom、光學存儲器等)上實施的電腦程式產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
儘管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明範圍的所有變更和修改。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。