问题描述
我想在 linux 上更改程序的起始堆栈地址。
我检查了一些内核源代码,发现了
extern void start_thread(struct pt_regs *regs,unsigned long new_ip,unsigned long new_sp);
但我没有找到从外部(内核)影响它的方法。
理想情况下,我的操作系统 (debian) 的一些配置将是完美的。但我不知道该怎么做...
我知道一些与堆栈相关的函数,如 setrlimit() 和 ulimit(),但这并不能解决问题。
gdb 可能有一些这样的功能吗? (如果程序在gdb里面运行就没有问题。)
既然是自己写的程序,我也想过在程序启动的时候做一个大的malloc,把esp/ebp改成指向它。但这并不理想。
如果有人知道 Linux 进程创建的一些黑暗特性就好了!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)