本發(fā)明涉及軟件安全技術(shù)領(lǐng)域,特別涉及一種軟件敏感數(shù)據(jù)隱藏、提取方法及裝置。
背景技術(shù):
現(xiàn)有的安卓軟件保護技術(shù)中,軟件加殼(即加入預啟動程序)較為常見。加入了殼程序的安卓軟件中,原程序被加密等手段保護。破解者的目標就是獲取原程序。因此,在安卓軟件保護中,敏感數(shù)據(jù)(如密鑰)的隱藏,就成為軟件保護的重要手段。
理論上不論加密手段如何巧妙,加密算法如何復雜,具備專業(yè)技術(shù)的高水平破解者總能獲得解密后的源程序。在使用復雜加密算法或繁瑣隱藏方法的情況下,獲取解密程序的開銷大于破解者的回報,此時破解者往往放棄破解行為,但這種情況下,起保護作用的殼程序在解密時所花費時間也將大幅增加,降低了應用程序的啟動速度,為用戶帶來不便。
因此,在安卓軟件保護中,一般選用巧妙執(zhí)行起來簡單快速的數(shù)據(jù)隱藏方案。傳統(tǒng)的方案是將密鑰打散,插入到應用軟件中某個或某幾個文件中。預啟動程序在解密時依次解讀這些數(shù)據(jù),拼湊出完整的密鑰,對原應用程序進行解密。
但是現(xiàn)有的技術(shù)方案缺點在于:盡管敏感數(shù)據(jù)被打散隱藏,但其內(nèi)容以明文形式插入到應用程序的文件中。而且,各個文件中可以插入冗余數(shù)據(jù)的位置相對固定,熟悉安卓文件結(jié)構(gòu)的破解者已經(jīng)了解這樣的隱藏方式,可以較為快速的獲得完整密鑰,保護手段也失效了。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種軟件敏感數(shù)據(jù)隱藏、提取方法及裝置, 用以解決現(xiàn)有的軟件保護方式大多采用將軟件敏感數(shù)據(jù)打散以明文方式隱藏到應用程序的文件中,但是因應用程序的文件可以插入冗余數(shù)據(jù)的位置相對固定,熟悉安卓文件結(jié)構(gòu)的破解者已經(jīng)了解這樣的隱藏方式,可以較為快速的獲得完整密鑰,造成保護失效的問題。
為了解決上述技術(shù)問題,本發(fā)明實施例提供一種軟件敏感數(shù)據(jù)隱藏方法,包括:
獲取待保護的軟件敏感數(shù)據(jù),以及確定隱藏所述軟件敏感數(shù)據(jù)的目標音頻文件;
按照預定的插入規(guī)則,將所述軟件敏感數(shù)據(jù)以數(shù)據(jù)幀的形式插入到所述目標音頻文件中。
進一步地,所述軟件敏感數(shù)據(jù)包括:用于檢驗軟件完整性的哈希值、用于解密軟件中加密數(shù)據(jù)的密鑰和開發(fā)者的個人水印中的一個或多個。
進一步地,所述按照預定的插入規(guī)則,將所述軟件敏感數(shù)據(jù)以數(shù)據(jù)幀的形式插入到所述目標音頻文件中的步驟具體為:
將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串;
獲取所述目標音頻文件的音頻幀數(shù)據(jù);
根據(jù)所述音頻幀數(shù)據(jù)對所述數(shù)據(jù)字符串進行填充,得到偽幀數(shù)據(jù);
依據(jù)預定的插入規(guī)則,將所述偽幀數(shù)據(jù)插入到所述目標音頻文件中。
進一步地,所述將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串的步驟具體為:
根據(jù)第一預設(shè)規(guī)則將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串。
進一步地,所述獲取所述目標音頻文件的音頻幀數(shù)據(jù)的步驟具體為:
獲取所述目標音頻文件的特征數(shù)據(jù);
根據(jù)所述特征數(shù)據(jù),計算得到所述目標音頻文件的音頻幀數(shù)據(jù)。
進一步地,所述特征數(shù)據(jù)包括音頻文件的比特率、采樣頻率、文件大小、標志位、結(jié)構(gòu)索引值和文件校驗位中的一個或多個。
進一步地,所述音頻幀數(shù)據(jù)包括幀頭長度、幀實體數(shù)據(jù)長度和幀個數(shù)中的一個或多個。
進一步地,所述根據(jù)所述音頻幀數(shù)據(jù)對所述數(shù)據(jù)字符串進行填充,得到偽幀數(shù)據(jù)的步驟具體為:
在數(shù)據(jù)字符串的預設(shè)位置填充至少一個0或者1,得到偽幀數(shù)據(jù);其中,
所述偽幀數(shù)據(jù)的長度=音頻幀數(shù)據(jù)的幀實體數(shù)據(jù)長度×n,其中,n為整數(shù)。
進一步地,所述依據(jù)預定的插入規(guī)則,將所述偽幀數(shù)據(jù)插入到所述目標音頻文件中的步驟具體為:
將所述偽幀數(shù)據(jù)進行格式修復,得到填充幀數(shù)據(jù);
將填充幀數(shù)據(jù)依據(jù)預定的插入規(guī)則插入到所述目標音頻文件中。
進一步地,所述將填充幀數(shù)據(jù)依據(jù)預定的插入規(guī)則插入到所述目標音頻文件中的步驟具體為:
按照預定的插入規(guī)則,將填充幀數(shù)據(jù)插入到所述目標音頻文件的預設(shè)位置。
進一步地,所述軟件敏感數(shù)據(jù)隱藏方法,還包括:
將插入軟件敏感數(shù)據(jù)的目標音頻文件進行文件修復處理;
將通過文件修復處理后的所述目標音頻文件設(shè)置在資源文件目錄下。
本發(fā)明實施例提供一種軟件敏感數(shù)據(jù)隱藏裝置,包括:
第一獲取模塊,用于獲取待保護的軟件敏感數(shù)據(jù),以及確定隱藏所述軟件敏感數(shù)據(jù)的目標音頻文件;
插入模塊,用于按照預定的插入規(guī)則,將所述軟件敏感數(shù)據(jù)以數(shù)據(jù)幀的形式插入到所述目標音頻文件中。
進一步地,所述插入模塊包括:
轉(zhuǎn)換子模塊,用于將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串;
獲取子模塊,用于獲取所述目標音頻文件的音頻幀數(shù)據(jù);
填充子模塊,用于根據(jù)所述音頻幀數(shù)據(jù)對所述數(shù)據(jù)字符串進行填充,得到偽幀數(shù)據(jù);
插入子模塊,用于依據(jù)預定的插入規(guī)則,將所述偽幀數(shù)據(jù)插入到所述目標音頻文件中。
進一步地,所述獲取子模塊包括:
第一獲取單元,用于獲取所述目標音頻文件的特征數(shù)據(jù);
計算單元,用于根據(jù)所述特征數(shù)據(jù),計算得到所述目標音頻文件的音頻幀數(shù)據(jù)。
進一步地,所述插入子模塊包括:
修復單元,用于將所述偽幀數(shù)據(jù)進行格式修復,得到填充幀數(shù)據(jù);
插入單元,用于將填充幀數(shù)據(jù)依據(jù)預定的插入規(guī)則插入到所述目標音頻文件中。
進一步地,所述軟件敏感數(shù)據(jù)隱藏裝置還包括:
文件修復模塊,用于將插入軟件敏感數(shù)據(jù)的目標音頻文件進行文件修復處理;
設(shè)置模塊,用于將通過文件修復處理后的所述目標音頻文件設(shè)置在資源文件目錄下。
本發(fā)明實施例提供一種軟件敏感數(shù)據(jù)提取方法,包括:
獲取待保護的軟件敏感數(shù)據(jù)的插入規(guī)則,其中,所述軟件敏感數(shù)據(jù)按照所述插入規(guī)則,以數(shù)據(jù)幀的形式插入到目標音頻文件中;
確定插入所述軟件敏感數(shù)據(jù)的目標音頻文件;
根據(jù)所述插入規(guī)則,提取所述目標音頻文件中的軟件敏感數(shù)據(jù)。
進一步地,所述根據(jù)所述插入規(guī)則,提取所述目標音頻文件中的軟件敏感數(shù)據(jù)的步驟具體為:
根據(jù)所述插入規(guī)則,確定所述目標音頻文件中所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置;
對所述目標音頻文件進行解碼;
根據(jù)所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置,在解碼后的所述目標音頻文件提取填充幀數(shù)據(jù);
獲取所述填充幀數(shù)據(jù)中的軟件敏感數(shù)據(jù)。
進一步地,所述獲取所述填充數(shù)據(jù)幀中的軟件敏感數(shù)據(jù)的步驟具體為:
根據(jù)所述填充幀數(shù)據(jù),獲取偽幀數(shù)據(jù);
根據(jù)所述偽幀數(shù)據(jù),獲取所述軟件敏感數(shù)據(jù)的數(shù)據(jù)字符串;
根據(jù)所述數(shù)據(jù)字符串得到軟件敏感數(shù)據(jù)。
本發(fā)明實施例提供一種軟件敏感數(shù)據(jù)提取裝置,包括:
第二獲取模塊,用于獲取待保護的軟件敏感數(shù)據(jù)的插入規(guī)則,其中,所述軟件敏感數(shù)據(jù)按照所述插入規(guī)則,以數(shù)據(jù)幀的形式插入到目標音頻文件中;
確定模塊,用于確定插入所述軟件敏感數(shù)據(jù)的目標音頻文件;
提取模塊,用于根據(jù)所述插入規(guī)則,提取所述目標音頻文件中的軟件敏感數(shù)據(jù)。
進一步地,所述提取模塊包括:
確定子模塊,用于根據(jù)所述插入規(guī)則,確定所述目標音頻文件中所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置;
解碼子模塊,用于對所述目標音頻文件進行解碼;
提取子模塊,用于根據(jù)所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置,在解碼后的所述目標音頻文件提取填充幀數(shù)據(jù);
數(shù)據(jù)獲取子模塊,用于獲取所述填充幀數(shù)據(jù)中的軟件敏感數(shù)據(jù)。
進一步地,所述數(shù)據(jù)獲取子模塊包括:
第二獲取單元,用于根據(jù)所述填充幀數(shù)據(jù),獲取偽幀數(shù)據(jù);
第三獲取單元,用于根據(jù)所述偽幀數(shù)據(jù),獲取所述軟件敏感數(shù)據(jù)的數(shù)據(jù)字符串;
第四獲取單元,用于根據(jù)所述數(shù)據(jù)字符串得到軟件敏感數(shù)據(jù)。
本發(fā)明的有益效果是:
上述方案,通過將軟件中的軟件敏感數(shù)據(jù)進行轉(zhuǎn)換,以音頻形式隱藏在應用程序中,避免了軟件敏感數(shù)據(jù)以明文形式出現(xiàn)在應用程序中,使得破解者可以輕易獲取軟件敏感數(shù)據(jù),造成保護失效的問題,此種方式,盡可能的保證了數(shù)據(jù)的隱秘性,保證了軟件的數(shù)據(jù)安全。
附圖說明
圖1表示本發(fā)明實施例一的軟件敏感數(shù)據(jù)隱藏方法的流程示意圖;
圖2表示本發(fā)明實施例二的軟件敏感數(shù)據(jù)隱藏方法的流程示意圖;
圖3表示本發(fā)明實施例三的軟件敏感數(shù)據(jù)隱藏方法的流程示意圖;
圖4表示本發(fā)明實施例四的軟件敏感數(shù)據(jù)隱藏裝置的流程示意圖;
圖5表示本發(fā)明實施例五的軟件敏感數(shù)據(jù)提取方法的流程示意圖;
圖6表示本發(fā)明實施例六的軟件敏感數(shù)據(jù)提取裝置的流程示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例對本發(fā)明進行詳細描述。
本發(fā)明針對現(xiàn)有的軟件保護方式大多采用將軟件敏感數(shù)據(jù)打散以明文方式隱藏到應用程序的文件中,但是因應用程序的文件可以插入冗余數(shù)據(jù)的位置相對固定,熟悉安卓文件結(jié)構(gòu)的破解者已經(jīng)了解這樣的隱藏方式,可以較為快速的獲得完整密鑰,造成保護失效的問題,提供一種軟件敏感數(shù)據(jù)隱藏、提取方法及裝置。
實施例一
如圖1所示,本發(fā)明實施例一的軟件敏感數(shù)據(jù)隱藏方法包括:
步驟11,獲取待保護的軟件敏感數(shù)據(jù),以及確定隱藏所述軟件敏感數(shù)據(jù)的目標音頻文件;
步驟12,按照預定的插入規(guī)則,將所述軟件敏感數(shù)據(jù)以數(shù)據(jù)幀的形式插入到所述目標音頻文件中。
需要說明的是,該軟件敏感數(shù)據(jù)包括但不限于是:用于檢驗軟件完整性的哈希值、用于解密軟件中加密數(shù)據(jù)的密鑰和開發(fā)者的個人水印中的一個或多個。
本實施例中,將軟件中需要保護的軟件敏感數(shù)據(jù)轉(zhuǎn)換成音頻文件幀的形式,將軟件敏感數(shù)據(jù)偽裝成安卓軟件的音頻資源文件,盡可能的實現(xiàn)迷惑破解者、保護軟件數(shù)據(jù)安全的作用。
實施例二
如圖2所示,本實施例二的所述軟件敏感數(shù)據(jù)隱藏方法包括:
步驟21,獲取待保護的軟件敏感數(shù)據(jù),以及確定隱藏所述軟件敏感數(shù)據(jù)的目標音頻文件;
步驟22,將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串;
步驟23,獲取所述目標音頻文件的音頻幀數(shù)據(jù);
步驟24,根據(jù)所述音頻幀數(shù)據(jù)對所述數(shù)據(jù)字符串進行填充,得到偽幀數(shù)據(jù);
步驟25,依據(jù)預定的插入規(guī)則,將所述偽幀數(shù)據(jù)插入到所述目標音頻文件中。
需要說明的是,上述步驟22的主要實現(xiàn)方式為:
根據(jù)第一預設(shè)規(guī)則將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串。
需要說明的是,所述第一預設(shè)規(guī)則可以為ASCII編碼規(guī)則,也可以為自定義的字符串轉(zhuǎn)換規(guī)則,在轉(zhuǎn)換完成后,該數(shù)據(jù)字符串主要是由0和1組成的二進制編碼字符串。
進一步需要說明的是,步驟23在實現(xiàn)時,主要包括:
步驟231,獲取所述目標音頻文件的特征數(shù)據(jù);
該步驟231主要實現(xiàn)的是,按照目標音頻文件的文件格式(如MP3格式或WAV等安卓系統(tǒng)支持的音頻格式)以二進制形式讀取目標音頻文件,按照其官方對二進制文件的結(jié)構(gòu)說明對二進制文件進行解析,獲取目標音頻文件的特征數(shù)據(jù);需要說明的是該特征數(shù)據(jù)包括但不限于是:音頻文件的比特率、采樣頻率、文件大小、標志位(如MP3的CRB(Constant Bit-Rate,定比特率)和VRB(Variable Bit-Rate,變比特率)標記)、結(jié)構(gòu)索引值和文件校驗位中的一個或多個,特別需要說明的是,不同格式的目標音頻文件所獲取的特征數(shù)據(jù)可能是不相同的。
步驟232,根據(jù)所述特征數(shù)據(jù),計算得到所述目標音頻文件的音頻幀數(shù)據(jù);
需要說明的是,步驟232中,根據(jù)目標音頻文件的特征數(shù)據(jù),按照音頻結(jié)構(gòu)說明,可獲得目標音頻文件的音頻幀數(shù)據(jù),需要說明的是,該特征數(shù)據(jù)包括但不限于是幀頭長度、幀實體數(shù)據(jù)長度和幀個數(shù)中的一個或多個。以MP3音頻格式為例,通過比特率、采樣頻率等特征數(shù)據(jù),可以計算出幀頭長度、幀實體長度和幀個數(shù)等幀數(shù)據(jù)。
在得到目標音頻文件的音頻幀數(shù)據(jù)后,需要對數(shù)據(jù)字符串進行填充,得到與音頻幀數(shù)據(jù)相匹配的偽幀數(shù)據(jù),因此,該步驟24的主要實現(xiàn)方式為:
在數(shù)據(jù)字符串的預設(shè)位置填充至少一個0或者1,得到偽幀數(shù)據(jù);其中,
所述偽幀數(shù)據(jù)的長度=音頻幀數(shù)據(jù)的幀實體數(shù)據(jù)長度×n,其中,n為整數(shù)。
需要說明的是,填充后的數(shù)據(jù)字符串的偽幀數(shù)據(jù)的字符串長度等于n個音頻幀數(shù)據(jù)的長度,例如,如果是MP3格式的幀,填充后的數(shù)據(jù)字符串的偽幀數(shù)據(jù)的長度等于n個幀實體數(shù)據(jù)長度。
在進行數(shù)據(jù)字符串的填充時,可以選擇在長度為l的數(shù)據(jù)字符串的尾部填充p-l個0或者1(其中,可以選擇填充全0或全1,也可以按照規(guī)則進行0和1的比例分配);或者也可以按照特定間隔,在長度為l的數(shù)據(jù)字符串中插入p-1 個0或者1,填充完成后,使得p=音頻幀數(shù)據(jù)的幀實體數(shù)據(jù)長度×n。
在步驟24填充完成后,便可得到n個偽幀數(shù)據(jù),之后便需將n個偽幀數(shù)據(jù)插入到目標音頻文件中,在插入偽幀數(shù)據(jù)時,步驟25在實現(xiàn)時,主要包括:
步驟251,將所述偽幀數(shù)據(jù)進行格式修復,得到填充幀數(shù)據(jù);
需要說明的是,該步驟251主要是對偽幀數(shù)據(jù)進行格式上的修復,使其能成為合法的幀數(shù)據(jù);以MP3為例,格式修復主要包括:補充幀頭文件,格式修復也包括將幀頭中的特征數(shù)據(jù)修復成與填充幀數(shù)據(jù)的幀實體數(shù)據(jù)相匹配。
步驟252,將填充幀數(shù)據(jù)依據(jù)預定的插入規(guī)則插入到所述目標音頻文件中。
該步驟252的主要實現(xiàn)方式為:按照預定的插入規(guī)則,將填充幀數(shù)據(jù)插入到所述目標音頻文件的預設(shè)位置。
在具體實現(xiàn)時,可以將格式修復后的n個隱藏了數(shù)據(jù)的填充幀數(shù)據(jù),連續(xù)插入到目標音頻文件的第m幀和第m+1幀之間;也可以按照自定義的插入間隔,將n個填充幀數(shù)據(jù)分散的插入到目標音頻文件中。
在進行完上述步驟后,就成功的將軟件敏感數(shù)據(jù)插入到了目標音頻文件中。
實施例三
為了使得插入軟件敏感數(shù)據(jù)的目標音頻文件正常在軟件運行時使用,如圖3所示,本實施例三的軟件敏感數(shù)據(jù)隱藏方法,包括:
步驟31,獲取待保護的軟件敏感數(shù)據(jù),以及確定隱藏所述軟件敏感數(shù)據(jù)的目標音頻文件;
步驟32,按照預定的插入規(guī)則,將所述軟件敏感數(shù)據(jù)以數(shù)據(jù)幀的形式插入到所述目標音頻文件中;
步驟33,將插入軟件敏感數(shù)據(jù)的目標音頻文件進行文件修復處理;
需要說明的是,該文件修復處理主要實現(xiàn)的是將文件大小修復為插入軟件敏感數(shù)據(jù)之后的文件的實際大?。灰訫P3音頻文件為例,該文件修復處理包括修復FRAME信息,F(xiàn)RAME信息由一系列幀組成;該文件修復處理包括將FRAME中的幀個數(shù)信息修復成與插入敏感數(shù)據(jù)后的實際幀個數(shù)相匹配等操作;該文件修復處理還包括將MP3文件的特征數(shù)據(jù)修復為與插入軟件敏感數(shù)據(jù)后的實際文件相匹配。
步驟34,將通過文件修復處理后的所述目標音頻文件設(shè)置在資源文件目錄 下。
需要說明的是,該資源文件目錄下的音頻文件均為安卓軟件的資源文件,步驟34中,將插入軟件敏感數(shù)據(jù)的目標音頻文件成功的偽裝成了安卓軟件的資源文件,從而較好的迷惑破解者、保護了軟件數(shù)據(jù)的安全。
實施例四
如圖4所示,本發(fā)明實施例提供一種軟件敏感數(shù)據(jù)隱藏裝置,包括:
第一獲取模塊41,用于獲取待保護的軟件敏感數(shù)據(jù),以及確定隱藏所述軟件敏感數(shù)據(jù)的目標音頻文件;
插入模塊42,用于按照預定的插入規(guī)則,將所述軟件敏感數(shù)據(jù)以數(shù)據(jù)幀的形式插入到所述目標音頻文件中。
需要說明的是,該軟件敏感數(shù)據(jù)包括:用于檢驗軟件完整性的哈希值、用于解密軟件中加密數(shù)據(jù)的密鑰和開發(fā)者的個人水印中的一個或多個。
可選地,所述插入模塊42包括:
轉(zhuǎn)換子模塊,用于將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串;
獲取子模塊,用于獲取所述目標音頻文件的音頻幀數(shù)據(jù);
填充子模塊,用于根據(jù)所述音頻幀數(shù)據(jù)對所述數(shù)據(jù)字符串進行填充,得到偽幀數(shù)據(jù);
插入子模塊,用于依據(jù)預定的插入規(guī)則,將所述偽幀數(shù)據(jù)插入到所述目標音頻文件中。
具體地,所述轉(zhuǎn)換子模塊具體用于:根據(jù)第一預設(shè)規(guī)則將所述軟件敏感數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字符串。
具體地,所述獲取子模塊包括:
第一獲取單元,用于獲取所述目標音頻文件的特征數(shù)據(jù);
計算單元,用于根據(jù)所述特征數(shù)據(jù),計算得到所述目標音頻文件的音頻幀數(shù)據(jù)。
需要說明的是,所述特征數(shù)據(jù)包括音頻文件的比特率、采樣頻率、文件大小、標志位、結(jié)構(gòu)索引值和文件校驗位中的一個或多個;所述音頻幀數(shù)據(jù)包括幀頭長度、幀實體數(shù)據(jù)長度和幀個數(shù)中的一個或多個。
具體地,所述填充子模塊具體用于:
在數(shù)據(jù)字符串的預設(shè)位置填充至少一個0或者1,得到偽幀數(shù)據(jù);其中,
所述偽幀數(shù)據(jù)的長度=音頻幀數(shù)據(jù)的幀實體數(shù)據(jù)長度×n,其中,n為整數(shù)。
進一步地,所述插入子模塊包括:
修復單元,用于將所述偽幀數(shù)據(jù)進行格式修復,得到填充幀數(shù)據(jù);
插入單元,用于將填充幀數(shù)據(jù)依據(jù)預定的插入規(guī)則插入到所述目標音頻文件中。
可選地,所述插入單元具體用于:按照預定的插入規(guī)則,將填充幀數(shù)據(jù)插入到所述目標音頻文件的預設(shè)位置。
可選地,所述軟件敏感數(shù)據(jù)隱藏裝置還包括:
文件修復模塊,用于將插入軟件敏感數(shù)據(jù)的目標音頻文件進行文件修復處理;
設(shè)置模塊,用于將通過文件修復處理后的所述目標音頻文件設(shè)置在資源文件目錄下。
需要說明的是,該軟件敏感數(shù)據(jù)隱藏裝置實施例是與上述軟件敏感數(shù)據(jù)隱藏方法相對應的軟件敏感數(shù)據(jù)隱藏裝置,上述軟件敏感數(shù)據(jù)隱藏方法的所有實現(xiàn)方式均適用于該軟件敏感數(shù)據(jù)隱藏裝置實施例中,也能達到相同的技術(shù)效果。
實施例五
在加入殼程序的軟件運行前,需要先利用軟件敏感數(shù)據(jù)對軟件進行解密處理,因此,需要先提取隱藏的軟件敏感數(shù)據(jù),如圖5所示,本發(fā)明實施例五提供一種軟件敏感數(shù)據(jù)提取方法,包括:
步驟51,獲取待保護的軟件敏感數(shù)據(jù)的插入規(guī)則;
需要說明的是,所述軟件敏感數(shù)據(jù)按照所述插入規(guī)則,以數(shù)據(jù)幀的形式插入到目標音頻文件中。
步驟52,確定插入所述軟件敏感數(shù)據(jù)的目標音頻文件;
步驟53,根據(jù)所述插入規(guī)則,提取所述目標音頻文件中的軟件敏感數(shù)據(jù)。
步驟53在實現(xiàn)時,具體包括:
步驟531,根據(jù)所述插入規(guī)則,確定所述目標音頻文件中所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置;
步驟532,對所述目標音頻文件進行解碼;
需要說明的是,該步驟532可以通過使用安卓提供給開發(fā)者的音頻處理接口或第三方提供的音頻處理工具,按照目標音頻文件的格式(如MP3),通過調(diào)用接口中相應音頻格式的加載方法,加載目標音頻文件,得到音頻文件的數(shù)據(jù)流,根據(jù)上一步獲得的數(shù)據(jù)幀的位置,通過所用接口中提供的幀抽取方法從數(shù)據(jù)流中獲得隱藏了數(shù)據(jù)的目標幀;
該步驟532還可以通過安卓提供給開發(fā)者的文件處理接口,或調(diào)用第三方提供的相關(guān)工具,將音頻文件作為二進制文件進行處理。處理方法為調(diào)用文件處理接口中的文件讀取方法,打開文件,通過文件處理接口提供的bit位讀取方法,根據(jù)上一步獲得的數(shù)據(jù)幀的位置,讀取對應位置的二進制數(shù)據(jù)串。
步驟533,根據(jù)所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置,在解碼后的所述目標音頻文件提取填充幀數(shù)據(jù);
步驟534,獲取所述填充幀數(shù)據(jù)中的軟件敏感數(shù)據(jù)。
進一步地,所述步驟534在實現(xiàn)時,具體包括:
根據(jù)所述填充幀數(shù)據(jù),獲取偽幀數(shù)據(jù);
根據(jù)所述偽幀數(shù)據(jù),獲取所述軟件敏感數(shù)據(jù)的數(shù)據(jù)字符串;
根據(jù)所述數(shù)據(jù)字符串得到軟件敏感數(shù)據(jù)。
需要說明的是,該軟件敏感數(shù)據(jù)提取方法是上述軟件敏感數(shù)據(jù)隱藏方法的逆過程,通過對軟件敏感數(shù)據(jù)的提取,進行軟件的解密,保證了軟件的正常使用。
實施例六
如圖6所示,本發(fā)明實施例提供一種軟件敏感數(shù)據(jù)提取裝置,包括:
第二獲取模塊61,用于獲取待保護的軟件敏感數(shù)據(jù)的插入規(guī)則;
需要說明的是,所述軟件敏感數(shù)據(jù)按照所述插入規(guī)則,以數(shù)據(jù)幀的形式插入到目標音頻文件中。
確定模塊62,用于確定插入所述軟件敏感數(shù)據(jù)的目標音頻文件;
提取模塊63,用于根據(jù)所述插入規(guī)則,提取所述目標音頻文件中的軟件敏感數(shù)據(jù)。
可選地,所述提取模塊63包括:
確定子模塊,用于根據(jù)所述插入規(guī)則,確定所述目標音頻文件中所述軟件 敏感數(shù)據(jù)的數(shù)據(jù)幀的位置;
解碼子模塊,用于對所述目標音頻文件進行解碼;
提取子模塊,用于根據(jù)所述軟件敏感數(shù)據(jù)的數(shù)據(jù)幀的位置,在解碼后的所述目標音頻文件提取填充幀數(shù)據(jù);
數(shù)據(jù)獲取子模塊,用于獲取所述填充幀數(shù)據(jù)中的軟件敏感數(shù)據(jù)。
進一步地,所述數(shù)據(jù)獲取子模塊包括:
第二獲取單元,用于根據(jù)所述填充幀數(shù)據(jù),獲取偽幀數(shù)據(jù);
第三獲取單元,用于根據(jù)所述偽幀數(shù)據(jù),獲取所述軟件敏感數(shù)據(jù)的數(shù)據(jù)字符串;
第四獲取單元,用于根據(jù)所述數(shù)據(jù)字符串得到軟件敏感數(shù)據(jù)。
需要說明的是,該軟件敏感數(shù)據(jù)提取裝置實施例是與上述軟件敏感數(shù)據(jù)提取方法相對應的軟件敏感數(shù)據(jù)提取裝置,上述軟件敏感數(shù)據(jù)提取方法的所有實現(xiàn)方式均適用于該軟件敏感數(shù)據(jù)提取裝置實施例中,也能達到相同的技術(shù)效果。
本發(fā)明中,通過將軟件敏感數(shù)據(jù)以音頻形式進行隱藏,避免了軟件敏感數(shù)據(jù)以明文形式出現(xiàn)在安卓應用程序中,此種方式,對破解造成較大的障礙,同時本發(fā)明作為新的屏障也為高水平破解者增加更多的開銷,為軟件的安全傳播爭取更多的時間。
以上所述的是本發(fā)明的優(yōu)選實施方式,應當指出對于本技術(shù)領(lǐng)域的普通人員來說,在不脫離本發(fā)明所述的原理前提下還可以作出若干改進和潤飾,這些改進和潤飾也在本發(fā)明的保護范圍內(nèi)。