TWI675310B - 防止重打包的方法及其裝置 - Google Patents

防止重打包的方法及其裝置 Download PDF

Info

Publication number
TWI675310B
TWI675310B TW106130944A TW106130944A TWI675310B TW I675310 B TWI675310 B TW I675310B TW 106130944 A TW106130944 A TW 106130944A TW 106130944 A TW106130944 A TW 106130944A TW I675310 B TWI675310 B TW I675310B
Authority
TW
Taiwan
Prior art keywords
installation package
digital watermark
target file
watermark information
repackaged
Prior art date
Application number
TW106130944A
Other languages
English (en)
Other versions
TW201814576A (zh
Inventor
陳耀光
王加水
Original Assignee
香港商阿里巴巴集團服務有限公司
Alibaba Group Services Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 香港商阿里巴巴集團服務有限公司, Alibaba Group Services Limited filed Critical 香港商阿里巴巴集團服務有限公司
Publication of TW201814576A publication Critical patent/TW201814576A/zh
Application granted granted Critical
Publication of TWI675310B publication Critical patent/TWI675310B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Storage Device Security (AREA)
  • Medical Treatment And Welfare Office Work (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本申請公開了一種防止重打包的方法及其裝置。該方法包括:運行安裝包中的目標檔案並加載安裝包中的安全動態庫;根據目標檔案中的代碼執行下述步驟:獲取目標檔案中嵌入的數位浮水印資訊,以及安全動態庫中儲存的驗證資訊;根據數位浮水印資訊和驗證資訊,驗證安裝包是否是重打包的安裝包。由於本申請中安裝包本身包含有驗證代碼,因此,無論對操作系統如何改造,也無法避開系統驗證安裝包的過程,解決了現有技術系統透過校驗安裝包自簽名來驗證安裝包是否被重打包時,有時無法有效地驗證該安裝包是否被重打包的問題。並且解決了現有技術系統透過計算安裝包哈希值來驗證安裝包是否被重打包時,有時驗證效率較低的問題。

Description

防止重打包的方法及其裝置
本申請係關於計算機技術領域,尤其關於一種防止重打包的方法及其裝置。
目前,許多惡意應用軟體透過重打包的方式修改原始的安裝包,在原始的安裝包中嵌入廣告、自動下載惡意軟體以及實現root等程式。   重打包的過程如圖1所示:首先,對原始安裝包進行反編譯,獲得該原始安裝包的源代碼,然後,用戶對該源代碼進行修改,例如,添加其他代碼,添加的代碼可以是廣告,也可以是自動下載惡意軟體的程式,等等,最後,對修改後的檔案進行重打包,獲得重打包的安裝包。   由於上述重打包的過程中對源代碼進行了修改,因此,重打包的安裝包的自簽名,不再是原始安裝包的自簽名。因此,現有技術中,防重打包的方法就可以透過校驗安裝包的自簽名,從而判斷該安裝包是否是被重打包,具體驗證過程如圖2所示:   當某安裝包被安裝時,該安裝包中的目標檔案就會被運行,同時,在該安裝包中的安全動態庫也會被加載,通常,為了保證資訊的安全性,會將一些驗證資訊儲存在安全動態庫中,該驗證資訊包括:該安裝包對應的原始安裝包的自簽名。由於操作系統提供了驗證安裝包自簽名的介面,因此,操作系統從該目標檔案中獲取該安裝包的自簽名,以及從該安全動態庫中獲取原始安裝包的自簽名後,驗證該安裝包的自簽名與該原始安裝包的自簽名是否一致,若一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   現有技術中,防止重打包的方法還可以是:操作系統計算本次安裝的安裝包的哈希(hash)值,並對該哈希值進行校驗,具體地,將該哈希值與原始安裝包的哈希值進行對比,若一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   上述兩種現有技術中的防止重打包方法,必須建立在完全信任的操作系統下,才能有效的防止重打包的情形,但由於目前很多操作系統具有開源性,因此,用戶可以對原有的操作系統進行改造,使操作系統不進行校驗安裝包自簽名的過程,以及不進行校驗安裝包哈希值的過程,這樣,無論用戶下載的安裝包是否是經過重打包的安裝包,操作系統都會預設該安裝包是原始安裝包。   另外,上述第二種防止重打包的方法中,有時待安裝的安裝包佔用的記憶體會很大,這樣,操作系統在計算該安裝包的哈希值時,會影響操作系統的驗證效率。
鑒於上述問題,本申請提供了一種防止重打包的方法及其裝置,用於解決現有技術中在系統透過校驗安裝包自簽名,有時無法有效地驗證該安裝包是否被重打包的問題,以及解決現有技術中系統透過計算安裝包的哈希值來校驗安裝包是否被重打包時,有時由於安裝包佔用記憶體較大,導致驗證效率較低的問題。   本申請提供了一種防止重打包的方法,該方法包括:   運行安裝包中的目標檔案並加載所述安裝包中的安全動態庫;   根據所述目標檔案中的代碼執行下述步驟:   獲取所述目標檔案中嵌入的數位浮水印資訊,以及所述安全動態庫中儲存的驗證資訊;   根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包。   相應地,本申請還提供了一種防止重打包的裝置,該裝置包括:   運行單元和執行單元,其中:   所述運行單元,運行安裝包中的目標檔案並加載所述安裝包中的安全動態庫;   所述執行單元,根據所述目標檔案中的代碼執行下述步驟:   獲取所述目標檔案中嵌入的數位浮水印資訊,以及所述安全動態庫中儲存的驗證資訊;   根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包。   本申請提供防止重打包的方法中,安裝包本身包含有驗證代碼,當該安裝包被安裝時,操作系統就會根據該代碼,獲取該目標檔案中嵌入的數位浮水印資訊,以及獲取該安裝包中的安全動態庫中的驗證資訊,並根據該數位浮水印資訊和該驗證資訊,驗證該安裝包是否是重打包的安裝包。採用本申請提供的防止重打包的方法,獲得的有益效果如下:   1、由於本申請中安裝包本身包含有用於驗證該安裝包是否被重打包的代碼,因此,無論對操作系統如何改造,也無法避開驗證安裝包的過程,解決了現有技術透過系統校驗安裝包自簽名來驗證安裝包是否被重打包時,由於系統有時會繞過驗證安裝自簽名的過程,導致無法有效地驗證該安裝包是否被重打包的問題。   2、由於本申請是根據數位浮水印資訊和驗證資訊,驗證該安裝包是否被重打包,因此,相比於現有技術透過計算安裝包哈希值來驗證安裝包是否被重打包的方法,本申請驗證安裝包是否被重打包的效率更高。
為使本申請的目的、技術方案和優點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。   以下結合附圖,詳細說明本申請各實施例提供的技術方案。   本申請提供了一種防止重打包的方法,用於解決現有技術中在系統透過校驗安裝包自簽名,有時無法有效地驗證該安裝包是否被重打包的問題,以及解決現有技術中系統透過計算安裝包的哈希值來校驗安裝包是否被重打包時,有時由於安裝包佔用記憶體較大,導致驗證效率較低的問題。該方法的具體流程如圖3所示,具體包括以下步驟:   步驟301:運行安裝包中的目標檔案並加載所述安裝包中的安全動態庫。   在本步驟中,當用戶下載了某個安裝包,並對該安裝包進行安裝時,操作系統就會運行該安裝包中的目標檔案,並同時加載該安裝包中的安全動態庫。該目標檔案是根據預設的代碼編譯後得到的目標檔案,且在編譯後的目標檔案中嵌入了數位浮水印資訊。該數位浮水印資訊可以是字符串,還可以是指令,等等,該安全動態庫中儲存有關該安裝包的驗證資訊,該驗證資訊用於驗證該安裝包是否是重打包的安裝包。   上述在目標檔案中嵌入數位浮水印資訊的方式,可以是在目標檔案的末尾嵌入該數位浮水印資訊,或者是在目標檔案的其他的位置上嵌入該數位浮水印資訊。   上述操作系統可以是安卓系統,則目標檔案可以是dex檔案,該dex檔案具體為安卓系統下可執行檔案的類型,採用java代碼編寫而成,安全動態庫可以是so庫,採用c/c++編寫而成,通常so庫裡保存有一些安全資訊,例如,驗證資訊,當可執行的檔案加載或運行時,由操作系統加載so庫;或者,該操作系統可以是windows,則目標檔案可以是exe檔案,安全動態庫為dll庫,等等,這裡不對該操作系統、目標檔案以及動態安全庫進行限定。   如圖4所示,如果該目標檔案是dex檔案,在該目標檔案中嵌入數位浮水印資訊時,為了保證該目標檔案資料的完整性和準確性,會根據該數位浮水印資訊,重新計算該目標檔案頭部的校驗總和(checksum)、簽名(signature)、檔案大小(filesize)等對應的值。   需要說明的是:如果該安裝包是重打包的安裝包,用戶在對原始安裝包進行重打包時,雖然用戶可以修改原始安裝包中原始檔案的代碼,但該原始安裝包的安全動態庫中的驗證資訊卻不容易被修改,因此,該安裝包的安全動態庫中仍會保存有原始安裝包的驗證資訊。假設該原始安裝包中也嵌入了數位浮水印資訊,則儲存在安全動態庫中的驗證資訊可以是嵌入該原始檔案中的數位浮水印資訊,具體原因如圖5所示:   當對原始安裝包重打包時,需要先將該原始安裝包進行反編譯,獲得該原始安裝包對應的源代碼檔案,由於數位浮水印資訊是在根據預設代碼編譯成原始檔案後,才嵌入到該原始檔案中的,因此,在對原始安裝包反編譯的過程中,該數位浮水印資訊A將會丟失,然後,用戶對源代碼檔案進行修改,如圖5所示,可以是添加其他代碼,同時,用戶為了偽裝該安裝包重打包的身份,還會在源代碼檔案中嵌入數位浮水印資訊B,最後,對該源代碼檔案進行重打包,重打包後的安裝包的安全動態庫中仍儲存有驗證資訊A。因此,可以將數位浮水印資訊A可以作為原始安裝包的標識,用於驗證該安裝包是否被重打包。   為了清楚地說明本申請實施例,下面就以在目標檔案的末尾嵌入數位浮水印資訊為例,說明本申請實施例中的各個步驟。   步驟302:根據所述目標檔案中的代碼執行下述步驟:   獲取所述目標檔案中嵌入的數位浮水印資訊,以及所述安全動態庫中儲存的驗證資訊,並根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包。   在本步驟中,操作系統根據目標檔案中的代碼,獲取目標檔案的數位浮水印資訊的方法如圖6所示:根據目標檔案的原始長度,確定數位浮水印資訊在該目標檔案中的起始位址,並根據該起始位址,從該目標檔案中獲取該數位浮水印資訊,這裡的目標檔案的原始長度為在嵌入數位浮水印資訊前該目標檔案的長度。   當操作系統獲得該數位浮水印資訊,以及從安全動態庫中獲取驗證資訊後,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體的驗證方法可以由數位浮水印資訊的類型來決定,如表1所示: 表1   當數位浮水印資訊為字符串時,驗證該數位浮水印資訊與驗證資訊是否一致,若一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   在實際應用中,如果數位浮水印資訊為字符串,該字符串可能是固定長度的字符串,也可能是隨機長度的字符串。當數位浮水印資訊為固定長度的字符串時,直接驗證該字符串與安全動態庫中的驗證資訊是否一致;或者計算當前下載安裝包對應的浮水印值與安全動態庫中的驗證資訊是否一致,如圖7所示為dex檔案中透過計算浮水印值來驗證安裝包是否被重打包的方法,具體如下:   Dex檔案包括dex header和dex body,其中,dex header中包含data size和data off,dex body中包含data,且data size表示該data的大小,data off表示該data的偏移。假設在原始dex檔案中嵌入了數位浮水印資訊,當對該原始dex檔案進行重打包時,具體是將dex body中data部分對應的代碼進行修改,修改後,不僅嵌入在原始dex檔案中的數位浮水印資訊將會丟失,而且data的大小將會發生改變,則dex header中data size對應的值會發生變化;對該原始dex檔案進行重打包,還可以是對dex body中除了data以外其它部分對應的代碼進行修改,修改後,同樣嵌入在原始dex檔案中的數位浮水印資訊將會丟失,而且dex body中data的位置會發生偏移(如圖7所示),則dex header中data off對應的值會發生變化。   假設原始安裝包對應浮水印值的計算方法為“data size+data off”,即浮水印值為data size對應的值加data off對應的值。當用戶對該原始安裝包重打包時,data off或data size對應的值就會發生改變,則重打包的安裝包對應的浮水印值也會發生變化,這時,操作系統只要驗證重打包的安裝包對應的浮水印值與安全動態庫中的驗證資訊是否一致,就可以確定出該安裝包是否是被重打包。這裡浮水印值的計算方法只是示例性的說明,在實際應用中,可以根據實際情況進行設定浮水印值的計算方法,例如,可以是“data size-data off”,或者是“data size/data off”,等等。   利用上述方法驗證當前下載安裝包是否被重打包時,即使是在重打包的安裝包中嵌入原始安裝包中的數位浮水印資訊,該安裝包對應的浮水印值也會發生變化,因此,操作系統根據該安裝包的浮水印值可以準確地判斷出該安裝包是否被重打包。   當數位浮水印資訊為隨機長度的字符串時,可以先計算該字符串的長度,然後,驗證該字符串的長度是否與安全動態庫中的驗證資訊的長度一致,若不一致,則直接確定該安裝包是重打包的安裝包,若一致,再驗證該字符串與安全動態庫中的驗證資訊是否一致,若仍一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   當數位浮水印資訊為指令時,驗證安全包的方法有很多種,下面示例性的說明三種驗證方法:   第一種方法,與上述數位浮水印資訊為字符串時驗證安裝包的方法類似,即:操作系統驗證該指令與安全動態庫中的驗證資訊是否一致,若一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   第二種方法,操作系統根據該指令執行相應操作,獲得操作結果,然後,驗證該操作結果與驗證資訊是否一致,若一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   例如,該指令可以是“查詢XX位址中內容,是否與安全動態庫中的驗證資訊一致”,操作系統根據該指令,從目標檔案中的XX位址中,查詢該位址對應的內容(操作結果),並驗證該內容是否與安全動態庫中的驗證資訊一致,若一致,則確定該安裝包是原始安裝包,若不一致,則確定該安裝包是重打包的安裝包。   第三種方法,操作系統根據該指令執行相應操作,獲得操作結果,驗證該操作結果與該驗證資訊中的操作結果是否一致,以及驗證該指令與該驗證資訊中的指令是否一致,若兩次驗證的結果均為“一致”,則確定該安裝包是原始安裝包,若兩次驗證中任一次驗證的結果為“不一致”,或者是兩次驗證的結果均為“不一致”,則確定該安裝包是重打包的安裝包。   為了清楚地說明該驗證方法,這裡透過一個簡單的例子來說明該驗證方法,假設安全動態庫中驗證資訊中的操作結果為“2”,操作指令為“1+1”,而目標檔案中的數位浮水印資訊對應的指令為“3-1”,操作系統根據該指令執行操作後,獲得的操作結果也為“2”,如果操作系統只驗證該操作結果與驗證資訊中的操作結果是否一致,就會誤認為該安裝包是原始安裝包,但如果操作系統還驗證指令與驗證資訊中的指令是否一致,就會準確地判斷出該安裝包是否被重打包。   上述目標檔案中數位浮水印資訊對應的指令可以是簡單的“返回”指令,或者是其他實現與操作系統之間交互的指令,例如,該指令可以是“讓操作系統驗證目標檔案自簽名與安全動態庫中的驗證資訊是否一致”,再例如,該指令還可以是“讓操作系統驗證嵌入數位浮水印資訊前目標檔案的長度,與安全動態庫中的保存的驗證資訊是否一致”,等等,可以根據用戶的需求進行設定指令。   另外,如果該安裝包是重打包的安裝包,還可能存在這樣一種情形:該安裝包對應的原始檔案中嵌入了數位浮水印資訊,由前述內容可知,在對該原始安裝包重打包的過程中,將會丟失原始安裝包中的數位浮水印資訊,如果用戶在對該原始檔案的代碼修改後,沒有相應地加入數位浮水印資訊,這時,操作系統只要根據該安裝包中的代碼,查詢該安裝包中的目標檔案中是否具有該數位浮水印資訊即可。   上述驗證安裝包的方法只是示例性的說明,在實際應用中,數位浮水印資訊的類型有很多種,對應的驗證方法也會有很多種,這裡不作具體限定。   本申請提供防止重打包的方法中,安裝包本身包含有驗證代碼,當該安裝包被安裝時,如圖8所示,操作系統就會根據該代碼,獲取該安裝包中的安全動態庫中的驗證資訊,以及獲取該目標檔案中嵌入的數位浮水印資訊,並根據該數位浮水印資訊和該驗證資訊,驗證該安裝包是否是重打包的安裝包。採用本申請提供的防止重打包的方法,獲得的有益效果如下:   1、由於本申請中安裝包本身包含有用於驗證該安裝包是否被重打包的代碼,因此,無論對操作系統如何改造,也無法避開驗證安裝包的過程,解決了現有技術透過系統校驗安裝包自簽名來驗證安裝包是否被重打包時,由於系統有時會繞過驗證安裝自簽名的過程,導致無法有效地驗證該安裝包是否被重打包的問題。   2、由於本申請是根據數位浮水印資訊和驗證資訊,驗證該安裝包是否被重打包,因此,相比於現有技術透過計算安裝包哈希值來驗證安裝包是否被重打包的方法,本申請驗證安裝包是否被重打包的效率更高。   相應地,本申請還提供了一種防止重打包的裝置,同樣用於解決現有技術中在系統透過校驗安裝包自簽名,有時無法有效地驗證該安裝包是否被重打包的問題,以及解決現有技術中系統透過計算安裝包的哈希值來校驗安裝包是否被重打包時,有時由於安裝包佔用記憶體較大,導致驗證效率較低的問題。該裝置的具體結構如圖9所示,具體包括以下單元:   運行單元901和執行單元902,其中:   所述運行單元901,運行安裝包中的目標檔案並加載所述安裝包中的安全動態庫;   所述執行單元902,根據所述目標檔案中的代碼執行下述步驟:   獲取所述目標檔案中嵌入的數位浮水印資訊,以及所述安全動態庫中儲存的驗證資訊;   根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包。   本裝置實施例的工作流程是:首先,運行單元901運行安裝包中的目標檔案,並加載該安裝包中的安全動態庫,其次,執行單元902,根據該目標檔案中的代碼執行下述步驟:獲取該目標檔案中嵌入的數位浮水印資訊,以及該安全動態庫中儲存的驗證資訊,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包。   本裝置實施例實現防止重打包的方式有很多種,例如,在第一種實施方式中,所述目標檔案是將預設的代碼進行編譯後得到的目標檔案;所述數位浮水印資訊是在編譯後得到的目標檔案中的末尾嵌入的。   在第二種實施方式中,獲取所述目標檔案中嵌入的數位浮水印資訊,具體包括:   根據所述目標檔案的原始長度,確定所述數位浮水印資訊在所述目標檔案中的起始位址,其中,所述原始長度為嵌入所述數位浮水印資訊前所述目標檔案的長度;   根據所述起始位址,從所述目標檔案中獲取所述數位浮水印資訊。   在第三種實施方式中,根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包,具體包括:   驗證所述數位浮水印資訊與驗證資訊是否一致;   若一致,則確定所述安裝包是原始安裝包;   若不一致,則確定所述安裝包是重打包的安裝包。   在第四種實施方式中,根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包,具體包括:   當所述數位浮水印資訊為指令時,根據所述指令執行操作,獲得操作結果;   驗證所述操作結果與驗證資訊是否一致;   若一致,則確定所述安裝包是原始安裝包;   若不一致,則確定所述安裝包是重打包的安裝包。   在第五種實施方式中,根據所述數位浮水印資訊和驗證資訊,驗證所述安裝包是否是重打包的安裝包,具體包括:   當所述數位浮水印資訊為指令時,根據所述指令執行操作,獲得操作結果;   驗證所述操作結果與所述驗證資訊中的操作結果是否一致,以及驗證所述指令與所述驗證資訊中的指令是否一致;   若均一致,則確定所述安裝包是原始安裝包;   否則,則確定所述安裝包是重打包的安裝包。   應用本裝置實施例獲得的有益效果與前述方法實施例獲得的有益效果相同或類似,為避免重複,這裡不再贅述。   本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程式產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有計算機可用程式代碼的計算機可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的計算機程式產品的形式。   本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程式產品的流程圖和/或方框圖來描述的。應理解可由計算機程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程資料處理設備的處理器以產生一個機器,使得透過計算機或其他可編程資料處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。   這些計算機程式指令也可儲存在能引導計算機或其他可編程資料處理設備以特定方式工作的計算機可讀記憶體中,使得儲存在該計算機可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。   這些計算機程式指令也可裝載到計算機或其他可編程資料處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。   在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和記憶體。   記憶體可能包括計算機可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。記憶體是計算機可讀媒體的示例。   計算機可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是計算機可讀指令、資料結構、程式的模組或其他資料。計算機的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可編程唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁碟儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備訪問的資訊。按照本文中的界定,計算機可讀媒體不包括暫存電腦可讀媒體(transitory media),如調製的資料信號和載波。   還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。   本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機程式產品。因此,本申請可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有計算機可用程式代碼的計算機可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的計算機程式產品的形式。   以上所述僅為本申請的實施例而已,並不用於限制本申請。對於本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的申請專利範圍之內。
901‧‧‧運行單元
902‧‧‧執行單元
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。在附圖中:   圖1為現有技術提供的一種重打包的方法的流程示意圖;   圖2為現有技術提供的一種防止重打包的方法的流程示意圖;   圖3為本申請實施例提供的一種防止重打包的方法的流程示意圖;   圖4為本申請實施例提供的在目標檔案中嵌入數位浮水印資訊的流程示意圖;   圖5為本申請實施例提供的另一種防止重打包的方法的流程示意圖;   圖6為本申請實施例提供的查找數位浮水印資訊的方法的流程示意圖;   圖7為本申請實施例提供的再一種防止重打包的方法的流程示意圖;   圖8為本申請實施例提供的又一種防止重打包的方法的流程示意圖;   圖9為本申請實施例提供的一種防止重打包的裝置的結構示意圖。

Claims (11)

  1. 一種防止重打包的方法,其特徵在於,該方法包括:運行安裝包中的目標檔案並加載該安裝包中的安全動態庫;根據該目標檔案中的代碼執行下述步驟:獲取該目標檔案中嵌入的數位浮水印資訊,以及該安全動態庫中儲存的驗證資訊;根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,其中,該目標檔案是將預設的代碼進行編譯後得到的目標檔案;且該數位浮水印資訊是在編譯後得到的目標檔案中的末尾嵌入的。
  2. 根據請求項1所述的方法,其中,獲取該目標檔案中嵌入的數位浮水印資訊,具體包括:根據該目標檔案的原始長度,確定該數位浮水印資訊在該目標檔案中的起始位址,其中,該原始長度為嵌入該數位浮水印資訊前該目標檔案的長度;根據該起始位址,從該目標檔案中獲取該數位浮水印資訊。
  3. 根據請求項1所述的方法,其中,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體包括:驗證該數位浮水印資訊與驗證資訊是否一致;若一致,則確定該安裝包是原始安裝包;若不一致,則確定該安裝包是重打包的安裝包。
  4. 根據請求項1所述的方法,其中,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體包括:當該數位浮水印資訊為指令時,根據該指令執行操作,獲得操作結果;驗證該操作結果與驗證資訊是否一致;若一致,則確定該安裝包是原始安裝包;若不一致,則確定該安裝包是重打包的安裝包。
  5. 根據請求項1所述的方法,其中,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體包括:當該數位浮水印資訊為指令時,根據該指令執行操作,獲得操作結果;驗證該操作結果與該驗證資訊中的操作結果是否一致,以及驗證該指令與該驗證資訊中的指令是否一致;若均一致,則確定該安裝包是原始安裝包;否則,則確定該安裝包是重打包的安裝包。
  6. 根據請求項1~5中任一項所述的方法,其中,該方法應用於安卓操作系統中;該目標檔案為dex檔案;該安全動態庫為so庫。
  7. 一種防止重打包的裝置,其特徵在於,該裝置包括:運行單元和執行單元,其中:該運行單元,運行安裝包中的目標檔案並加載該安裝包中的安全動態庫;該執行單元,根據該目標檔案中的代碼執行下述步驟:獲取該目標檔案中嵌入的數位浮水印資訊,以及該安全動態庫中儲存的驗證資訊;根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,其中,該目標檔案是將預設的代碼進行編譯後得到的目標檔案;且該數位浮水印資訊是在編譯後得到的目標檔案中的末尾嵌入的。
  8. 根據請求項7所述的裝置,其中,獲取該目標檔案中嵌入的數位浮水印資訊,具體包括:根據該目標檔案的原始長度,確定該數位浮水印資訊在該目標檔案中的起始位址,其中,該原始長度為嵌入該數位浮水印資訊前該目標檔案的長度;根據該起始位址,從該目標檔案中獲取該數位浮水印資訊。
  9. 根據請求項7所述的裝置,其中,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體包括:驗證該數位浮水印資訊與驗證資訊是否一致;若一致,則確定該安裝包是原始安裝包;若不一致,則確定該安裝包是重打包的安裝包。
  10. 根據請求項7所述的裝置,其中,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體包括:當該數位浮水印資訊為指令時,根據該指令執行操作,獲得操作結果;驗證該操作結果與驗證資訊是否一致;若一致,則確定該安裝包是原始安裝包;若不一致,則確定該安裝包是重打包的安裝包。
  11. 根據請求項7所述的裝置,其中,根據該數位浮水印資訊和驗證資訊,驗證該安裝包是否是重打包的安裝包,具體包括:當該數位浮水印資訊為指令時,根據該指令執行操作,獲得操作結果;驗證該操作結果與該驗證資訊中的操作結果是否一致,以及驗證該指令與該驗證資訊中的指令是否一致;若均一致,則確定該安裝包是原始安裝包;否則,則確定該安裝包是重打包的安裝包。
TW106130944A 2016-10-11 2017-09-11 防止重打包的方法及其裝置 TWI675310B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610887188.5A CN106971098B (zh) 2016-10-11 2016-10-11 一种防重打包的方法及其装置
CN201610887188.5 2016-10-11

Publications (2)

Publication Number Publication Date
TW201814576A TW201814576A (zh) 2018-04-16
TWI675310B true TWI675310B (zh) 2019-10-21

Family

ID=59334735

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106130944A TWI675310B (zh) 2016-10-11 2017-09-11 防止重打包的方法及其裝置

Country Status (11)

Country Link
US (1) US10685117B2 (zh)
EP (1) EP3528149B1 (zh)
JP (1) JP6746156B2 (zh)
KR (1) KR102192880B1 (zh)
CN (1) CN106971098B (zh)
ES (1) ES2874781T3 (zh)
PH (1) PH12019500785A1 (zh)
PL (1) PL3528149T3 (zh)
SG (1) SG11201903264RA (zh)
TW (1) TWI675310B (zh)
WO (1) WO2018068633A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106971098B (zh) 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置
CN107256349B (zh) * 2017-06-13 2020-02-28 广州阿里巴巴文学信息技术有限公司 动态库防盗用方法、装置、电子设备及可读存储介质
KR101920597B1 (ko) * 2017-11-16 2018-11-21 숭실대학교산학협력단 동적 코드 추출 기반 자동 분석 방지 우회 및 코드 로직 해석 장치
CN108304697B (zh) * 2017-12-11 2020-05-19 深圳壹账通智能科技有限公司 检测app二次打包的方法、装置及移动终端
CN109739544B (zh) * 2018-12-25 2022-11-04 北京三快在线科技有限公司 用于生成应用安装包的方法、装置及电子设备
CN109901981A (zh) * 2019-02-28 2019-06-18 北京智游网安科技有限公司 一种截屏泄露处理方法、智能终端及存储介质
CN110704816B (zh) * 2019-09-29 2021-10-22 武汉极意网络科技有限公司 接口破解的识别方法、装置、设备及存储介质
CN113132421B (zh) * 2019-12-30 2022-11-04 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113127859B (zh) * 2019-12-30 2024-04-12 Oppo广东移动通信有限公司 待检测文件的检测方法、装置、终端及存储介质
CN113709195B (zh) * 2020-05-20 2024-05-28 广州汽车集团股份有限公司 一种车辆软件升级方法、装置及系统
CN112069468B (zh) * 2020-08-26 2023-05-30 上海上讯信息技术股份有限公司 一种页面动态水印的方法及设备
CN113641964B (zh) * 2021-10-19 2022-05-17 北京邮电大学 重打包应用检测方法、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW480439B (en) * 1998-12-17 2002-03-21 Inventec Corp Method for examining correctness of system operation
US20130232540A1 (en) * 2012-03-02 2013-09-05 Hassen Saidi Method and system for application-based policy monitoring and enforcement on a mobile device
CN104239757A (zh) * 2014-09-30 2014-12-24 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN104932902A (zh) * 2015-07-09 2015-09-23 魅族科技(中国)有限公司 一种生成apk文件的方法及终端
CN105205356A (zh) * 2015-09-17 2015-12-30 清华大学深圳研究生院 一种app应用重打包检测方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
US20060010430A1 (en) * 2001-05-04 2006-01-12 Thales Device and process for the signature, the marking and the authentication of computer programs
EP1546892B1 (en) * 2002-09-04 2017-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Protecting mobile code against malicious hosts cross references to related applications
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US8024571B2 (en) * 2006-12-22 2011-09-20 Schlumberger Technology Corporation Method of and system for watermarking application modules
US8375458B2 (en) * 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
US8950007B1 (en) * 2008-04-07 2015-02-03 Lumension Security, Inc. Policy-based whitelisting with system change management based on trust framework
MY152342A (en) * 2008-12-10 2014-09-15 Sumitomo Bakelite Co Granular epoxy resin composition for encapsulating semiconductor, semiconductor device using the same and method for producing semiconductor device
US20120317421A1 (en) * 2012-06-19 2012-12-13 Concurix Corporation Fingerprinting Executable Code
KR101498820B1 (ko) * 2013-11-06 2015-03-05 순천향대학교 산학협력단 안드로이드 환경에서의 어플리케이션 리패키징 탐지 방법
US9619665B2 (en) * 2014-07-22 2017-04-11 Cheng-Han KO Method and system for adding dynamic labels to a file and encrypting the file
KR101695639B1 (ko) * 2014-08-13 2017-01-16 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
CN105956456B (zh) * 2016-04-26 2019-02-19 南京邮电大学 一种对Android系统进行四重联合签名验证的实现方法
CN106971098B (zh) * 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW480439B (en) * 1998-12-17 2002-03-21 Inventec Corp Method for examining correctness of system operation
US20130232540A1 (en) * 2012-03-02 2013-09-05 Hassen Saidi Method and system for application-based policy monitoring and enforcement on a mobile device
CN104239757A (zh) * 2014-09-30 2014-12-24 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN104932902A (zh) * 2015-07-09 2015-09-23 魅族科技(中国)有限公司 一种生成apk文件的方法及终端
CN105205356A (zh) * 2015-09-17 2015-12-30 清华大学深圳研究生院 一种app应用重打包检测方法

Also Published As

Publication number Publication date
PL3528149T3 (pl) 2021-10-11
PH12019500785A1 (en) 2019-11-11
JP6746156B2 (ja) 2020-08-26
JP2019535087A (ja) 2019-12-05
WO2018068633A1 (zh) 2018-04-19
EP3528149B1 (en) 2021-04-07
US10685117B2 (en) 2020-06-16
SG11201903264RA (en) 2019-05-30
EP3528149A4 (en) 2019-10-16
TW201814576A (zh) 2018-04-16
ES2874781T3 (es) 2021-11-05
KR20190061075A (ko) 2019-06-04
EP3528149A1 (en) 2019-08-21
KR102192880B1 (ko) 2020-12-22
CN106971098A (zh) 2017-07-21
US20190243974A1 (en) 2019-08-08
CN106971098B (zh) 2020-06-02

Similar Documents

Publication Publication Date Title
TWI675310B (zh) 防止重打包的方法及其裝置
KR102201844B1 (ko) 서비스 처리 방법 및 장치
US9948670B2 (en) Cloud security-based file processing by generating feedback message based on signature information and file features
US9805188B2 (en) Control flow integrity system and method
US10511598B2 (en) Technologies for dynamic loading of integrity protected modules into secure enclaves
JP2018503157A (ja) アプリケーション整合性の検証を提供する方法及びデバイス
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
US20170262656A1 (en) Method and device for providing verifying application integrity
US20170262657A1 (en) Method and device for providing verifying application integrity
WO2016054880A1 (zh) 扩展apk文件应用的方法及装置
US20160239671A1 (en) Method and device for protecting an application and method and device for executing a protected application thus protected
CA2530099A1 (en) Systems and methods for validating executable file integrity using partial image hashes
JP2017538217A (ja) アプリケーション整合性の検証を提供する方法及びデバイス
JP2019502197A5 (zh)
JP7432523B2 (ja) 動的メモリ保護
WO2016095566A1 (zh) 一种可执行模块的提供、加载方法及终端
US20150026483A1 (en) Systems and Methods for Mobile Application Protection
KR101863325B1 (ko) 역공학 방지 방법 및 장치
US10929528B2 (en) Systems and methods for intrinsic runtime security
CN107463423B (zh) 依赖包工具的验证方法、存储介质、电子设备及系统
TWI682296B (zh) 映像檔打包方法及映像檔打包系統
Lee et al. Method to Modify the Hex of Android Manifest File in Android Apps for Dynamic Analysis
CN112784222A (zh) 一种安卓apk安装包防篡改校验方法