TWI695287B - 用於保護碼的方法、電腦程式產品和系統 - Google Patents

用於保護碼的方法、電腦程式產品和系統 Download PDF

Info

Publication number
TWI695287B
TWI695287B TW106121271A TW106121271A TWI695287B TW I695287 B TWI695287 B TW I695287B TW 106121271 A TW106121271 A TW 106121271A TW 106121271 A TW106121271 A TW 106121271A TW I695287 B TWI695287 B TW I695287B
Authority
TW
Taiwan
Prior art keywords
code
original
protected
file
conversion
Prior art date
Application number
TW106121271A
Other languages
English (en)
Other versions
TW201804349A (zh
Inventor
羅倫特 朵羅
艾瑞克 派瑞特
布列其 懷素爾
雅瑟 貝賴帝
Original Assignee
瑞士商納格拉威訊股份公司
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 瑞士商納格拉威訊股份公司 filed Critical 瑞士商納格拉威訊股份公司
Publication of TW201804349A publication Critical patent/TW201804349A/zh
Application granted granted Critical
Publication of TWI695287B publication Critical patent/TWI695287B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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

Abstract

提供一種用於保護碼的系統及方法。在物件至物件轉換期間進行待保護碼的擷取,並且該碼被偽二進制碼所取代。然後,被擷取的待保護碼可被加密或是混淆,並被儲存在一物件檔案的一分開的區域。可以提供一先前的原始至原始檔案轉換,以便隔離並標明待保護碼,並且注入額外的原始碼以處理後續的解密。

Description

用於保護碼的方法、電腦程式產品和系統
本揭示是和一種用於保護碼的系統和方法相關,例如採用一種便於隨選碼解密之建構程序。
軟體易於遭受外部團體的惡意攻擊,例如反向工程攻擊。有鑑於此,已發展各種技術用來保護軟體免受此類的攻擊。
此類技術的一已知示例為「隨選碼解密」。根據此技術,碼的一些元素或是「區塊(chunks)」是以加密的形式被傳輸。這些僅會在執行前被解碼且之後會被清除。這樣尤其可以減輕檢驗碼而不執行的靜態分析技術。靜態分析技術包含多種變形,並且一般而言涉及反組譯機器碼。
一般而言,隨選碼加密程序可大略地總結為包括四個步驟。第一,擷取待保護的相關二進制碼。第二,在受保護二進制碼的位置中以偽碼代替。第三,加密被擷取的二進制碼,並添加到一二進制資料區段(data section)。然後以提供隨選碼解密程序和正確的使用訊息之此種方式,最後確定最終的二進制。傳統上,這些步驟的每個步驟是在其連接程序已完成之後才實行,因而可被整合器(integrator)實行。
概觀而言,提供一種用於保護碼的系統及方法。在物件至物 件轉換期間進行待保護碼的擷取,並且該碼被偽二進制碼所取代。然後,被擷取的待保護碼可被加密或是混淆,並被儲存在一物件檔案的一分開的區域。可以提供一先前的原始至原始檔案轉換,以便隔離並標明待保護碼,並且注入額外的原始碼以處理後續的解密。
在本揭示的一些態樣中,提供一種方法,例如一種用於保護碼的方法,像是一用於保護碼的電腦實施方法。該方法包括實行一物件至物件檔案轉換。該物件至物件轉換包括識別在用於加密的一輸入物件檔案內之待保護碼,並擷取被識別的該待保護碼。該物件至物件轉換進一步包括以一偽碼取代在該輸入物件檔案內之被識別的該待保護碼,以便產生一第一輸出物件檔案;以及注入該待保護碼至一第二輸出物件檔案。在注入至該第二輸出物件檔案之前,可使用另一技術加密或混淆該待保護碼。
藉著實行此類之物件至物件轉換,可以提供一種方法,其可避免在編譯程序後續的階段實行解密的需求。例如,相較在產生最終的二進制時依賴連結階段由整合器所實行之加密方法,本揭示的方法允許碼被混淆,而不必依賴整合器和用於產生原始碼和物件碼之程序間的完整協調。在許多整合器和之前的編碼/編譯程序是獨立操作的方案中,這是一種更可靠的解決方案。藉著維持控制混淆程序接近原始碼,可以達成可靠性和安全性的改善。該偽碼可被選擇以便與真實碼相似,藉此使得更難偵測到加密程序。被識別的該待保護碼可被注入該第二輸出物件檔案的一資料區段,此行為可能進一步幫助混淆碼的真正本質。
在一些態樣中,該第一輸出物件檔案和該第二輸出物件檔案可被合併至一最終輸出物件檔案。此行為可允許任何輸入物件檔案和輸出 物件檔案間的一對一關係,使得為了因應在物件至物件轉換期間之修改而調整後續處理的需求最小化。
在一些態樣中,該方法進一步包括在該物件至物件轉換之前,實行一原始至原始轉換。該原始至原始轉換可包括在一輸入原始檔案中標明該待保護碼。該原始至原始轉換可進一步包括提供額外的碼至該輸入原始檔案,以便提供用於後續解密操作的指令。此外,該原始至原始轉換可進一步包括隔離該待保護碼。在此種方式中,該原始至原始轉換可允許用於物件至物件轉換之必要訊息被整合,而不用仔細考慮操作者動作。替代地或額外地,可提供本來的原始檔案和適當訊息。
在一些態樣中,該物件至物件轉換可進一步包括:識別在該輸入物件檔案中之再定位指示;排除該等再定位指示免於被該偽碼取代。該再定位指示可以是再定位的位址。藉著將這些再定位指示排除於該待保護碼之外,該方法不影響在連結階段期間的再定位的程序。實際上,此行為可允許該待保護碼在連結器/整合器呼叫外部函式,儘管連結器/整合器看不到該待保護碼,因為它在這階段是被加密的。在一些實施例中,儘管未排除該等再定位指示免於取代,該物件至物件轉換可包括改變一個或多個再定位指示的目標。此行為可保證解密碼的一致性。
在一些態樣中,提供一種電腦程式產品,其包括用於實行上述方法的電腦可執行指令。在一進一步態樣中,提供一種系統,其用於實行上述方法。
100‧‧‧計算裝置
102‧‧‧處理裝置
104‧‧‧主要記憶體
106‧‧‧靜態記憶體
108‧‧‧網路介面裝置
110‧‧‧視訊顯示單元
112‧‧‧輸入裝置
114‧‧‧游標控制裝置
116‧‧‧音效裝置
118‧‧‧資料儲存裝置
122‧‧‧指令集
128‧‧‧機器可讀儲存媒體
130‧‧‧匯流排
210‧‧‧盒
s51‧‧‧步驟
s52‧‧‧步驟
s53‧‧‧步驟
s54‧‧‧步驟
s55‧‧‧步驟
圖1顯示用於實施一較佳實施例的硬體基礎設施;圖2A闡明根據已知技術之一編譯程序;圖2B闡明根據較佳實施例之一編譯程序;圖3闡明在較佳實施例的編譯程序中的一原始至原始轉換;圖4闡明在較佳實施例的編譯程序中的一物件至物件轉換;圖5顯示隨選解密程序的一流程圖;圖6顯示將被排除處理以作為再定位指示的碼的區域;圖7顯示在隨選碼解密期間所施加以保護被排除區域的遮罩之產生;以及圖8闡明不影響再定位位址的隨選碼解密程序。
現在以參照附圖的方式描述一些具體實施例,其中相同的元件符號表示相同的特徵。
圖1闡明計算裝置100的一實施的一方塊圖,其中,用於引起計算裝置完成此處所討論之任何一個或多個方法的一指令集可以被執行。在另外的實施中,計算裝置可以被連接(例如連網)到在區域網路、內部網路、外部網路或網際網路中的其它機器。計算裝置可以是在一主從式網路環境中以伺服器或用戶端主機之角色,或是在一點對點(或分散式)網路環境中以點機器進行操作。計算裝置可以是個人電腦(PC)、平板電腦、機上盒(STB)、個人數位助理(PDA)、行動電話、網路設備、伺服器、網路路由器、交換器或橋接器,或者是能夠執行指明將被機器採取的動作之指令集(依序或其它)的任何機器。並且,雖然僅單一計算裝置被闡明,用 語「計算裝置」亦應被視為是包含機器(例如電腦)的任何聚集,該機器可以獨立或合作地執行一個(或多個)指令集,用以完成此處所討論之任何一個或多個方法。
示例計算裝置100包含處理裝置102、主要記憶體104(例如唯讀記憶體(ROM)、快閃記憶體、諸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的動態隨機存取記憶體(DRAM))、靜態記憶體106(例如快閃記憶體、靜態隨機存取記憶體(SRAM))、以及次要記憶體(例如資料儲存裝置118),且經由匯流排130彼此溝通。
處理裝置102代表為一個或多個通用目的處理器,諸如微處理器、中央處理單元或類似物。更精確而言,處理裝置102可以是複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、實施其它指令集的處理器,或是實施指令集組合的處理器。處理裝置102也可以是一個或多個特殊目的處理裝置,例如特定應用積體電路(ASIC)、現場可程式閘陣列(FPGA)、數位訊號處理器(DSP)、網路處理器,或是類似物。處理裝置102被組態以執行用於完成此處所討論的操作和步驟的處理邏輯(指令集122)。
計算裝置100可以進一步包含網路介面裝置108。計算裝置100也可以包含視訊顯示單元110(例如液晶顯示器(LCD)或陰極射線管(CRT))、字母與數字的輸入裝置112(例如鍵盤或觸控螢幕)、游標控制裝置114(例如滑鼠或觸控螢幕),以及音效裝置116(例如喇叭)。
資料儲存裝置118可以包含一個或多個機器可讀儲存媒體(或更精確而言,一個或多個非暫態電腦可讀儲存媒體)128、在其中儲存 一個或多個指令集122,該指令集122具體化此處所描述之任何一個或多個方法或功能。指令集122也可以在電腦系統100執行期間,完整地或至少部分地駐在主要記憶體104及/或處理裝置102中,主要記憶體104和處理裝置102也構成電腦可讀儲存媒體。
出於比較的目的,圖2A闡明已知軟體建構程序的一般步驟。此處,原始檔(source file)「.c」被編譯器編譯,以便產生物件檔(object file)「.o」。然後,物件檔被歸檔器(archiver)歸檔,以便形成函式庫「.lib」,該函式庫接下來被連結器(linker)(有時被參照為整合器)連結,以便形成最終二進制檔「.bin」。每個編譯器、歸檔器和整合器可以在例如圖1所描述之計算裝置100上實施。編譯器、歸檔器和整合器可各自在一獨立計算裝置100上實施,或者編譯器、歸檔器和整合器的任何組合可以共享實施它們的一計算裝置。例如,編譯器和歸檔器可以整合在一第一計算裝置100上,而整合器可在一第二計算裝置100上實施。在提供多個計算裝置100的場合,他們可以經由任何合適的通訊網路進行通訊。
在許多傳統的方案中,編譯器和歸檔器可以在第一實體的控制之下,而第二實體可以透過連結器/整合器聚集來自多個來源(source)的函式庫。圖2A中的盒210闡明在第一實體控制下的實體。據此,當二進制.bin檔案被產生時,多個實體已經存取過該碼,增加潛在的安全風險以及實體間的座標不協和的穩定性風險。本揭示提供減輕此類風險的建構程序。特別地,此建構程序致能隨選碼解密。此建構程序是闡明在圖2B中。
相較於圖2A,圖2B闡明二個額外的建構步驟。首先,一「s2s」原始至原始轉換是轉換一輸入原始檔案.c至一輸出原始檔案.c。其然後被編 譯器編譯,以便和圖2A的程序一致而形成一物件檔案。然後,此物件檔案用於圖2B標示為「修補」之物件至物件轉換之一個輸入物件檔案,該物件至物件轉換產生一個或多個輸出物件檔案。
原始至原始轉換可參照圖3來加以了解,其中圖3闡明此程序的示例。特別地,原始至原始轉換用標識(marker)隔離並標明該待保護碼。操作「fibWrapped」識別此碼。此外,在轉換期間併入額外的碼,以便輔助處理解密操作。在一些示例中,替代的加密程序可以被使用來混淆待保護的碼,在此情況中,解密操作將被一合適的替代形式所取代。
圖4闡明物件至物件轉換的一示例。此處輸入物件檔案fib.s2s.o含有標識「fibWrapped」和「fibWrappedEnd」,該些標識允許物件至物件轉換識別待保護的碼。該碼被擷取並利用在物件檔案fib.s2s.o中的偽碼來加以取代。該偽碼可被選擇以與真實碼相似,並且可以是例如垃圾碼、真實碼或看似有意義的碼。在其它的示例中,偽碼可以是隨機碼。經修改之物件檔案fib.s2s.o可以被視為第一輸出物件檔案。
此外,物件至物件轉換可以產生一中間原始檔案fib.shellcode.c。該中間原始檔案被使用為利用一加密操作來加密待保護的碼,該加密操作是匹配於在原始至原始轉換期間所注入的解密操作以及一給定祕密金鑰。該祕密金鑰可以被事先定義,或是被定義為使得在物件至物件轉換期間或是其它時刻可被推導。該加密操作可以被一混淆的替代形式(其可以是較弱的)所取代,用以最小化負荷和潛在的性能損失。
此中間原始檔案在物件至物件轉換期間被編譯,以便產生參照為圖4中「fib.shellcode.o」之一第二輸出物件檔案。該第二物件檔案在資 料區段攜載被加密或其它混淆過的待保護碼。
雖未在所有的實施例中這樣要求,但第一和第二物件檔案之後可以被合併,以便形成單一且合併過的輸出物件檔案。在這樣的方式中,可以達成物件檔案間的一對一關係,該一對一關係是被使用為該物件至物件轉換的輸入,以及此物件至物件轉換程序的輸出。在一些示例中,可以發展COFF格式解析器(parser),並且此程序可以涉及讀取全部的二個物件檔案,依據微軟COFF規格來合併他們,並把合併過的檔案寫回磁碟中。在其它的示例中,工具鏈可以提供工具以實行此合併。
然後,藉著圖2B、圖3、圖4的程序所產生的物件檔案可被傳送至用於連結的整合器/連結器。該整合器不需要採取進一步之步驟來確保隨選解密是可行的,也不需要實行任何事後連結(post link)程序。更進一步,因為被傳遞到整合器的碼已被加密,在此階段的函式庫的靜態分析是被禁止的,增加碼的安全性。
圖5顯示當軟體運行時,之後實行之隨選解密程序的一流程圖。首先,在步驟s51獲得最終的.bin二進制封套資料(wrapper),並且相關的函式碼(function code)(即已被保護的碼)可被取回。其在步驟s52被解密,並然後在步驟s53修補至它的原始位置,取代已在該處的偽碼。程式然後在步驟s54運行。之後在步驟s55中,函式碼則被反修補,再一次混淆該碼免於靜態分析。
在步驟s53修補期間,某些區域(area)可以被保留,特別是加密已經完成後被連結器所修改的區域。一示例程序將參照圖6至8在下文中更仔細地描述。在連結步驟,連結器修改該碼,更新CALL指令至 相關目標函式的位移。因為此行為不能在被加密碼中事先計算,在下文及參照圖6至8會描述此方法,這些是被預期的,此類區域在加密前被識別並然後被保留,使得修補後結果是一恰當且正確的碼。一替代的方法可以涉及一混淆程序OBF和它的對稱之UNOBF,其會和連結器(linker)工作,使得LINK(area)=UNOBF(LINK(OBF(area));此替代的方法可以避免保留區域的要求。
如上所述,一些較佳實施例的細節會在圖6至8中闡明。此處,再定位程序可以要求未改變的(unaltered)碼。此類再定位程序可以發生在連結程序期間以及程式載入時。為了避免隨著此程序的干擾,在物件至物件轉換期間,用於再定位指示的區域可以被排除而不被偽碼取代。特別是,用於再定位指示的區域可以是再定位命令做為目標的區域。
圖6闡明一示例。在輸入物件檔案中原來的「明(plain)」碼,包含二個再定位操作目標的強調區域。修改偽碼,使得這些區域不會被取代,並且這些區域中的值維持固定。
然後可以產生遮罩,以保證在再定位期間提供到該區域的資料,不會在隨選解密程序運行的期間遭到覆寫。藉著比較待保護(已解密)碼和在輸出物件檔案中的相等區域,該遮罩可以被產生。在圖7中闡明此行為;一個XOR操作識別何處的二個碼集合是相同的,因此指出何處沒有取代。
如圖8中所闡明,在連結和載入程序期間發生再定位。藉著禁止修補已被保護的碼進入此種再定位的預定區域,該遮罩接著被使用來保證在隨選解密程序期間,這些再定位維持有效的。
電腦程式可以實施以上所描述的各種方法。電腦程式可以包含電腦碼,該電腦碼被安排以便指揮電腦完成以上所描述的各種方法的一個或多個函式。用於完成此類方法的該電腦程式或該碼可以被提供到一設備,例如電腦,一個或多個電腦可讀媒體上,或是更一般地,一電腦程式產品。電腦可讀媒體可以是暫態或非暫態。一個或多個電腦可讀媒體可以例如是一電學、磁學、光學、電磁學、紅外線或半導體系統,或是一用於資料傳輸(例如經網際網路下載該碼)的傳播媒體。替代地,該一個或多個電腦可讀媒體可以採取一個或多個實體電腦可讀媒體,例如半導體或固態記憶體、磁帶、可移除式電腦磁碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、剛性磁碟,以及光碟,例如CD-ROM、CD-R/W或DVD。
在一實施中,描述於此(例如關於圖1的控制單元110)的模組、元件或其它特徵可被實施為離散元件,或是被整合在硬體元件的功能中,該硬體元件例如是ASICS、FPGA、DSP或類似裝置,做為個人化伺服器的局部。
一「硬體元件」可以是能夠完成某些操作之有形的(例如非暫態)實體元件(例如一個或多個處理器的集合),並可以被組態或安排在某種實體方式中。一硬體元件可以包含專用的電路系統或邏輯,其永久地被組態成完成某種操作。一硬體元件可以是或包含一特殊目的處理器,例如現場可程式閘陣列(FPGA)或ASIC。一硬體元件可以也包含可程式化邏輯或電路系統,其被軟體暫時地被組態以完成某種操作。
據此,用語「硬體元件」應被了解為包圍有形的實體,其可以被實體地建構、永久地被組態(例如硬體)或暫時地被組態(例如可程 式化),以便以某種方式操作,或是完成描述至此的某些操作。
此外,模組和元件可被實施為在硬體裝置中的韌體或是功能性電路系統。更進一步地,模組和元件可被實施為任何硬體裝置和軟體裝置的組合,或只在軟體之中,例如儲存或具體化在機器可讀媒體或傳播媒體中的碼。
除非另外明確地提及,從以下討論中可以明顯看出,在整個說明書中,使用諸如「接收」、「確定」、「比較」、「致能」、「維持」、「識別」、「取代」等或類似用語,是指電腦系統或類似的電子計算裝置的動作和程序,其操縱和轉換代表為電腦系統的暫存器和記憶體內的實體(電子的)數量之資料,成為其它代表為電腦系統記憶體或暫存器或其它此類信息儲存、傳輸或顯示設備內的實體數量之資料。
應當理解,上述描述旨在是說明性的而不是限制性的。在閱讀和理解上述描述之後,許多其它實施方式對於本領域技術人員是顯而易見的。雖然已經參考具體示例實施來描述了本揭示,但是將認同到本揭示不限於所描述的實施,而是可以在所附申請專利範圍的精神和範圍內進行修改和更改來實踐。據此,說明書和附圖被認為是說明性的而不是限制性的。因此,本揭示的範圍應參照所附申請專利範圍以及這些申請專利範圍的等效物的全部範圍來確定。

Claims (15)

  1. 一種用於保護碼的方法,包括實行一物件至物件檔案轉換,該物件至物件轉換包括:識別在用於加密的一輸入物件檔案內之待保護碼;擷取被識別的該待保護碼;以一偽碼取代在該輸入物件檔案內之被識別的該待保護碼,以便產生一第一輸出物件檔案;以及注入該待保護碼至一第二輸出物件檔案。
  2. 根據申請專利範圍第1項的方法,進一步包括合併該第一輸出物件檔案和該第二輸出物件檔案至一最終物件檔案。
  3. 根據申請專利範圍第1項或第2項的方法,進一步包括在該物件至物件轉換之前,實行一原始至原始轉換,該原始至原始轉換包括:在一輸入原始檔案中標明該待保護碼;以及提供額外的碼至該輸入原始檔案,以便提供用於後續解密操作的指令。
  4. 根據申請專利範圍第3項的方法,其中該原始至原始轉換進一步包括隔離該待保護碼。
  5. 根據申請專利範圍第1項或第2項的方法,其中該物件至物件轉換進一步包括:識別在該輸入物件檔案中之再定位指示;排除該等再定位指示免於被該偽碼取代。
  6. 根據申請專利範圍第1項或第2項的方法,其中該偽碼被選擇以便與真實碼相似。
  7. 根據申請專利範圍第1項或第2項的方法,其中該物件至物件轉換進一步包括加密該待保護碼。
  8. 一種電腦程式產品,包括用於實行申請專利範圍第1項至第7項中任一項之方法的電腦可執行指令。
  9. 一個用於保護碼的系統,該系統包括一處理器,其被配置以實行一物件至物件檔案轉換,該物件至物件轉換包括:識別在用於加密的一輸入物件檔案內之待保護碼;擷取被識別的該待保護碼;以一偽碼取代在該輸入物件檔案內之被識別的該待保護碼,以便產生一第一輸出物件檔案;以及注入該待保護碼至一第二輸出物件檔案。
  10. 根據申請專利範圍第9項的系統,其中該處理器進一步被配置以合併該第一輸出物件檔案和該第二輸出物件檔案至一最終物件檔案。
  11. 根據申請專利範圍第9項或第10項的系統,其中該處理器進一步被配置以在該物件至物件轉換之前,實行一原始至原始轉換,該原始至原始轉換包括:在一輸入原始檔案中標明該待保護碼;以及提供額外的碼至該輸入原始檔案,以便提供用於後續解密操作的指令。
  12. 根據申請專利範圍第11項的系統,其中該原始至原始轉換進一步包括隔離該待保護碼。
  13. 根據申請專利範圍第9項或第10項的系統,其中該物件至物件轉換進一步包括: 識別在該輸入物件檔案中之再定位指示;排除該等再定位指示免於被該偽碼取代。
  14. 根據申請專利範圍第9項或第10項的系統,其中該偽碼被選擇以便與真實碼相似。
  15. 根據申請專利範圍第9項或第10項的系統,其中該物件至物件轉換進一步包括加密該待保護碼。
TW106121271A 2016-06-29 2017-06-26 用於保護碼的方法、電腦程式產品和系統 TWI695287B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16305797.9A EP3264307A1 (en) 2016-06-29 2016-06-29 On demand code decryption
EP16305797.9 2016-06-29
??16305797.9 2016-06-29

Publications (2)

Publication Number Publication Date
TW201804349A TW201804349A (zh) 2018-02-01
TWI695287B true TWI695287B (zh) 2020-06-01

Family

ID=56896482

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106121271A TWI695287B (zh) 2016-06-29 2017-06-26 用於保護碼的方法、電腦程式產品和系統

Country Status (5)

Country Link
US (2) US11336448B2 (zh)
EP (2) EP3264307A1 (zh)
CN (1) CN109478212B (zh)
TW (1) TWI695287B (zh)
WO (1) WO2018002258A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101688814B1 (ko) * 2016-07-11 2016-12-22 (주)케이사인 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
CN110147655A (zh) * 2019-03-28 2019-08-20 江苏通付盾信息安全技术有限公司 应用程序的安全防护系统及方法
CN113268736A (zh) * 2021-06-24 2021-08-17 深圳平安智汇企业信息管理有限公司 一种信息处理方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200739383A (en) * 2005-11-28 2007-10-16 Ibm System for preventing unauthorized acquisition of information, and method thereof
CN101288083A (zh) * 2005-10-17 2008-10-15 Nxp股份有限公司 程序可执行映像加密
US20120260102A1 (en) * 2011-04-08 2012-10-11 Apple Inc. System and method for executing an encrypted binary from a memory pool
US20150363580A1 (en) * 2014-06-17 2015-12-17 Apple Inc. Protecting software through a fake cryptographic layer
US20160092871A1 (en) * 2014-09-29 2016-03-31 James Gordon Methods and systems for asset obfuscation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463538B1 (en) * 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
JP2003280755A (ja) * 2002-03-25 2003-10-02 Nec Corp 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム
US7383583B2 (en) * 2004-03-05 2008-06-03 Microsoft Corporation Static and run-time anti-disassembly and anti-debugging
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
WO2016123237A1 (en) * 2015-01-27 2016-08-04 Arris Enterprises, Inc. Obfuscation for protection of streaming media and other data flows
EP3057019A1 (en) * 2015-02-13 2016-08-17 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected
EP3206148A1 (en) * 2016-02-12 2017-08-16 ABB Schweiz AG Secure code optimization method and system
US20170357815A1 (en) * 2016-06-10 2017-12-14 Lior Malka Code obfuscation and unique instances

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101288083A (zh) * 2005-10-17 2008-10-15 Nxp股份有限公司 程序可执行映像加密
TW200739383A (en) * 2005-11-28 2007-10-16 Ibm System for preventing unauthorized acquisition of information, and method thereof
US20120260102A1 (en) * 2011-04-08 2012-10-11 Apple Inc. System and method for executing an encrypted binary from a memory pool
US20150363580A1 (en) * 2014-06-17 2015-12-17 Apple Inc. Protecting software through a fake cryptographic layer
US20160092871A1 (en) * 2014-09-29 2016-03-31 James Gordon Methods and systems for asset obfuscation

Also Published As

Publication number Publication date
TW201804349A (zh) 2018-02-01
US11336448B2 (en) 2022-05-17
EP3479275A1 (en) 2019-05-08
CN109478212A (zh) 2019-03-15
WO2018002258A1 (en) 2018-01-04
CN109478212B (zh) 2023-09-15
US20190158286A1 (en) 2019-05-23
EP3264307A1 (en) 2018-01-03
US20220360442A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
Ma et al. Cdrep: Automatic repair of cryptographic misuses in android applications
CN106126981B (zh) 基于虚拟函数表替换的软件安全防护方法
US11244075B2 (en) Integrity of on demand code decryption
US20160203087A1 (en) Method for providing security for common intermediate language-based program
US20220360442A1 (en) On demand code decryption
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN104408337A (zh) 一种apk文件防逆向的加固方法
US20120144208A1 (en) Indexed table based code encrypting/decrypting device and method thereof
CN105022936A (zh) 一种类class文件加密解密方法和装置
EP3126973A1 (en) Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
US9116765B2 (en) System and method for obfuscating data using instructions as a source of pseudorandom values
CN104318135A (zh) 一种基于可信执行环境的Java代码安全动态载入方法
JPWO2014147748A1 (ja) コード処理装置およびプログラム
CN111240654A (zh) 一种Python代码加固保护的方法及其系统
GB2576755A (en) System and method for providing protected data storage in a data memory
US10013517B1 (en) High level programming language core protection for high level synthesis
EP3097655A1 (en) Method of protecting secret data when used in a cryptographic algorithm
CN113221077A (zh) 基于spring容器的class文件加密方法及设备
Albartus et al. On the Malicious Potential of Xilinx’Internal Configuration Access Port (ICAP)
US9965621B2 (en) Program protection device
KR102557007B1 (ko) 바이너리 파일 재구성 방법 및 그 장치
KR102177920B1 (ko) 원본코드 패킹장치 및 원본코드 패킹방법
KR102529826B1 (ko) 난독화 장치 및 방법
Dalla Preda et al. Exploiting number theory for dynamic software watermarking
CN117131500A (zh) 一种Linux ELF恶意样本变形免查杀方法