欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種手機應用軟件自動生成水印的方法和系統(tǒng)的制作方法

文檔序號:6540198閱讀:267來源:國知局
一種手機應用軟件自動生成水印的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種手機應用軟件自動生成水印的方法和系統(tǒng),所述方法包括:水印產生步驟,給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,形成水印代碼;水印插入步驟,通過指定事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼;水印提取步驟:使用相同的事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。本發(fā)明的水印構建方式獨特,且不易被識別,能有效地識別重組軟件,保護手機應用軟件。
【專利說明】一種手機應用軟件自動生成水印的方法和系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及手機應用軟件保護領域,特別是針對安卓應用軟件和ios應用軟件,涉及的一種手機應用軟件自動生成水印的方法和系統(tǒng)。
【背景技術】
[0002]智能手機已經成為人們日常生活中很普遍的工具,很多傳統(tǒng)計算機的應用也已經轉移到智能手機上,例如社交網絡,游戲等。因此,智能手機應用軟件的安全也日益重要。
[0003]安卓應用軟件和ios應用軟件目前在智能手機應用軟件中占有很大比例,其面臨多種威脅,其中包括重組,即添加惡意負載或廣告給合法的應用軟件并形成新的重組軟件。攻擊者經常使用重組的方法,因為該方法需要修改的內容很少。當前的研究顯示15%的安卓市場應用軟件都是重組的軟件。由于普通用戶無法區(qū)分合法軟件和重組的軟件,因此攻擊者重組軟件后被查出的可能性很小。
[0004]現(xiàn)有的檢測手機市場中重組軟件的技術主要包括基于圖的方法和基于哈希的方法。但是,當軟件中存在模糊技術時,檢測率是低的。模糊技術主要包括對控制流和數(shù)據(jù)流進行轉換,使現(xiàn)有技術難于檢測出重組的軟件。因此,考慮新的方法,檢測出非法的重組軟件,保護軟件版權及用戶使用的安全性是非常有必要的。
[0005]在手機應用軟件中加入水印可以有效解決這個問題。通過從應用軟件中提取水印,可以識別出應用軟件的擁有者,并對重組的軟件進行有效判定。通常有兩種水印方法:靜態(tài)水印和動態(tài)水印。靜態(tài)水印是將數(shù)據(jù)或變量插入到應用程序中,一旦水印被破壞,便不能從目標應用軟件中提取正確的水印。動態(tài)水印使用運行信息作為水印,例如路徑和內存狀態(tài),但是構建水印的動態(tài)信息容易被識別。
[0006]結合動態(tài)水印和靜態(tài)水印的特點,本發(fā)明提出了一種新的手機應用軟件自動生成水印方法。

【發(fā)明內容】

