Abstract: A method, system and computer program product for tamper-proofing an executable assembly, including identifying assembly-time constants in source code; encrypting the assembly-time constants during the assembly process using public key cryptography; and signing the executable assembly using a digital signature. The executable assembly, at run-time, decrypts the assembly-time constants using the digital signature. A hashing function, a compression function or a one-way cryptographic block function is used to encrypt the assembly-time constants. Different keys or the same keys can be used to launch the assembly and to encrypt the assembly-time variables. The assembly-time constants are placed into a heap prior to the encrypting step. The assembly-time constants include strings and databases.
Abstract: A method, system and computer program product for obfuscating pseudocode (e.g., p-code, IL-code, byte-code, etc.), including creating a class-container; declaring an anonymizer method in the class-container; identifying method call instructions in the pseudocode; replacing, in the pseudocode, method calls with calls of the anonymizer method; and in the anonymizer method, adding the method call instructions. All or some of the added method calls have the same name. Parameter types of the added calls can be replaced with an abstract type. Return types of the added calls can be replaced with an abstract type. The class-container is a global class, and includes calls to public method, or the class-container is a private nested class, and includes calls to private methods, or two separate class-containers can be used.
Abstract: A method, system and computer program product for obfuscating pseudocode (e.g., p-code, IL-code, byte-code, etc.), including creating a class-container; declaring an anonymizer method in the class-container; identifying method call instructions in the pseudocode; replacing, in the pseudocode, method calls with calls of the anonymizer method; and in the anonymizer method, adding the method call instructions. All or some of the added method calls have the same name. Parameter types of the added calls can be replaced with an abstract type. Return types of the added calls can be replaced with an abstract type. The class-container is a global class, and includes calls to public method, or the class-container is a private nested class, and includes calls to private methods, or two separate class-containers can be used.