Systems and methods for protecting software
AssigneeHitachi Global Storage Technologies Netherlands B.V.
InventorsChristopher J. Squires, Jeffrey G. Reh
Life of this patent
Estimating the term…
Abstract
A software protection system comprises a memory system and a microprocessing system. The memory system is configured to store a software program comprised of a plurality of program instructions that, when executed, have a program order. The microprocessing system is coupled to the memory system and is configured to, when executing the software program, determine a next program instruction of the plurality of program instructions in the program order based on an order identifier, fetch the next program instruction from the memory system, determine if the next program instruction requires decrypting, decrypt the next program instruction responsive to determining that the next program instruction requires decrypting, and execute the next program instruction.
Claims18
A software protection system comprising:
- a memory system configured to store a software program comprised of a plurality of program instructions each comprising an opcode and an operand, wherein the plurality of program instructions, when executed, have a program order;
- and
- a microprocessing system coupled to the memory system and configured to, when executing the software program, determine a next program instruction of the plurality of program instructions in the program order based on an order identifier, fetch the next program instruction from the memory system, compare the opcode of the next program instruction against a template comprising a group of unencrypted opcodes to determine if the next program instruction requires decrypting, decrypt the next program instruction responsive to determining that the next program instruction requires decrypting, and execute the next program instruction.
A method of operating a software protection system comprising:
- storing in a memory system a software program comprised of a plurality of program instructions each comprising an opcode and an operand, wherein the plurality of program instructions, when executed, have a program sequence;
- and
- when executing the software program in a microprocessing system:
- determining in a microprocessing system a next program instruction of the plurality of program instructions in the program sequence based on a sequence identifier;
- fetching the next program instruction from the memory system;
- comparing the opcode of the next program instruction against a template comprising a group of unencrypted opcodes to determine if the next program instruction requires decrypting;
- decrypting the next program instruction responsive to determining that the next program instruction requires decrypting;
- and
- executing the next program instruction.
A microprocessing system for executing a software program comprised of a plurality of program instructions each comprising an opcode and an operand, wherein the plurality of program instructions, when executed, have a program order, the microprocessing system comprising:
- an interface configured to read from a memory a first program instruction of the plurality of program instructions;
- a processing system coupled to the interface and configured to
- compare an opcode of the program instruction against a template comprising a group of unencrypted opcodes to determine if the program instruction requires decrypting, decrypt the program instruction responsive to determining that the program instruction requires decrypting, and execute the program instruction.
A method of operating a microprocessing system for executing a software program comprised of a plurality of program instructions each comprising an opcode and an operand, wherein the plurality of program instructions, when executed, have a program order, the method comprising:
- reading a program instruction of the plurality of program instructions from a memory;
- comparing an opcode of the program instruction against a template comprising a group of unencrypted opcodes to determine if the program instruction requires decrypting;
- decrypting the program instruction responsive to determining that the program instruction requires decrypting;
- and
- executing the program instruction.
Dependencies are inferred from the claim text.