Runtime Protection Of Software Programs Against Control- And Data-Oriented Attacks