Protecting computer code against ROP attacks
First Claim
Patent Images
1. A method comprising:
- obtaining computer code, wherein the computer code is comprised of code blocks arranged in a first order and providing a functionality, wherein each code block of the code blocks comprises one or more program instructions;
determining, by a processor, at least one constraint on reordering the code blocks in a second order, wherein the at least one constraint ensures that the computer code after the reordering of the code blocks maintains the functionality, whereby a second computer code comprising the code blocks arranged in the second order, when executed, provides the functionality;
providing the at least one constraint to an automatic solver for determining the second order; and
providing the second computer code arranged in the second order based on the at least one constraint.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, computer product and computerized system, the method comprising: obtaining computer code, wherein the computer code is comprised of code blocks arranged in a first order and providing a functionality, wherein each code block of the code blocks comprises one or more program instructions; determining, by a processor, one or more constraints on reordering the code blocks in a second order, such that a second computer code comprising the code blocks arranged in the second order, when executed, provides the functionality; and providing the constraints to an automatic solver for determining the second order.
-
Citations
14 Claims
-
1. A method comprising:
-
obtaining computer code, wherein the computer code is comprised of code blocks arranged in a first order and providing a functionality, wherein each code block of the code blocks comprises one or more program instructions; determining, by a processor, at least one constraint on reordering the code blocks in a second order, wherein the at least one constraint ensures that the computer code after the reordering of the code blocks maintains the functionality, whereby a second computer code comprising the code blocks arranged in the second order, when executed, provides the functionality; providing the at least one constraint to an automatic solver for determining the second order; and providing the second computer code arranged in the second order based on the at least one constraint. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computerized system having a hardware processor, the hardware processor being adapted to perform the steps of:
-
obtaining computer code, wherein the computer code is comprised of code blocks arranged in a first order and providing a functionality, wherein each code block of the code blocks comprises one or more program instructions; determining, by the hardware processor, at least one constraint on reordering the code blocks in a second order, wherein the at least one constraint ensures that the computer code after the reordering of the code blocks maintains the functionality, whereby a second computer code comprising the code blocks arranged in the second order, when executed, provides the functionality; providing the at least one constraint to an automatic solver for determining the second order; and providing the second computer code arranged in the second order based on the at least one constraint.
-
-
14. A computer program product comprising a non-transitory computer readable storage medium retaining program instructions configured to cause a processor to perform actions, which program instructions comprise:
-
obtaining computer code, wherein the computer code is comprised of code blocks arranged in a first order and providing a functionality, wherein each code block of the code blocks comprises one or more program instructions; determining, by a processor, at least one constraint on reordering the code blocks in a second order, wherein the at least one constraint ensures that the computer code after the reordering of the code blocks maintains the functionality, whereby a second computer code comprising the code blocks arranged in the second order, when executed, provides the functionality; providing the at least one constraint to an automatic solver for determining the second order; and providing the second computer code arranged in the second order based on the at least one constraint.
-
Specification