Ну а что можно придумать инновационного? Зашифрованный раздел, который развернется при загрузке? Ключ прописан в загрузчике и все равно найти где он в памяти возможно. Предположим он не хранится в загрузчике, то все равно как то получает ключ. Эмулятор с компилятором писать если только, вопрос к чему это. Все равно от реверса защититься на 100% не получится. Можно усложнить и на этом все. С железом конечно проще... Самое то главное что бы не полезли CVE в ПО. Тут больше вопрос к разрабам на сколько они уверены в своем коде.
PS: Я не говорю, что защиту делать не надо, но и ставить ее наперед тоже не стоит. У вас есть продукт которые люди любят и будут за него платить. То что его будут ломать и реверсить это да, в любом случае. Нужно изучить этот вопрос и выбрать лучшие методы.