Patent ID: 7546587
Filing Date: 2009-06-09
Classification: G06F

Abstract:
1. In a runtime environment comprising a first program module, at least one second program module and a call stack, a method of invoking a desired method associated with a desired second program module, comprising: in a third program module associating each of a plurality of stubs respectively with each of a plurality of methods associated with the at least one second program module, wherein each stub comprises a code segment performing a unique non-standard calling convention into the at least one second program module, wherein each stub includes at least a first instruction to push function parameters onto the call stack, a second instruction to call an authenticator module for authenticating that a stub has not been modified and a third instruction comprising embedded unique data for the stub, wherein the embedded unique data comprises a vtable entry descriptor for the desired method, corresponding to a vtable for the third program module, wherein the vtable is covered and comprises a list of function pointers to functions associated with the at least one second program module arranged in a random order, the random order unique for the at least one second program module; and from the first program module, issuing a first call to a stub in the third program module associated with the desired method, whereupon after the first call, the call stack comprises at least a first parameter corresponding to a return address associated with the stub, a second parameter corresponding to a parameter depth (cArgs) and a third parameter corresponding to a return address of the first program module, the first, second and third parameters arranged in a top-down order; wherein the third program module calls the at least one second program module using a non-standard calling convention.