самоизменяющийся код в ассемблере

Как мне написать самомодифицирующийся код в сборке mips 32, который заставляет функцию вызывать другую функцию (без добавления в нее вызова функции)? Мне нужно изменить код функции во время выполнения, чтобы он вызывал другую функцию.


person Daniel Cook    schedule 27.03.2015    source источник


Ответы (1)


Во имя всего святого НЕ ДЕЛАЙТЕ!

  1. Ассемблер часто встроен в ПЗУ, поэтому он не работает.
  2. Любая ОС с хорошей безопасностью не позволит вам изменять сегменты кода или выполнять данные.
  3. Для тех, кто это делает, уготован особый ад, окруженный проклятиями тех из нас, кому когда-либо приходилось обслуживать проклятые вещи!

MIPS имеет режим регистрации для прыжков -

    jr $rs

Переместите адрес, на который вы хотите перейти, в регистр и перейдите к нему. Это функциональный эквивалент помещения адреса в стек и выполнения возврата. Если вы хотите вызвать функцию, поместите переход в ее собственную подпрограмму, чтобы возврат из вызванной функции возвращался вызывающей стороне.

person Mike    schedule 27.03.2015