[0007]本發(fā)明所要解決的技術問題是提供一種手機應用軟件自動生成水印方法,用于解決識別手機應用軟件的重組軟件的問題。
[0008]本發(fā)明解決上述技術問題的技術方案如下:一種手機應用軟件自動生成水印的方法,包括:
[0009]水印產生步驟:給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,將每段代碼作為水印代碼的一個片段,形成水印代碼;
[0010]水印插入步驟:通過指定事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼;
[0011]水印提取步驟:使用與水印插入步驟相同的事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。
[0012]在上述技術方案的基礎上,本發(fā)明還可以做如下改進。
[0013]進一步,所述水印產生步驟還包括:在分割ASCII字符圖片前,隨機選擇ASCII字符圖片中的一部分字符,并將其隨機放入分割成的各部分ASCII字符圖片中。
[0014]進一步,模糊ASCII字符圖片的方法具體包括:在不影響圖片識別的情況下,在原始ASCII字符圖片的空白區(qū)域加入若干與原始ASCII字符圖片不相關的字符。
[0015]進一步,所述步驟2插入水印代碼后,采用適用的常量對水印代碼進行變形,且在變形后的水印代碼中創(chuàng)建新的語句,使變形后的水印代碼與原始水印代碼間的語義不變。
[0016]進一步,所述步驟2插入水印代碼后,采用運行時發(fā)生變化的變量對水印代碼進行變形。
[0017]進一步,所述步驟I中,在水印代碼的開始處插入標志位,該標志位用于表示水印的開始;所述步驟3中定位水印時,檢查內存中所有對象,若對象中帶有插入的標志位,則此對象為水印。
[0018]對應地,本發(fā)明的技術方案還包括一種手機應用程序自動生成水印的系統(tǒng),包括依次連接的水印產生模塊、水印插入模塊和水印提取模塊:
[0019]所述水印產生模塊,用于給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,將各段代碼疊加,形成水印代碼;
[0020]所述水印插入模塊,用于通過指定事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼;
[0021]所述水印提取模塊,用于使用與所述水印插入模塊中相同的事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。
[0022]進一步,所述水印產生模塊還用于:在分割ASCII字符圖片前,隨機選擇ASCII字符圖片中的一部分字符,并將其隨機放入分割后成的各部分ASCII字符圖片中。
[0023]進一步,所述水印插入模塊插入水印代碼后,采用適用的常量對水印代碼進行變形,且在變形后的水印代碼中創(chuàng)建新的語句,使為變形后的水印代碼與原始水印代碼間的語義不變。
[0024]進一步,所述水印插入模塊插入水印代碼后,采用運行時發(fā)生變化的變量對水印代碼進行變形。
[0025]本發(fā)明的有益效果是:本發(fā)明通過對圖片的內在特征進行提取,形成ASCII格式圖片,對其進行模糊與分割,并將圖中的每一部分映射為一段代碼,形成水印代碼嵌入到原始代碼中;在嵌入過程中,通過指定輸入事件序列,選擇必經執(zhí)行路徑上的基本塊進行插入,并對代碼中的常量與變量進行一定的變形,保證其不被惡意用戶識別并替換;最后在水印驗證過程中,可以通過特殊標識有效識別水印部分并進行比較,對軟件進行保護。本發(fā)明在手機應用軟件中加入了特殊構建的水印,水印構建方式獨特,且不易被識別,能有效地識別重組軟件,保護手機應用軟件。
【專利附圖】

