我想更改程序计数器(指令指针)的内容。我认为通过覆盖 C 中的系统信号处理程序,我可以在系统堆栈帧中获取指针。从那里我可以得到函数的返回地址并改变它。
但是,我得到了堆栈中的指针,但我不知道返回地址在堆栈帧上的确切存储位置。
void signal_handler(int signal){
char* ptr = (char*) & signal;
// As, signal is stored on the paramter list of the stack,
// I get the address in the current stack frame. From , here
// I want to change the return address(that is stored in the
// current stack frame).
}