Patent ID: 7051322

Claim:
A method of analyzing executable software code by decompiling said executable code, comprising: parsing said executable software code to identify one or more data flows; recursively, for each identified one or more data flow: discovering a fitting data flow model fitting the respective identified data flow; optimizing said fitting data flow model as a function of the respective identified data flow to form a refined data flow model; propagating said refined data flow model as a function of the respective identified data flow until substantially all data variables are modeled; and expressing said refined data flow model in an intermediate representation; parsing said executable software code to identify one or more control flows; recursively, for each identified one or more control flow: discovering a fitting control flow model fitting the respective identified control flow, comprising one or more control branches; optimizing said fitting control flow model as a function of the respective identified control flow to form a refined control flow model; propagating said refined control flow model as a function of the respective identified control flow until substantially all said control branches are modeled; and expressing said refined control flow model in said intermediate representation; wherein said refined data flow model and said refined control flow model express a complete nanocode model of said executable software code in said intermediate representation.