操作系统问题,关于函数地址空间
資深大佬 : ng29 26
如题, 假如进程里有函数 fun1, 再进程启动时,malloc 一页内存,拷贝 fun1 的内容到 malloc 出来的内存,称拷贝后的函数为 fun2, 调用 fun1 和 fun2 使用 不同的参数, 问 fun2 是不是可以正常执行?
考虑 fun2 是 fun1 改变了位置,如果有 jmp 指令是位置相关的,此时可不可以调整指令和字节数使得 fun2 可以正常运行直到 ret 返回。
大佬有話說 (33)
如题, 假如进程里有函数 fun1, 再进程启动时,malloc 一页内存,拷贝 fun1 的内容到 malloc 出来的内存,称拷贝后的函数为 fun2, 调用 fun1 和 fun2 使用 不同的参数, 问 fun2 是不是可以正常执行?
考虑 fun2 是 fun1 改变了位置,如果有 jmp 指令是位置相关的,此时可不可以调整指令和字节数使得 fun2 可以正常运行直到 ret 返回。
两个线程运行同一段代码, 入参不一样?
线程本身的栈数据是线程自己管理的, 而运行什么代码是完全另外一块空间存放, 一般同一段代码内存里面只会有一份, 操作系统会复用的
如果有 RIP relative addressing 的话就比较麻烦