aprox13 / os-jit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

it's simple program which shows injecting byte code runtime For example, F: unsigned char -> unsigned char, F(x) = 5 * x ###

Press: quit - for stop program exec - for execute program mod - modify five in function

Кусочек JIT компилятора

Цель - получить знакомство с системными вызывами, используемыми для получения/освобождения памяти от ядра. Получить представление о том, как может работать JIT компилятор.

Программа должна

  • Выделить память с помощью mmap(2).
  • Записать в выделенную память машинный код, соответсвующий какой-либо функции.
  • Изменить права на выделенную память - чтение и исполнение. See: mprotect(2).
  • Вызвать функцию по указателю на выделенную память.
  • Освободить выделенную память.

Что может помочь?

  • man objdump
  • help disassemble в gdb

Extra points

Сильные духом призываются к возможности модификации кода выполняемой функции в runtime. Например, вы можете получить аргументом вызова вашей программы какое-то число и пропатчить машинный код этим числом. Эта часть задания будет оцениваться в дополнительные баллы.

About


Languages

Language:C++ 95.3%Language:Makefile 4.7%