LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Страницу надо смапить как исполняемую (man mmap, PROT_EXEC). Впрочем, если у тебя ядро 32-битное без PAE и/или старый проц то можно это не делать т.к. там этот флаг не проверяется.

Собственно вызов кода так:

typedef void (*void_func)(void);

....
   ((void_func)0x12345678)();

Сделает CALL 0x12345678

А тебе точно именно jmp нужен? Зачем? Может CALL сойдёт или даже лучше?

JMP можно сделать либо встроенным ассемблером, либо в gcc есть расширение - goto на указатель (но я им не пользовался никогда).

Исправление firkax, :

Страницу надо смапить как исполняемую (man mmap, PROT_EXEC). Впрочем, если у тебя ядро 32-битное без PAE и/или старый проц то можно это не делать т.к. там этот флаг не проверяется.

Собственно вызов кода так:

typedef void (*void_func)(void);

....
   ((void_func)0x12345678)();

Сделает CALL 0x12345678

А тебе точно именно jmp нужен? Зачем? Может CALL сойдёт или даже лучше?

Исправление firkax, :

Страницу надо смапить как исполняемую (man mmap, PROT_EXEC). Впрочем, если у тебя ядро i386 без PAE и/или старый проц то можно это не делать т.к. там этот флаг не проверяется.

Собственно вызов кода так:

typedef void (*void_func)(void);

....
   ((void_func)0x12345678)();

Сделает CALL 0x12345678

А тебе точно именно jmp нужен? Зачем? Может CALL сойдёт или даже лучше?

Исправление firkax, :

Страницу надо смапить как исполняемую (man mmap, PROT_EXEC). Впрочем, если у тебя i386 без PAE и/или старый проц то можно это не делать т.к. там этот флаг не проверяется.

Собственно вызов кода так:

typedef void (*void_func)(void);

....
   ((void_func)0x12345678)();

Сделает CALL 0x12345678

А тебе точно именно jmp нужен? Зачем? Может CALL сойдёт или даже лучше?

Исходная версия firkax, :

Страницу надо смапить как исполняемую (man mmap, PROT_EXEC).

Собственно вызов кода так:

typedef void (*void_func)(void);

....
   ((void_func)0x12345678)();

Сделает CALL 0x12345678

А тебе точно именно jmp нужен? Зачем? Может CALL сойдёт или даже лучше?