【附圖說明】[0026]圖1為本發(fā)明普通圖片和ASCII字符圖片的示例圖;
[0027]圖2為本發(fā)明手機應用軟件自動生成水印的流程示意圖;
[0028]圖3為本發(fā)明手機應用軟件自動生成水印的系統(tǒng)的結構示意圖
[0029]圖4為本發(fā)明ASCII字符圖片的模糊與分割示例圖。
【具體實施方式】
[0030]以下結合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0031]為了在手機應用軟件中加入好的水印,需要滿足如下條件:1)通過語義保留的變形,代碼不容易被破壞。一般不需要考慮變形會破壞語義,因為攻擊者也希望重組后的軟件能正常運行。2)代碼不能被輕易識別,即添加的代碼沒有特別之處。3)水印不容易被識別,否則攻擊者會通過監(jiān)控應用軟件來去掉相應的水印。
[0032]針對上述條件,本實施例設計了一種手機應用軟件自動生成水印的方法來滿足上述要求,該方法是一種基于圖片的水印方法。為了滿足條件1),該方法不直接使用應用程序中的靜態(tài)代碼或數(shù)據(jù)作為水??;為了滿足條件2),該方法盡量使用原來應用程序中的代碼和數(shù)據(jù)結構,將這些代碼與水印代碼結合;為了滿足條件3),該方法并不使用一般格式的圖片,而是使用ASCII格式。如圖1所示,給出了將普通圖片轉換成ASCII字符格式的圖片的過程,ASCII字符格式的圖片并非文件格式的圖片,即使幾個字符被篡改,兩個圖片仍是可比較的,從而將ASCII水印圖片加入到原始應用中,不容易被識別出。
[0033]如圖2所示,本實施例的主要流程分為水印產生步驟、水印插入步驟和水印提取步驟。
[0034]水印產生步驟:給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,將每段代碼作為水印代碼的一個片段,形成水印代碼。本實施例的水印使用圖片,但是需要將圖片原始格式進行轉換,即產生一個ASCII字符圖片輪廓,且為了使得水印更強健,還需將輪廓分成幾部分,不同部分將共享一些冗余信息。通過這種方式,即使部分水印被篡改了,仍然可以判斷應用程序中的水印是否與原作者提供的相同。另外,該方法可以自動產生一些代碼,在內存中動態(tài)地畫圖,輪廓中的每一部分都對應于代碼的一個片段。
[0035]水印插入步驟:通過指定輸入事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼。在實際運用中,不能直接將代碼和應用程序組合在一起,因為水印的代碼可能會無法運行。因此,為了讓水印代碼正常運行,需要將其插入一定會運行的路徑中,而在提取水印過程中,原始作者也可以使用自己秘密的“輸入”來觸發(fā)相應代碼的運行。與運行在X86平臺上的傳統(tǒng)應用程序相比,手機應用程序多由事件驅動。本實施例隨機產生一系列事件序列作為秘密“輸入”,獲取相應執(zhí)行路徑,然后依據(jù)輸入將相應代碼加入執(zhí)行路徑中。
[0036]水印提取步驟:使用指定輸入事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。需要驗證應用程序的水印時,首先從應用程序中提取出來,即使用作者提供的秘密“輸入”(如事件序列)來運行應用程序,然后掃描內存并獲取水印。當提取出水印后,將其與作者提供的水印做比較,如果相同,則證明軟件是被重組的。需要補充說明的是,本實施例中不需要兩個水印完全相同。因此,即使圖片的一些部分被損壞,通過人眼或文本比較工具對ASCII相似性進行比較,進而識別水印,來保護原始作者的版權。
[0037]對應地,如圖3所示,本實施例也給出了一種手機應用程序自動生成水印的系統(tǒng),包括依次連接的水印產生模塊、水印插入模塊和水印提取模塊:
[0038]所述水印產生模塊,用于給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,將每段代碼作為水印代碼的一個片段,形成水印代碼;
[0039]所述水印插入模塊,用于通過指定事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼;
[0040]所述水印提取模塊,用于使用與所述水印插入模塊中相同的事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。
[0041]基于上述基本原理,本實施例具體的實施過程如下。
[0042]一、水印產生過程
[0043]水印產生過程主要是通過給圖片產生一個ASCII字符型“草圖”,進而對草圖進行模糊與分割,最后將草圖的每一部分映射為一段代碼產生水印,準備加入到軟件中。
[0044](I)首先,由于文件格式的圖片容易被識別,因此直接使用ASCII字符來表示圖片,產生的ASCII圖片被稱作“草圖”。本實施例中主要通過使用Textaizer Pro軟件給指定圖片產成不同類型的ASCII圖片,同時可以通過修改一些參數(shù)來改變ASCII圖片的大小。因此在操作過程中是可以控制草圖的尺寸的,小的草圖不容易被發(fā)現(xiàn),但是當執(zhí)行水印驗證時,很難與原始圖片進行比對。從而,在不同情況下選擇不同大小的草圖。
[0045](2)其次,為了使得水印更強健,采用如下兩種技術:
[0046](a)草圖模糊。圖片有一個特殊的特征,如果兩個圖片并非具有完全相同的字符序列,但是可能表示相同的意義。因此,可以對草圖進行模糊,通過在原始草圖中加入一些字符,在不影響模糊的草圖識別情況下,在草圖的空白區(qū)域加入一些不相關的字符。圖4顯示了草圖模糊的例子,以“secret words”作為示例,左邊最下圖是原始圖片草圖模糊后的,與原始輪廓比較,模糊的草圖包含更多的字符。
[0047](b)草圖分割。通過將草圖劃分為幾個部分,每兩部分有一些冗余的字符。即使劃分的部分中一些被篡改,仍然可以將草圖作為水印與原始圖片進行比較。為了劃分草圖,可隨機選擇草圖中的一部分字符,并將其放入不同部分。通過將分割的草圖進行疊加,可以恢復水印。如圖4所示,右邊的圖片即為進行草圖分割后的三個部分,將其疊加可恢復水印。
[0048](3)最后,通過將草圖的每一部分映射到一段代碼,然后將代碼疊加到原始應用軟件代碼中,獲取一個帶水印的應用程序。該方法使用一維數(shù)組來描述每一部分,使用數(shù)組中每個元素(如一個字節(jié))來描述此部分中的一個字符。但是這樣數(shù)組可能很大,容易被攻擊和發(fā)現(xiàn)。因此,可以將上面所述“草圖分割”劃分圖片的一部分分為多個片段,并使用多個數(shù)組來描述這些部分,再移除數(shù)組中的回車符和換行符,因此,攻擊者在不知道每一行中字符數(shù)量的情況下,很難重組水印圖片。但是對于編程人員,因為知道數(shù)量,因此可以重建圖片進行驗證。
[0049]下面以例I進行說明。
[0050]例1:
[0051]
【權利要求】
1.一種手機應用軟件自動生成水印的方法,其特征在于,包括: 水印產生步驟:給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,將每段代碼作為水印代碼的一個片段,形成水印代碼; 水印插入步驟:通過指定事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼; 水印提取步驟:使用與水印插入步驟相同的事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。
2.根據(jù)權利要求1所述的方法,其特征在于,所述水印產生步驟還包括:在分割ASCII字符圖片前,隨機選擇ASCII字符圖片中的一部分字符,并將其隨機放入分割成的各部分ASCII字符圖片中。
3.根據(jù)權利要求1所述的方法,其特征在于,模糊ASCII字符圖片的方法具體包括:在不影響圖片識別的情況下,在原始ASCII字符圖片的空白區(qū)域加入若干與原始ASCII字符圖片不相關的字符。
4.根據(jù)權利要求1所述的方法,其特征在于,所述步驟2插入水印代碼后,采用適用的常量對水印代碼進行變形,且在變形后的水印代碼中創(chuàng)建新的語句,使變形后的水印代碼與原始水印代碼間的語義不變。
5.根據(jù)權利要求1所述的方法,其特征在于,所述步驟2插入水印代碼后,采用運行時發(fā)生變化的變量對水印代碼進行變形。`
6.根據(jù)權利要求1所述的方法,其特征在于,所述步驟I中,在水印代碼的開始處插入標志位,該標志位用于表示水印的開始;所述步驟3中定位水印時,檢查內存中所有對象,若對象中帶有插入的標志位,則此對象為水印。
7.—種手機應用程序自動生成水印的系統(tǒng),其特征在于,包括依次連接的水印產生模塊、水印插入模塊和水印提取模塊: 所述水印產生模塊,用于給指定圖片產生一個ASCII字符圖片,模糊并分割該ASCII字符圖片,將分割的每一部分ASCII字符圖片映射為一段代碼,將每段代碼作為水印代碼的一個片段,形成水印代碼; 所述水印插入模塊,用于通過指定事件序列獲取手機應用程序的執(zhí)行路徑,將執(zhí)行路徑中僅有一個入口點和一個出口點的程序序列作為基本塊,選取僅執(zhí)行一次的基本塊,在該基本塊的原始代碼中隨機插入水印代碼; 所述水印提取模塊,用于使用與所述水印插入模塊中相同的事件序列運行手機應用程序,掃描手機應用程序的內存,并從內存中定位水印,再提取水印進行驗證。
8.根據(jù)權利要求7所述的系統(tǒng),其特征在于,所述水印產生模塊還用于:在分割ASCII字符圖片前,隨機選擇ASCII字符圖片中的一部分字符,并將其隨機放入分割后成的各部分ASCII字符圖片中。
9.根據(jù)權利要求7所述的系統(tǒng),其特征在于,所述水印插入模塊插入水印代碼后,采用適用的常量對水印代碼進行變形,且在變形后的水印代碼中創(chuàng)建新的語句,使為變形后的水印代碼與原始水印代碼間的語義不變。
10.根據(jù)權 利要求7所述的系統(tǒng),其特征在于,所述水印插入模塊插入水印代碼后,采用運行時發(fā)生變化的變量對水印代碼進行變形。
【文檔編號】G06F21/16GK103824006SQ201410089718
【公開日】2014年5月28日 申請日期:2014年3月12日 優(yōu)先權日:2014年3月12日
【發(fā)明者】陳愷, 趙險峰, 張穎君 申請人:中國科學院信息工程研究所
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
丰原市| 临澧县| 陇南市| 无为县| 迁西县| 利津县| 双流县| 绥中县| 平顶山市| 从江县| 鄄城县| 承德市| 东宁县| 荆门市| 莱西市| 孝义市| 桑植县| 红原县| 大同县| 礼泉县| 定日县| 田东县| 建平县| 博罗县| 神池县| 松潘县| 娱乐| 股票| 东乌珠穆沁旗| 连山| 迁安市| 吉隆县| 钟祥市| 宣武区| 崇左市| 武平县| 郯城县| 武平县| 舞钢市| 武胜县| 辰溪县|