1. A method for preventing the decompilation and runtime modification of a .NET CIL software code using tools that rely on .NET CIL metadata, comprising: a. Providing a converter capable of converting said .NET CIL software code into a generalized machine code, where said conversion involves data loss of said .NET CIL metadata; b. Providing an interpreter capable of interpreting said generalized machine code without requiring said .NET CIL metadata, where said interpreter is implemented as .NET CIL based software component for maintaining the same level of portability as said .NET CIL software code, where different implementations of said interpreter are provided to software vendors, and where said interpreter is formed by choosing a complete instruction subset out of a redundant instruction set, and by dynamically generating said converter and said interpreter implementation; and c. Interpreting said generalized machine code into a specific machine code by said interpreter.