GB2343022A - Encrypting of Java methods - Google Patents
Encrypting of Java methods Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 12
- 238000004590 computer program Methods 0.000 claims 2
- 238000003672 processing method Methods 0.000 claims 2
- 230000008569 process Effects 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000010354 integration Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 241000478345 Afer Species 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2107—File 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)
- 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. A method as claimed in claim 1 wherein the software component is a Java ClassFile.
- 3. A method as claimed in claim 2 wherein the component is retrieved and checked for compiled parts by a Java Virtual Machine.
- 4. A method as claimed in claim 3 wherein the JVM passes control to pseudo JIT code if a compiled part is detected.
- 5. A method as claimed in claim 4 wherein said part is checked for encryption and decrypted if necessary by the pseudo JIT.
- 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. 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. 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. A method as claimed in claim 7 wherein the software components are Java ClassFiles.
- 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. Apparatus as claimed in claim 10 wherein the software component is a Java ClassFile.
- 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. 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. 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. Apparatus as claimed in claim 13 wherein the software components are Java ClassFiles.
- 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. 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.
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)
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)
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 delivery method, object file delivery system, and electronic device |
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)
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)
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 |
-
1998
- 1998-10-19 GB GB9822834A patent/GB2343022B/en not_active Expired - Fee Related
-
1999
- 1999-10-07 JP JP28614699A patent/JP3377087B2/en not_active Expired - Fee Related
Patent Citations (2)
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)
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 |
---|---|
GB9822834D0 (en) | 1998-12-16 |
GB2343022B (en) | 2003-01-08 |
JP3377087B2 (en) | 2003-02-17 |
JP2000132388A (en) | 2000-05-12 |
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 | |
Horstmann et al. | Core Java: Advanced Features | |
Chan et al. | Advanced obfuscation techniques for Java bytecode | |
US8806428B1 (en) | Deploying and distributing of applications and software components | |
US8938727B2 (en) | Method for preventing software reverse engineering, unauthorized modification, and runtime data interception | |
US6260187B1 (en) | System for modifying object oriented code | |
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 | |
CN102063315B (en) | Calling of late bound functions from an external program environment and system thereof | |
US6557023B1 (en) | Method and apparatus for avoiding array class creation in virtual machines | |
CN107924326B (en) | Overriding migration methods of updated types | |
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 | |
US7707631B2 (en) | Device and method for processing a program code | |
Keller et al. | Supporting the integration and evolution of components through binary component adaptation | |
Stadler et al. | Lazy continuations for Java virtual machines | |
US20220147376A1 (en) | Selective substitution of legacy load module programs with classes for execution in a java virtual machine | |
Cabral et al. | Rail: code instrumentation for. net |
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 |