-
背景知识
本文介绍Linux环境下正在运行进程的函数替换,不改变该进程的可执行文件内容。通过使用汇编指令JMP完成运行中进程的函数替换。为了更好地理解本文所述内容,我们需要了解以下几个知识点:
1) 了解汇编JMP指令实现无条件跳转,远跳转,近跳转;
-- E9:本文所用
-- EA:
-- EB:
2) 汇编指令JMP与call的区别;为什么不能使用call来实现本文所述功能?
-- call指令跳转前会将下一条语句入栈,与ret指令结合完成函数调用
-- jmp指令直接修改指令寄存器IP的值
3) 如何控制一个正在运行的进程,并修改该进程代码空间的内容?
-- 想想Linux中的GDB;
-- 系统调用ptrace;
4) 补码的表示,负数的补码是多少?正数的补码是多少?