syxme, инструменты защиты при каждом создании билда защищенного приложения генерируют уникальную виртуальную машину. То есть можно несколько раз подряд защитить одно и то же приложение и каждый из билдов будет иметь разные коды для одних и тех же инструкций и т.д.
И это лишь одна из фич, которых очень много в таких инструментах
syxme, могу предложить развить вашу задачу в более интересный таск, так сказать "задача со звездочкой" -
обфускация на основе виртуальной машины, или в простонародье "виртуализация".
Базовое представление о том, что это такое (первая попавшаяся статья) - https://xakep.ru/2019/02/20/virtual-obfuscation/
Сфера невероятно узкоспециализированная, но интересная, а людей с хорошей квалификацией в ней во всем мире, наверное, можно пересчитать по пальцам одной руки.
Zorroti, это обычное изменение поведения приложения при помощи либы, которая ставит хуки. Адреса в макросах - это адреса функций в уже скомпиленном приложении, поведение которого меняют. То есть эти адреса уже заранее известны.
Docik99, только учтите, что Options используется также и сетевым оборудованием для "расширения" возможностей TCP (что-то типа метаданных с дополнительной информацией). Эти условные "метаданные" имеют общую структуру:
Type [1 байт] - тип "метаданных"
Size [1 байт] - размер "метаданных"
Payload [(Size - 2) байт] - полезная нагрузка.
Вам важно сохранить оригинальные данные и в их конец дописать свою полезную нагрузку, получится что-то типа оверлея. В теории этот оверлей должен игнорироваться сетевым оборудованием, но все это надо проверять на практике. Также надо почитать спеки по этим "метаданным" (всего их 35 типов) и посмотреть какие из них точно не модифицируются в процессе передачи.
Docik99, а чтобы еще больше извратиться - можете ксорить данные другими значениями из заголовка (например тем же DO), выйдет что-то типа шифрования данных. Тут все ограничено лишь вашей фантазией.