Я наткнулся на полиморфные двигатели, и я ничего не знаю о них. Однако мне любопытно, как они написаны. Каждый пример, который я просматривал, записывает их в сборку, моя сборка не очень хороша; Я знаю только несколько инструкций здесь и там, но не так хорошо. С другой стороны, я хорош в C и C++.
Я знаком с концепцией полиморфизма в C++, но после прочтения о полиморфных двигателях я предполагаю, что они отличаются от полиморфизма в C++.
Как использовать методы, такие как использование virtual
ключевого слова в C++, для обфускации или шифрования кода в приложении?
Если необходимо изменить программу, вы можете либо изменить исходный код, либо изменить скомпилированный исполняемый файл.
Первый подход ужасен (на мой взгляд), потому что:
Обратите внимание, что я говорю здесь о скомпилированных языках, как предполагает использование C или C++ в вашем вопросе. Для интерпретируемых языков первый подход является очевидным.
В вашем случае второй имеет больше смысла, но он строго связан с машинным кодом целевой машины.
Поэтому я хочу сказать: если вы хотите реализовать программу или подпрограмму, которая может создавать модифицированную версию другой программы или модифицированную версию, вы можете реализовать ее в Assembly, C, C++ или любом другом языке, но во всех в случаях, когда вы должны владеть языком ассемблера целевой машины и машинным кодом.
Я рекомендую вам больше исследовать. Эта тема широкая. В случае, когда вы решите продолжить, я могу сказать, что Ассамблея не будет самым большим драконом.