Я хочу написать программу, которая сможет изменять сам сегмент кода. например, рассмотрим этот ассемблерный код:
Исходный код:
i1: mov eax,0
i2: mov eax,0X01
результирующий код, который я хочу сделать во время выполнения тем же кодом:
i1: mov eax,0
i": // some modifing instructions that when are excuted they change the i2 and/or add or remove some instruction such i3
i2: jmp 0x32
i3: mov ebx,0x67
вы видите, что i2
изменяется после выполнения инструкции (инструкций) i"
. i"
обязан изменить свои инструкции кода переадресации.
Теперь мои вопросы:
- Как изменить сегмент кода? Или как адресовать область памяти сегмента кода?
- Можем ли мы изменить там тот же сегмент кода (а не другую программу, к которой у него нет доступа)?
- как мы можем решить проблемы, вызванные изменением размера сегмента кода?
- последняя проблема, возможно, это антивирусы! которые проверяют поведение программы во время выполнения и чувствительны к самомодификации.
Спасибо, друзья.