GB2343022A - Encrypting of Java methods - Google Patents

Encrypting of Java methods Download PDF

Info

Publication number
GB2343022A
GB2343022A GB9822834A GB9822834A GB2343022A GB 2343022 A GB2343022 A GB 2343022A GB 9822834 A GB9822834 A GB 9822834A GB 9822834 A GB9822834 A GB 9822834A GB 2343022 A GB2343022 A GB 2343022A
Authority
GB
United Kingdom
Prior art keywords
component
compiled
encrypted
java
attribute
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.)
Granted
Application number
GB9822834A
Other versions
GB2343022B (en
GB9822834D0 (en
Inventor
Alan Michael Webb
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to GB9822834A priority Critical patent/GB2343022B/en
Publication of GB9822834D0 publication Critical patent/GB9822834D0/en
Priority to JP28614699A priority patent/JP3377087B2/en
Publication of GB2343022A publication Critical patent/GB2343022A/en
Application granted granted Critical
Publication of GB2343022B publication Critical patent/GB2343022B/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)

Abstract

A method of processing a Java ClassFile component on a client comprising retrieving the ClassFile component from a server and checking the component for a compiled part which is indicated by a flag or attribute in the ClassFile. If a compiled part is detected further checking of the ClassFile is performed to see if the part is encrypted, again indicated by a flag or attribute. If the part is so encrypted it is then decrypted.

Description

ENCRYPTING OF JAVA METHODS This invention relates to the encryption of Java methods and in particular to the use of encryption as a means of concealing the actual implementation of a distributed Java program and to limit its use.
BACKGROUND One of the advantages of the Java language is the high level nature of the byte code, this allow a programming language which is simple to understand and platform independent. A disadvantage of high level byte is that it may be converted into easy to understand source code. For instance, byte code retains the label and variable names which are readable on recompilation. Software developers are discouraged from developing Java applications due to the ease with which Java classes can be reverse engineered. Much proprietary information in Java application can be revealed through reverse engineering.
A solution to the problem of reverse engineering to use encryption to obscure the transmitted form of the class to make Java programs at least as secure as conventional, native object code. However, the application must be decrypted before it can be used which limits the usage of the application to users who know how to decrypt.
Another solution is to encrypt the application before shipping, ship the encrypted application and decrypt before installing on the machine. This solution works for stand alone applications which have their own installation programs to integrate them with their host machine. However applets on the internet are downloaded directly by a JVM and do not have any preprocessing that may decrypt them. The JVM is defined by Sun Microsystems and controls the downloading of applets.
There is no present plans to modify the JVM to deal with encrypted applets and any unilateral modification would render that particular JVM non-standard. The difficulties involved in modifying such a pervasive and standard component for one particular type of decryption render this approach inappropriate.
The Java Virtual Machine (JVM) is a key component the Java programming language. It is particular for the operating system and the platform, it interprets Java byte code instructions from a Java application and uses built in routines and operating system routines to process them. One of the disadvantages of interpretation of byte code by the JVM is that the same byte code may be interpreted many times. This is one reason why Java interpretation is considerably slower to process than compiled code (for instance a C++ object code program).
Compiling the Java byte code, instead of interpreting it, increases the speed of execution as the platform dependent code is then executed directly. The platform specific code is stored by the Just-in-Time (JIT) and used whenever the byte code would have been interpreted and used.
The JIT is a platform-specific software compiler often contained within VMS. It compiles Java byte codes on-the-fly into native machine instructions, thereby reducing the need for interpretation.
However JIT compilation takes time to perform, if the byte code is only used once then it may be a false optimisation to compile it firstsimple interpretation would in fact be better. By monitoring the byte code usage and only compiling that which is used most an increase in speed can be attained. This approach is being implemented in future releases of the JVM. The developer may also pre-compile those parts of the Java byte code that would benefit most from compilation. Platform dependent code for several machines could be included with the platform independent code so that the Java application would be optimised for the chosen platforms and still work (but not optimised) on those platforms that were not chosen. Obviously this will not benefit all platforms which diminishes the main advantage of Java but a significant advantage will be achieved for the most used platforms.
Java applications are made up of a number of Java ClassFiles. Each ClassFile represents a Java object oriented class and comprises fields containing the data necessary to build a class object in the JVM. The fields include fields to store the class properties, class methods for the execution of the class and attributes used by the JVM to link the class. A ClassFile is retrieved by the JVM's ClassLoader so that it may be verified for syntax, linked into the JVM and have its references resolved. Among the attributes is a'compiled method'attribute which indicates to the JVM that the ClassFile includes platform dependent machine code for a particular method, the ClassFile may also contain the Java byte code for that method.
When the JVM retrieves the ClassFile it reads the attributes, if a method is not indicated as having compiled method code attached then the method byte code is placed into the JVM method area memory. If a method is indicated as having compiled code attached then the JVM passes responsibility of the compiled code to the Just-In-Time compiler. This is because it is the JIT which handles the storing of compiled code in execution memory and the compiled code handling must be consistent for both precompiled code and JIT compiled code.
SUMMARY OP THE INVENTION According to one aspect of the present invention there is provided a method as described in claim 1.
By making the ideas in software more secure, companies will be more likely to develop serious Java applications. By using the existing JIT mechanisms, such protection is not dependent upon specialised JVM technology at the client and an application vendor must supply a suitable JIT implementation. This allows an embodiment of the invention to be incorporated into any existing JVM. The level of security is open; it can range from a hard-coded key to on-the-fly encryption using a once only key delivered during the decryption process. In the latter case, the distributed class is only able to be decrypted on the occasion it is downloaded.
BRIEF DESCRIPTION OF DRAWINGS In order to promote a fuller understanding of this and other aspects of the present invention, an embodiment will now be described, by way of example only, with reference to the accompanying drawings in which: Figure 1 is a schematic representation of a computer system including a Java environment; Figure 2 is a flow diagram of the processing steps of turning Java source code into Java objects for execution in the JVM; Figure 3 is a schematic representation of the transformation of Java source code into Java objects linked to the JVM; and Figure 4 is a flow diagram showing the processing of a Java ClassFile during linking by a JVM ClassLoader.
A Java environment 10 resides in a powered up operational computing system 12 such as shown in Figure 1. The computing system comprises, for example, a computer platform 14 having Pentium II based microprocessor 16,64k RAM memory 18 and Microsoft Windows NT operating system 20.
Connected to the platform 14 are computer peripherals: keyboard 22, mouse 24, VDU 26 and storage systems 28 such as a hard drive. The platform 14 is also connected to a network 30 via a network adapter and through the network to the Internet via an Internet gateway. When powered up the computer system first loads the operating system 20 into the memory from the storage system 28. The operating system 20 typically controls the loading of the Java environment 10, browser software 32 such as Netscape's Navigator and other software applications from the storage system 28. The operating system 20 typically controls the memory allocation of the computing system 12 and makes space in the memory for storing Java applications 34 and web pages with embedded Java applets 36.
Java applications may be loaded from the storage system or downloaded from the internet using the browser 32 which is connected to the world wide web. The browser 32 may also download web pages with embedded Java applets. The main components of the Java environment 10 in the present embodiment are a Java Virtual Machine 38 (JVM) ; a Just In Time Java Compiler 40 (JIT) and a pseudo Just-In-Time compiler 42. The JVM 38 and the JIT 40 are part of the Java Development Kit and may be written by different companies. For instance Sun Microsystems JDK 1.1 for Windows contains a Sun JVM and a Symantec Corporation JIT. In the present embodiment it is anticipated that the same provider would supply the JIT and the Pseudo JIT to the Java environment.
In Figure 2 the processing of Java source code 44 (Figure 3) into Java objects for execution in the JVM 38 (Figure 1) is shown.
Representations of the Java code in Figure 3 correspond with some of the steps in Figure 2. A Java compiler 46 (Javac) retrieves Java source code 44 as written by a developer using an editor and converts it into the machine independent byte code which is recognised by a JVM running on any platform (step 1). The byte code is a collection of object orientated classes, each class being contained in a ClassFile 48 (Figure 3). The ClassFile 48 shows the byte code for three methods M1, M2, M3 encapsulated within the ClassFile. A post Javac compilation process (step 2A) is applied by a post Javac compilation component 50A to the ClassFile 48 which compiles certain methods (of the developers choosing) and sets a 'compiled method'attribute in the ClassFile. Afer post Javac processing the ClassFile 48 becomes a modified ClassFile 52. The compiled method is represented in Figure 3 by method M1 in the Modified ClassFile 52. In the embodiment a post Javac encryption process (step 2B) is applied by a post Javac encryption component 50B to the ClassFile 48 to encrypt certain methods, in this example method M2. The'compiled method'attribute is set. Also a newly defined attribute (this is allowed in the Java Language Specification)-an'encrypted method'is set, this is represented by method M2 in Figure 3. Method M3 is not post Javac processed and remains pure Java byte code as indicated in Figure 3. The modified ClassFile 52 is stored with other ClassFiles as part of a Java application or Java applet. The Java application may be on a server or on the hard drive of a connected client, the Modified ClassFile is transferred to the computer system when the application is loaded from the server or the hardrive. A Java applet is part of a web page and the Modified ClassFile 52 is transferred to the computer system 12 when the web page is downloaded by the browser 32.
The JVM 38 comprises a ClassLoader 54 (Figures 3 and 4) which retrieves the Modified ClassFile 52 from the server or from storage and caches it (step 3) in preparation for integration with the JVM 38. The JVM ClassLoader 54 verifies the byte code (step 4) by checking the syntax against the Java Language specification, if any errors in the byte code are found they are returned and the loading stopped. Next the JVM Classloader 54 prepares a class object from the Modified ClassFile 52 (step 5), this integrates the class object with the JVM and allows the execution of the class object as part of the Java application or applet.
The preparation or integration is also know as linking and involves, amongst many other things creating memory space for class object variables in a JVM heap, placing method byte code M2, M3 in method area memory 56 and dealing with compiled methods. That part of the class object preparation process used for compiled and encrypted methods which is part of the embodiment of the invention is shown in Figure 4. After preparation of the class object the JVM Classloader resolves any symbols into the class object (step 7), this involves retrieving any other ClassFiles that are referenced. The Class object is now ready for interpretation. The last steps (steps 4,5,6 of Figure 2) performed by the ClassLoader are not necessarily performed in the order given as this depends very much on the type of JVM used.
The Class Object preparation with respect to'compiled method'code is represented in Figure 4. The Classloader prepares methods from the Modified ClassFile 52 for integration within the JVM (step 100). First a method table 58 is created in the method area memory 56. This table is used to reference the methods in the JVM. Three fields in the table are described: the method name; the method pointer; and the compiled link vector for the method. The method name is a set of symbols representing the method, in this example the three method names are M1, M2 and M3. The method name is used as an index into the table to look up a pointer of the method byte code or a link vector for the compiled platform specific code. The pointer comprises a memory address where the byte code of the method resides. The link vector comprises a memory address in executable memory where the compiled platform dependent code resides, in this way the link vector is really a pointer as well. The JVM goes through each method in the ClassFile (step 104). For each method the JVM 38 checks whether the'compiled method'attribute is set. If so then the JVM 38 normally passes control over to the JIT 40, however in this embodiment a 'compiled method'pointer which normally points to the JIT 40 points to the pseudo JIT 42 and control passes to the pseudo JIT 42 instead. If the 'compiled method'attribute is not set then the JVM continues and does not give up control, it retrieves the byte code method (in this example M3) from the ClassFile 52 (step 110A) and stores it in the JVM Method area 56 (step 112A). Then the pointer in the method table 58 is set at the address of the method M3 in memory (step 114A). The next method in the ClassFile is processed (step 116) by jumping back to step 106 and checking the'compiled method'attribute of the next method. If no other methods remain then the JVM continues with the normal class object preparation.
If the'compiled method'attribute is set in step 106c then control passes to the pseudo JIT 42. The pseudo JIT 42 checks to see if the 'encryption attribute'is set in the ClassFile (step 120), if it is not set then control passes to the JIT 40 and processing of'normal'compiled methods continues, if set then the encrypted method (encrypted by the post Javac encryption process in step 2B) is retrieved (step 110B). In this example the retrieved encrypted method is M2. The pseudo JIT applies a decryption algorithm and decrypts the method (step 111) and then stores the decrypted method in the JVM method area memory (step 112B). The pointer in the method table is updated with the method's location in the method memory area (step 114B) and control is passed back to the JVM to process the next method in the ClassFile (step 116).
If the'encryption'attribute is not set in step 120 then control passes to the JIT 40. Normal JIT processing of a compiled method is carried out (step 120) including retrieving the compiled method (step 110C), storing the compiled method in executable memory (step 112C) and setting the link vector in the method table (step 114C). Control is passed back to the JVM to process the next method in the ClassFile (step 116).
If the'encryption'attribute is not set in step 120 then control passes to the JIT 40. Normal JIT processing of a compiled method is carried out (step 120) including retrieving the compiled method (step 110C), storing the compiled method in executable memory (step 112C) and setting the link vector in the method table (step 114C). Control is passed back to the JVM to process the next method in the ClassFile (step 116).
In summary there is described a method of processing a Java ClassFile component on a client comprising retrieving the ClassFile component from a server and checking the component for a compiled part which is indicated by a flag or attribute in the ClassFile. If a compiled part is detected further checking of the ClassFile is performed to see if the part is encrypted, again indicated by a flag or attribute.
If the part is so encrypted it is then decrypted. Another aspect of the invention is a method of distributing software components which comprises encrypting at least a part of the software component and setting a 'compiled'attribute and an'encrypted'attribute for each encrypted part of the component. The component is stored on a server where it might be accessed by a client.
Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc.
Microsoft, Windows, and the Windows 95 logo are trademarks or registered & trademarks of Microsoft Corporation.
Netscape and Netscape Navigator are trademarks of Netscape Communications Corporation.

Claims (17)

  1. CLAIMS 1. A method of processing a software component on a client comprising the steps of: retrieving the component from a server; checking the component for a compiled part; checking, if a compiled part is detected, that said part is encrypted; decrypting said part if so encrypted
  2. 2. A method as claimed in claim 1 wherein the software component is a Java ClassFile.
  3. 3. A method as claimed in claim 2 wherein the component is retrieved and checked for compiled parts by a Java Virtual Machine.
  4. 4. A method as claimed in claim 3 wherein the JVM passes control to pseudo JIT code if a compiled part is detected.
  5. 5. A method as claimed in claim 4 wherein said part is checked for encryption and decrypted if necessary by the pseudo JIT.
  6. 6. A method as claimed in claim 5 wherein the pseudo JIT passes control to a real JIT if said part is not encrypted and compiled.
  7. 7. A method of distributing software components comprising: encrypting at least a part of the software component; setting a'compiled'attribute and an'encrypted'attribute for each encrypted part of the component; and storing the component on a server where it might be accessed by a client.
  8. 8. A method as claimed in claim 7 wherein the software component represents a object oriented class and one or more of the methods of the class are encrypted.
  9. 9. A method as claimed in claim 7 wherein the software components are Java ClassFiles.
  10. 10. Apparatus for processing a software component on a client comprising: means for retrieving the component from a server; means for checking the component for a compiled part; means for checking, if a compiled part is detected, that said part is encrypted; and means for decrypting said part if so encrypted.
  11. 11. Apparatus as claimed in claim 10 wherein the software component is a Java ClassFile.
  12. 12. Apparatus as claimed in claim 10 or 11 wherein means for retrieving, means for checking the component for a compiled part are part of a Java Virtual Machine.
  13. 13. Apparatus for distributing software components comprising: means for encrypting at least a part of the software component; means for setting a'compiled'attribute and an'encrypted' attribute for each encrypted part of the component; and means for storing the component on a server where it might be accessed by a client.
  14. 14. Apparatus as claimed in claim 13 wherein the software component represents an object oriented class and one or more of the methods of the class are encrypted.
  15. 15. Apparatus as claimed in claim 13 wherein the software components are Java ClassFiles.
  16. 16. A computer program product stored on a computer readable storage medium for, when executed on a computer, executing a data processing method of processing a software component on a client comprising the steps of: retrieving the component from a server; checking the component for a compiled part; checking, if a compiled part is detected, that said part is encrypted; decrypting said part if so encrypted.
  17. 17. A computer program product stored on a computer readable storage medium for, when executed on a computer, executing a data processing method of distributing software components comprising: encrypting at least a part of the software component; setting a'compiled'attribute and an'encrypted'attribute for each encrypted part of the component ; and storing the component on a server where it might be accessed by a client.
GB9822834A 1998-10-19 1998-10-19 Encrypting of java methods Expired - Fee Related GB2343022B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
GB9822834A GB2343022B (en) 1998-10-19 1998-10-19 Encrypting of java methods
JP28614699A JP3377087B2 (en) 1998-10-19 1999-10-07 Method and apparatus for processing and distributing software components

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB9822834A GB2343022B (en) 1998-10-19 1998-10-19 Encrypting of java methods

Publications (3)

Publication Number Publication Date
GB9822834D0 GB9822834D0 (en) 1998-12-16
GB2343022A true GB2343022A (en) 2000-04-26
GB2343022B GB2343022B (en) 2003-01-08

Family

ID=10840865

Family Applications (1)

Application Number Title Priority Date Filing Date
GB9822834A Expired - Fee Related GB2343022B (en) 1998-10-19 1998-10-19 Encrypting of java methods

Country Status (2)

Country Link
JP (1) JP3377087B2 (en)
GB (1) GB2343022B (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19932769A1 (en) * 1999-07-14 2001-03-08 Roellgen Bernd Cryptographic method that can be changed during runtime
WO2002006951A2 (en) * 2000-07-18 2002-01-24 Bitarts Limited Computer software installation
WO2002071195A1 (en) * 2001-02-05 2002-09-12 Hmd-Software Ag Method and device for transmitting programme codes via the internet
GB2374165A (en) * 2001-04-02 2002-10-09 Global Knowledge Network Secure distribution of electronic media
WO2004098121A2 (en) * 2003-05-02 2004-11-11 Bitarts Limited Delivering a software component
DE10336083A1 (en) * 2003-08-06 2005-03-17 Siemens Ag Method for securing computer programs against unauthorized multiple use
US6931634B2 (en) * 2000-12-21 2005-08-16 Silicon Metrics Corporation Encrypted compiler
AT501255A1 (en) * 2003-06-06 2006-07-15 Siemens Ag Oesterreich LICENSE-DEPENDENT EXECUTION OF PROGRAM FILES

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132364A (en) * 2000-10-19 2002-05-10 Yutaka Iizuka Method for protecting program from internal analysis, computer readable recording medium and program distribution method
JP2006053406A (en) * 2004-08-13 2006-02-23 Fujitsu Ltd Object file distribution method, object file distribution system and electronic appliance
JP4727366B2 (en) * 2005-09-28 2011-07-20 株式会社デジタル Information processing apparatus, information processing system, program, and recording medium
KR100765772B1 (en) 2005-11-04 2007-10-15 삼성전자주식회사 Class library footprint file and method for authenticating JAVA application
JP2007172526A (en) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd Information processing system and information processing method
US20070240194A1 (en) * 2006-03-28 2007-10-11 Hargrave Bentley J Scoped permissions for software application deployment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0875815A2 (en) * 1997-04-30 1998-11-04 Sony Corporation Information processing apparatus and method and recording medium
EP0875814A2 (en) * 1997-04-30 1998-11-04 Sony Corporation Information processing apparatus and method and recording medium

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708709A (en) * 1995-12-08 1998-01-13 Sun Microsystems, Inc. System and method for managing try-and-buy usage of application programs
KR100513138B1 (en) * 1996-01-24 2005-09-07 선 마이크로시스템즈 인코퍼레이티드 A processor for executing instruction sets received from a network or from a local memory
WO1999041651A2 (en) * 1998-02-13 1999-08-19 National Computer Board, Acting Through Its R & D Division, The Information Technology Institute Method for protecting bytecode

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0875815A2 (en) * 1997-04-30 1998-11-04 Sony Corporation Information processing apparatus and method and recording medium
EP0875814A2 (en) * 1997-04-30 1998-11-04 Sony Corporation Information processing apparatus and method and recording medium

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19932769A1 (en) * 1999-07-14 2001-03-08 Roellgen Bernd Cryptographic method that can be changed during runtime
WO2002006951A2 (en) * 2000-07-18 2002-01-24 Bitarts Limited Computer software installation
WO2002006951A3 (en) * 2000-07-18 2002-12-05 Bitarts Ltd Computer software installation
GB2382435A (en) * 2000-07-18 2003-05-28 Bitarts Ltd Computer software installation
US6931634B2 (en) * 2000-12-21 2005-08-16 Silicon Metrics Corporation Encrypted compiler
WO2002071195A1 (en) * 2001-02-05 2002-09-12 Hmd-Software Ag Method and device for transmitting programme codes via the internet
GB2374165A (en) * 2001-04-02 2002-10-09 Global Knowledge Network Secure distribution of electronic media
WO2004098121A2 (en) * 2003-05-02 2004-11-11 Bitarts Limited Delivering a software component
WO2004098121A3 (en) * 2003-05-02 2004-12-29 Bitarts Ltd Delivering a software component
AT501255A1 (en) * 2003-06-06 2006-07-15 Siemens Ag Oesterreich LICENSE-DEPENDENT EXECUTION OF PROGRAM FILES
DE10336083A1 (en) * 2003-08-06 2005-03-17 Siemens Ag Method for securing computer programs against unauthorized multiple use

Also Published As

Publication number Publication date
JP3377087B2 (en) 2003-02-17
JP2000132388A (en) 2000-05-12
GB2343022B (en) 2003-01-08
GB9822834D0 (en) 1998-12-16

Similar Documents

Publication Publication Date Title
Adl-Tabatabai et al. Efficient and language-independent mobile programs
Dahm Byte code engineering
Dmitriev Towards flexible and safe technology for runtime evolution of java language applications
US5953526A (en) Object oriented programming system with displayable natural language documentation through dual translation of program source code
US8938727B2 (en) Method for preventing software reverse engineering, unauthorized modification, and runtime data interception
EP1145120B1 (en) Generating compiled programs for interpretive runtime environments
US6327701B2 (en) Method and apparatus for finding bugs related to garbage collection in a virtual machine
US7685596B1 (en) Deploying and distributing of applications and software components
CN107924326B (en) Overriding migration methods of updated types
CN102063315B (en) Calling of late bound functions from an external program environment and system thereof
US20060123403A1 (en) Device and method for processing a program code
US6557023B1 (en) Method and apparatus for avoiding array class creation in virtual machines
US6473768B1 (en) System and method for modifying an executing application
JP2001514411A (en) Improved security for untrusted executable code
GB2343022A (en) Encrypting of Java methods
US7155702B2 (en) Interface and stub generation for code distribution and synthesis
US20020093856A1 (en) File language verification
WO2002027489A2 (en) Persistent data storage for client computer software programs
JP4698925B2 (en) System and method for verifying authenticity of dynamically connectable executable images
CN110597496B (en) Method and device for acquiring bytecode file of application program
Keller et al. Supporting the integration and evolution of components through binary component adaptation
US20220147376A1 (en) Selective substitution of legacy load module programs with classes for execution in a java virtual machine
Stadler et al. Lazy continuations for Java virtual machines
Cabral et al. Rail: code instrumentation for. net
US7458061B2 (en) Protecting object identity in a language with built-in synchronization objects

Legal Events

Date Code Title Description
746 Register noted 'licences of right' (sect. 46/1977)

Effective date: 20070905

PCNP Patent ceased through non-payment of renewal fee

Effective date: 20111019