1. A method implemented on a computing device by a processor, the method comprising: receiving a combination block comprising a first sub-block of instructions interspersed with one or more obfuscation instructions, wherein the obfuscation instructions include control instructions and successive instructions within the first sub-block are executable in proper sequence through use of the control instructions; replacing the one or more obfuscation instructions embedded between sequentially executable instructions of the first sub-block with replacement instructions comprising instructions that perform integrity checks to detect tampering with the first sub-block, including physical instructions or runtime state, wherein the integrity checks are configured to implement oblivious hashing via overlapped code, the replacement instructions having a bit length equal to a bit length of the one or more obfuscation instructions.