EP1850260A1 - Procédé et système mis en oeuvre par ordinateur permettant de lier du code exécutable de gestion de droits numériques avec une application logicielle - Google Patents
Procédé et système mis en oeuvre par ordinateur permettant de lier du code exécutable de gestion de droits numériques avec une application logicielle Download PDFInfo
- Publication number
- EP1850260A1 EP1850260A1 EP06380096A EP06380096A EP1850260A1 EP 1850260 A1 EP1850260 A1 EP 1850260A1 EP 06380096 A EP06380096 A EP 06380096A EP 06380096 A EP06380096 A EP 06380096A EP 1850260 A1 EP1850260 A1 EP 1850260A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- host
- stub
- code
- host code
- block
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000006870 function Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 13
- 230000003287 optical effect Effects 0.000 claims description 5
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 230000001131 transforming effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 29
- 238000007726 management method Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001653634 Russula vesca Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Definitions
- This disclosure relates to digital rights management methods and systems. More particularly, the present disclosure relates to binding digital rights management executable code to a software application.
- Wrapping consists of adding a security and verification layer or a digital rights management layer (wrapper code) on top of an unprotected executable (host software or wrapped code henceforward) that typically verifies its associated business rules.
- Business rules typically include verification that the protected software has been purchased or, in the case of try and buy offerings, verification that the software is still within the trial period.
- Other types of digital rights management technologies can similarly be used.
- the most obvious benefit of performing wrapping at the executable level is that the software developer does not need to worry about security when designing or implementing his or her software as wrapping does not require any source-code modifications. This results in a faster time to market.
- the wrapper code verifies that a set of conditions are met when the protected executable first starts and then allows it to run normally if everything is as expected. For example, in a try-before-you-buy scenario, the wrapping code might first check the current date. If the current date is greater than the trial period's end, the software will display an expiration screen. Conversely, if the software is allowed to run, the wrapped code will be unencrypted and executed. At the moment when the host software is unencrypted, the software is vulnerable.
- Figure 1 depicts the usual flow for wrapped software.
- FIGS 2A and 2B illustrate an embodiment of the improved wrapping process.
- FIGS 3A and 3B illustrate an embodiment of the improved wrapping process where the host code block is retained.
- Figures 4A and 4B illustrate an embodiment of the improved wrapping process where a security block is provided.
- Figures 5A and 5B illustrate an embodiment of the improved wrapping process where the stub code is transformed.
- FIGS. 6-9 are flow diagrams illustrating the processing steps in various embodiments.
- Figures 10a and 10b are block diagrams of a computing system on which an embodiment may operate and in which embodiments may reside.
- a computer-implemented method and system for binding digital rights management executable code to a software application are disclosed.
- numerous specific details are set forth. However, it is understood that embodiments may be practiced without these specific details. In other instances, well-known processes, structures and techniques have not been shown in detail in order not to obscure the clarity of this description.
- Various embodiments include a mechanism to bind digital rights management executable code to an application (host software) without requiring code changes to the application. Some of the application blocks are copied to the code section where the digital rights management code resides, making removal of the digital rights management code more difficult to automate.
- a code section e.g. a host code section or a stub code section simply refers to a contiguous block of code and does not mean to imply the use of particular data or code structures provided or defined by a particular software or operating system developer.
- Various embodiments strive to improve the binding between the host executable and the stub code while maintaining the benefit of not requiring modifications of the host at the source-code level.
- Block 110 represents a software component, including an encrypted executable code portion 112 and a wrapping code portion 114.
- Executable code 112 can be host application software typically developed by a third party software developer and/or distributor.
- Wrapping code 114 comprises security or validation software, or software for enforcing digital rights management policies in relation to executable code 112.
- Software component 110 is typically made available for purchase or license by end-users through various distribution means such as network downloads or software available on computer readable media. Once an end-user obtains software component 110, the user can activate the software using conventional means. Upon activation, execution of a software component 110 begins at a location within wrapping code 114 as shown by arrow 140 in Figure 1.
- Wrapping code 114 can execute various business rules and/or digital rights management rules, such as try-before-you-buy policies. For example, based upon a particular set of rules and associated conditions, wrapping code 114 may determine that a particular user may be allowed to access and use executable code 112 as purchased software or trial software. In this case, path 150 is taken as shown in figure 1 to a different portion of wrapping code 124. The different portion of wrapping code 124 decrypts executable code 112 to produce unencrypted executable code 122. Wrapping code 124 then jumps to the unencrypted executable code 122 as shown by path 152 and the user is then able to use host application software 122.
- wrapping code 124 then jumps to the unencrypted executable code 122 as shown by path 152 and the user is then able to use host application software 122.
- wrapping code 114 determines that the user is not allowed to access executable code 112
- path 154 is taken to another portion of wrapping code 134, where wrapping code 134 halts execution and shows the user an informational message indicating that access to executable code 112 is not allowed.
- wrappers can be used to protect a related executable code component.
- the improved wrapping process consists of identifying blocks within the host code that can be moved across the boundary between the executable code and the wrapper. This process involves picking a block of code from the stub whose size is equal or less than the host block, copying the host block to the memory section of the stub, adjusting inbound and outbound memory references to and from the host block to other blocks or locations within the host, copying the stub block to the memory section of the host, and adjusting inbound and outbound memory references to and from the host block to other blocks or locations within the stub.
- the identification of host blocks can be done using conventional code disassemblers as well known to those of ordinary skill in the art.
- code disassemblers There are commercial programs such as IDA Pro (www.datarescue.com) that provide tools for the disassembling of executable code for multiple processors. These conventional code disassembly techniques can be automated using various methods.
- Figure 2A illustrates an example of one host executable 250 in which a host block 252 has been identified at offset 0x40A4C7.
- Block 252 of the host code contains one outbound reference 254 (a call to location 0x40A4D0) and two inbound references 256 and 258 (from locations 0x4080A0 and 0x40D012, respectively).
- Figure 2B shows the final executable 260 produced as a result of various embodiments.
- host block 252 has been moved to the stub code section 261 at location 262 and the inbound and outbound references have been corrected accordingly.
- outbound reference 254 has been re-routed as outbound reference 264.
- Inbound reference 256 has been re-routed as inbound reference 266.
- Inbound reference 258 has been re-routed as inbound reference 268.
- a flow diagram illustrates the processing steps performed in one embodiment.
- a host code block in the host code section is identified.
- a copy of the host code block is written to a stub code block in the stub code section.
- at least one reference of the host code block is re-routed to be a reference of the stub code block. In various embodiments, outbound and inbound references are corrected in the manner described above.
- the improved wrapping process consists of identifying blocks within the host code that can be moved across the boundary between the executable code and the wrapper. This process involves copying the host block to the memory section of the stub and adjusting inbound and outbound memory references to and from the host block to other blocks or locations within the host.
- Figure 3A illustrates an example of one host executable 350 in which a host block 352 has been identified at offset 0x40A4C7.
- Block 352 the host code contains one outbound reference 354 (a call to location 0x40A4D0) and two inbound references 356 and 358 (at locations 0x4080A0 and 0x40D012, respectively).
- Figure 3B shows the final executable 360 produced as a result of various embodiments. In executable 360, a copy of host block 352 has been moved to the stub code section 361 at location 362 and the inbound and outbound references have been corrected accordingly.
- outbound reference 354 has been re-routed as outbound reference 364.
- Inbound reference 356 has been re-routed as inbound reference 366.
- Inbound reference 358 has been re-routed as inbound reference 368.
- the original copy of the host block 352 has been left in the original location within the host code, so the unknown reference 359 to location 0x40A4C7 continues to render consistent results as the original copy of the host block 352 remains at location 0x40A4C7.
- a flow diagram illustrates the processing steps performed in one embodiment.
- a host code block in the host code section is identified.
- a copy of the host code block is written to a stub code block in the stub code section.
- at least one reference of the host code block is re-routed to be a reference of the stub code block. In various embodiments, outbound and inbound references are corrected in the manner described above.
- at least one reference of the host code block is retained to remain a reference of the host code block.
- another embodiment consists of identifying blocks within the host code that can be moved across the boundary between the executable code and the wrapper. This process involves, copying an identified host block to the memory section of the stub, adjusting outbound memory references from the host block to other blocks or locations within the host, and pointing the inbound blocks to a stub routine that performs security checks, such as CRC verifications, debugger detections, optical disc signature verifications (e.g. U.S. Patent Nos.
- Figure 4A illustrates an example of one host executable 450 in which a host block 452 has been identified at offset 0x40A4C7.
- Block 452 of the host code contains one outbound reference 454 (a call to location 0x40A4D0) and two inbound references 456 and 458 (at locations 0x4080A0 and 0x40D012, respectively).
- Figure 4B shows the final executable 460 produced as a result of various embodiments.
- host block 452 has been moved to the stub code section 461 at location 462 and outbound references have been corrected accordingly.
- outbound reference 454 has been re-routed as outbound reference 464.
- the inbound references 456 and 458 to host block 452 have been re-routed to a stub routine 463 contained within the stub code section 461 and located at offset 0x490010 as shown in Figure 4B as location 463.
- stub routine 463 can be any of a variety of security, authorization, verification, digital rights management, access control, and/or tamper-proofing routines that can be executed prior to or after enabling access to the host code.
- Inbound reference 456 has been re-routed to stub routine 463 as inbound reference 466.
- Inbound reference 458 has been re-routed to stub routine 463 as inbound reference 468.
- stub routine 463 When stub routine 463 has completed execution, processing control is transferred back from stub routine 463 to the copy of host block 462 at location 0x481A25 on path 469. At this point, the stub code section 461 has completed a desired level of security and/or access checking by virtue of the execution of stub routine 463.
- a flow diagram illustrates the processing steps performed in one embodiment.
- a host code block in the host code section is identified.
- a copy of the host code block is written to a stub code block in the stub code section.
- a stub routine is provided in the stub code section.
- the stub routine can be any of the security, authorization, verification, digital rights management, access control, and/or tamper-proofing routines described above.
- at least one reference of the host code block is re-routed to be a reference of the stub routine.
- at least one reference of the stub routine is re-routed to be a reference of the stub code block. In various embodiments, outbound and inbound references are corrected in the manner described above.
- One potential attack that an attacker could use to determine if a given function in the stub code section is actually a function copied from the host code would be to find all memory references from the host to the stub section and determine if the corresponding memory in the stub section can be found in the host code. If this copy of the host code is found in the stub code, the attacker could replace the pointer to the stub code with the location of the corresponding pointer in the host code. This would effectively sever the wrapper code from the host code.
- another embodiment transforms the host function that is copied from the host code to the stub code by transforming the code to a functionally equivalent but not readily discernable form.
- code transformation is obfuscating the host function code at the assembly language level.
- U.S. Patent No. 6,591,415 describes how to obfuscate functions at the assembly code level. It will be apparent to those of ordinary skill in the art that other forms of code transformation could similarly be used.
- Figure 5A illustrates an example of one host executable 550 in which a host block 552 has been identified at offset 0x40A4C7.
- Block 552 of the host code contains one outbound reference 554 (a call to location 0x40A4D0) and two inbound references 556 and 558 (at locations 0x4080A0 and 0x40D012, respectively).
- Figure 5B shows the final executable 560 produced as a result of various embodiments.
- host block 552 has been moved to the stub code section 561 at location 562 and outbound references have been corrected accordingly.
- outbound reference 554 has been re-routed as outbound reference 564.
- the inbound references 556 and 558 to host block 552 have been re-routed to a stub routine 563 contained within the stub code section 561 and located at offset 0x490010 as shown in Figure 5B as location 563.
- stub routine 563 can be any of a variety of security, authorization, verification, digital rights management, access control, and/or tamper-proofing routines that can be executed prior to or after enabling access to the host code.
- Inbound reference 556 has been re-routed to stub routine 563 as inbound reference 566.
- Inbound reference 558 has been re-routed to stub routine 563 as inbound reference 568.
- stub routine 563 When stub routine 563 has completed execution, processing control is transferred back from stub routine 563 to the copy of host block 562 at location 0x481A25 on path 569. At this point, the stub code section 561 has completed a desired level of security and/or access checking by virtue of the execution of stub routine 563.
- the copy of host block 552 has been code transformed (e.g. obfuscated) using conventional techniques and the transformed code has been moved to the stub code section 561 at location 562.
- the outbound references have been corrected accordingly. As described above, the inbound references have been re-directed to the stub routine 563 contained within the stub code section 561.
- the transformed host block 562 is difficult for potential attackers to find and detach or disable from the host code.
- a flow diagram illustrates the processing steps performed in one embodiment.
- a host code block in the host code section is identified.
- a copy of the host code block is written to a stub code block in the stub code section.
- a stub routine is provided in the stub code section.
- the stub routine can be any of the security, authorization, verification, digital rights management, access control, and/or tamper-proofing routines described above.
- at least one reference of the host code block is re-routed to be a reference of the stub routine.
- At processing block 920 at least one reference of the stub routine is re-routed to be a reference of the stub code block. In various embodiments, outbound and inbound references are corrected in the manner described above.
- the stub code block is transformed (e.g. obfuscated).
- Performing security checks can take a few milliseconds to be executed.
- host functions are divided into two categories: 1) functions that are not performance sensitive and thus may contain security checks, and 2) functions that are performance sensitive and thus should not contain security checks. There are multiple methods of categorizing the host functions.
- performance-sensitive functions can be identified by having a pre-defined list of known performance-sensitive functions that a disassembler can readily identify.
- Run-time functions such as felose, malloc , etc. that are statically linked to the host executable (and thus form the host executable) can be detected by commercial tools such as IDA Pro FLIRT.
- performance-sensitive functions can be identified by profiling the host executable and collecting information about function execution.
- performance-sensitive functions can be determined interactively prompting the user at wrapping time.
- the improved wrapping process consists of identifying blocks within the host code that can be moved across the boundary between the executable code and the wrapper. This process involves copying the host block to the memory section of the stub, adjusting outbound memory references from the host block to other blocks or locations within the host, and pointing the inbound blocks to a stub routine that performs security responses based on previously executed security checks. Such security responses may include showing messages to the end-user, shutting down the application, modifying registers or function return values, or any action that modifies the expected application behavior.
- FIGS. 10a and 10b show an example of a computer system 200 illustrating an exemplary client or server computer system in which the features of an example embodiment may be implemented.
- Computer system 200 is comprised of a bus or other communications means 214 and 216 for communicating information, and a processing means such as processor 220 coupled with bus 214 for processing information.
- Computer system 200 further comprises a random access memory (RAM) or other dynamic storage device 222 (commonly referred to as main memory), coupled to bus 214 for storing information and instructions to be executed by processor 220.
- Main memory 222 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 220.
- Computer system 200 also comprises a read only memory (ROM) and /or other static storage device 224 coupled to bus 214 for storing static information and instructions for processor 220.
- ROM read only memory
- An optional data storage device 228 such as a magnetic disk or optical disk and its corresponding drive may also be coupled to computer system 200 for storing information and instructions.
- Computer system 200 can also be coupled via bus 216 to a display device 204, such as a cathode ray tube (CRT) or a liquid crystal display (LCD), for displaying information to a computer user. For example, image, textual, video, or graphical depictions of information may be presented to the user on display device 204.
- a display device 204 such as a cathode ray tube (CRT) or a liquid crystal display (LCD), for displaying information to a computer user. For example, image, textual, video, or graphical depictions of information may be presented to the user on display device 204.
- an alphanumeric input device 208 is coupled to bus 216 for communicating information and/or command selections to processor 220.
- cursor control device 206 is Another type of user input device, such as a conventional mouse, trackball, or other type of
- a communication device 226 may also be coupled to bus 216 for accessing remote computers or servers, such as a web server, or other servers via the Internet, for example.
- the communication device 226 may include a modem, a network interface card, or other well-known interface devices, such as those used for interfacing with Ethernet, Token-ring, wireless, or other types of networks.
- the computer system 200 may be coupled to a number of servers via a conventional network infrastructure.
- the system of an example embodiment includes software, information processing hardware, and various processing steps, as described above.
- the features and process steps of example embodiments may be embodied in machine or computer executable instructions.
- the instructions can be used to cause a general purpose or special purpose processor, which is programmed with the instructions to perform the steps of an example embodiment.
- the features or steps may be performed by specific hardware components that contain hard-wired logic for performing the steps, or by any combination of programmed computer components and custom hardware components. While embodiments are described with reference to the Internet, the method and apparatus described herein is equally applicable to other network infrastructures or other data communications systems.
- a software program can be launched from a computer-readable medium in a computer-based system to execute the functions defined in the software program described above.
- One of ordinary skill in the art will further understand the various programming languages that may be employed to create one or more software programs designed to implement and perform the methods disclosed herein.
- the programs may be structured in an object-orientated format using an object-oriented language such as Java, Smalltalk, or C++.
- the programs can be structured in a procedure-orientated format using a procedural language, such as assembly or C.
- the software components may communicate using any of a number of mechanisms well known to those of ordinary skill in the art, such as application program interfaces or inter-process communication techniques, including remote procedure calls.
- application program interfaces or inter-process communication techniques, including remote procedure calls.
- remote procedure calls The teachings of various embodiments are not limited to any particular programming language or environment, including HTML and XML.
- Figures 10a and 10b illustrate block diagrams of an article of manufacture according to various embodiments, such as a computer 200, a memory system 222, 224, and 228, a magnetic or optical disk 212, some other storage device 228, and/or any type of electronic device or system.
- the article 200 may include a computer 202 (having one or more processors) coupled to a computer-readable medium 212, and/or a storage device 228 (e.g., fixed and/or removable storage media, including tangible memory having electrical, optical, or electromagnetic conductors) or a carrier wave through communication device 226, having associated information (e.g., computer program instructions and/or data), which when executed by the computer 202, causes the computer 202 to perform the methods described herein.
- a computer 202 having one or more processors
- a storage device 228 e.g., fixed and/or removable storage media, including tangible memory having electrical, optical, or electromagnetic conductors
- a carrier wave e.g., fixed and/or removable storage media, including tangible memory having electrical, optical, or electromagnetic conductors
- associated information e.g., computer program instructions and/or data
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06380096A EP1850260A1 (fr) | 2006-04-26 | 2006-04-26 | Procédé et système mis en oeuvre par ordinateur permettant de lier du code exécutable de gestion de droits numériques avec une application logicielle |
US11/598,318 US8516447B2 (en) | 2006-04-26 | 2006-11-13 | Computer-implemented method and system for binding digital rights management executable code to a software application |
US11/699,678 US8458673B2 (en) | 2006-04-26 | 2007-01-29 | Computer-implemented method and system for binding digital rights management executable code to a software application |
PCT/US2007/010102 WO2007127287A2 (fr) | 2006-04-26 | 2007-04-24 | Association de codes executables a une application logicielle |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06380096A EP1850260A1 (fr) | 2006-04-26 | 2006-04-26 | Procédé et système mis en oeuvre par ordinateur permettant de lier du code exécutable de gestion de droits numériques avec une application logicielle |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1850260A1 true EP1850260A1 (fr) | 2007-10-31 |
Family
ID=37672336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP06380096A Ceased EP1850260A1 (fr) | 2006-04-26 | 2006-04-26 | Procédé et système mis en oeuvre par ordinateur permettant de lier du code exécutable de gestion de droits numériques avec une application logicielle |
Country Status (2)
Country | Link |
---|---|
US (1) | US8516447B2 (fr) |
EP (1) | EP1850260A1 (fr) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719586B1 (en) * | 2011-03-09 | 2014-05-06 | Amazon Technologies, Inc. | Digital rights management for applications |
US20130326479A1 (en) * | 2012-06-01 | 2013-12-05 | Qnx Software Systems Limited | System and method for tracking compliance information for a build-system product |
US20150169321A1 (en) * | 2012-06-01 | 2015-06-18 | 2236008 Ontario Inc. | System And Method For Generating Compliance Information For A Build-System Product |
US9336370B2 (en) * | 2012-12-06 | 2016-05-10 | Apple Inc. | Method and apparatus for dynamic obfuscation of static data |
US8725645B1 (en) | 2013-01-04 | 2014-05-13 | Cetrus LLC | Non-invasive metering system for software licenses |
EP2913773A1 (fr) * | 2014-02-27 | 2015-09-02 | Thomson Licensing | Randomisation de la disposition de l'espace d'Addresses d'un flattened Control Flow Graph continu en temps d'exécution |
US11354405B1 (en) * | 2021-07-06 | 2022-06-07 | Polyverse Corporation | Code snippet mobilization systems and methods |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530752A (en) * | 1994-02-22 | 1996-06-25 | Convex Computer Corporation | Systems and methods for protecting software from unlicensed copying and use |
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
US6006328A (en) | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
WO2000067095A1 (fr) | 1999-04-30 | 2000-11-09 | Trymedia Systems | Procede et appareil pour la distribution protegee de logiciels |
US20050071653A1 (en) * | 2003-09-25 | 2005-03-31 | Sun Microsystems, Inc., A Delaware Corporation | Non-linear execution of application program instructions for application program obfuscation |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339430A (en) * | 1992-07-01 | 1994-08-16 | Telefonaktiebolaget L M Ericsson | System for dynamic run-time binding of software modules in a computer system |
US5375241A (en) * | 1992-12-21 | 1994-12-20 | Microsoft Corporation | Method and system for dynamic-link library |
US6199152B1 (en) * | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US6141698A (en) * | 1997-01-29 | 2000-10-31 | Network Commerce Inc. | Method and system for injecting new code into existing application code |
JP2002501272A (ja) * | 1997-12-30 | 2002-01-15 | マクロヴィジョン ヨーロッパ リミテッド | データを担うディスクの出所を決定する方法及び装置 |
US6029259A (en) * | 1998-06-15 | 2000-02-22 | T.T.R. Technologies Ltd. | Method and system for authenticating digital optical media |
US6104679A (en) * | 1998-10-01 | 2000-08-15 | T.T.R. Technologies Ltd. | Method for determining an unauthorized copy of an optical disc |
GB9821808D0 (en) * | 1998-10-06 | 1998-12-02 | Dilla Limited C | Method and apparatus for determining the provenance of a data carrying disc |
US6748079B1 (en) * | 1998-10-14 | 2004-06-08 | Macrovision Corporation | Method and system for recording data on and reading data from an optical medium |
US6425098B1 (en) * | 1998-10-20 | 2002-07-23 | Midbar Tech (1998) Ltd. | Prevention of disk piracy |
US6802006B1 (en) * | 1999-01-15 | 2004-10-05 | Macrovision Corporation | System and method of verifying the authenticity of dynamically connectable executable images |
US7111290B1 (en) * | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US7360252B1 (en) * | 1999-04-30 | 2008-04-15 | Macrovision Corporation | Method and apparatus for secure distribution of software |
US7137105B2 (en) * | 1999-05-12 | 2006-11-14 | Wind River Systems, Inc. | Dynamic software code instrumentation method and system |
US7287166B1 (en) * | 1999-09-03 | 2007-10-23 | Purdue Research Foundation | Guards for application in software tamperproofing |
US6928040B2 (en) * | 2000-06-14 | 2005-08-09 | Macrovision Corporation | Identifying copy protected optical compact discs |
US6981262B1 (en) * | 2000-06-27 | 2005-12-27 | Microsoft Corporation | System and method for client interaction in a multi-level rights-management architecture |
GB0024918D0 (en) * | 2000-10-11 | 2000-11-22 | Sealedmedia Ltd | Method of providing java tamperproofing |
US6952479B2 (en) * | 2001-11-27 | 2005-10-04 | Macrovision Europe Limited | Dynamic copy protection of optical media |
US20050004873A1 (en) * | 2003-02-03 | 2005-01-06 | Robin Pou | Distribution and rights management of digital content |
GB2405958A (en) | 2003-08-20 | 2005-03-16 | Macrovision Europ Ltd | Code obfuscation and controlling a processor by emulation |
US7360097B2 (en) * | 2003-09-30 | 2008-04-15 | Check Point Software Technologies, Inc. | System providing methodology for securing interfaces of executable files |
EP1542117A1 (fr) * | 2003-10-29 | 2005-06-15 | Sony Ericsson Mobile Communications AB | Lier un contenu à un utilisateur |
US7676846B2 (en) * | 2004-02-13 | 2010-03-09 | Microsoft Corporation | Binding content to an entity |
US7325126B2 (en) * | 2004-03-05 | 2008-01-29 | Microsoft Corporation | System and method for distributed module authentication |
US7587595B2 (en) * | 2005-05-13 | 2009-09-08 | Intel Corporation | Method and apparatus for providing software-based security coprocessors |
-
2006
- 2006-04-26 EP EP06380096A patent/EP1850260A1/fr not_active Ceased
- 2006-11-13 US US11/598,318 patent/US8516447B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530752A (en) * | 1994-02-22 | 1996-06-25 | Convex Computer Corporation | Systems and methods for protecting software from unlicensed copying and use |
US6006328A (en) | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
WO2000067095A1 (fr) | 1999-04-30 | 2000-11-09 | Trymedia Systems | Procede et appareil pour la distribution protegee de logiciels |
US20050071653A1 (en) * | 2003-09-25 | 2005-03-31 | Sun Microsystems, Inc., A Delaware Corporation | Non-linear execution of application program instructions for application program obfuscation |
Non-Patent Citations (1)
Title |
---|
COHEN F.B.: "OPERATING SYSTEM PROTECTION THROUGH PROGRAM EVOLUTION", 1 October 1993, COMPUTERS & SECURITY, ELSEVIER SCIENCE PUBLISHERS. AMSTERDAM, NL, PAGE(S) 565 - 584, ISSN: 0167-4048, XP000415701 * |
Also Published As
Publication number | Publication date |
---|---|
US8516447B2 (en) | 2013-08-20 |
US20070256064A1 (en) | 2007-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8458673B2 (en) | Computer-implemented method and system for binding digital rights management executable code to a software application | |
JP4067757B2 (ja) | プログラム配布システム | |
US8499349B1 (en) | Detection and restoration of files patched by malware | |
EP3391263B1 (fr) | Sécurisation de pages web, d'applis web et d'applications | |
US8516447B2 (en) | Computer-implemented method and system for binding digital rights management executable code to a software application | |
US7734549B2 (en) | Methods and apparatus for managing secured software for a wireless device | |
US6272636B1 (en) | Digital product execution control and security | |
US8271803B2 (en) | Anti-debugging protection of binaries with proxy code execution | |
US7587724B2 (en) | Kernel validation layer | |
Dong et al. | AdSentry: comprehensive and flexible confinement of JavaScript-based advertisements | |
US8397072B2 (en) | Computer-implemented method and system for embedding ancillary information into the header of a digitally signed executable | |
US20100037317A1 (en) | Mehtod and system for security monitoring of the interface between a browser and an external browser module | |
US20120096566A1 (en) | First computer process and second computer process proxy-executing code on behalf of first process | |
JPH10313309A (ja) | 国際暗号法フレームワークでアプリケーションが一定のサービスクラスを合法的に実行することを認証する装置 | |
US20240095402A1 (en) | Methods and Systems for Recursive Descent Parsing | |
CN114556336A (zh) | 保卫软件例程 | |
US20120174090A1 (en) | Patch and dot release licensing | |
US8892894B2 (en) | Computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content | |
WO2002035324A2 (fr) | Système et procédé de gestion de contenu numérique | |
KR102358101B1 (ko) | 프로그램 보안 적용방법 | |
Egners et al. | Hackers in your pocket: A survey of smartphone security across platforms | |
CA2701776A1 (fr) | Systeme et un procede mis en oeuvre par ordinateur permettant le suivi hors bande d'une distribution numerique | |
WO2007127287A2 (fr) | Association de codes executables a une application logicielle | |
WO2009016426A1 (fr) | Procédé et système mis en oeuvre par ordinateur permettant d'intégrer et d'authentifier des informations auxiliaires dans un contenu signé numériquement | |
EP2202661B1 (fr) | Appareil et procédé pour protéger un composant d'un système informatique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
AX | Request for extension of the european patent |
Extension state: AL BA HR MK YU |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1108948 Country of ref document: HK |
|
17P | Request for examination filed |
Effective date: 20080416 |
|
RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: ACRESSO SOFTWARE INC. |
|
17Q | First examination report despatched |
Effective date: 20080519 |
|
AKX | Designation fees paid |
Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED |
|
18R | Application refused |
Effective date: 20101012 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1108948 Country of ref document: HK |