微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在自定义地址启动/执行具有初始堆栈的进程

如何解决在自定义地址启动/执行具有初始堆栈的进程

我想在 linux 上更改程序的起始堆栈地址。

我检查了一些内核源代码,发现了

extern void start_thread(struct pt_regs *regs,unsigned long new_ip,unsigned long new_sp);

来自 https://github.com/torvalds/linux/blob/29c395c77a9a514c5857c45ceae2665e9bd99ac7/arch/x86/include/asm/processor.h

但我没有找到从外部(内核)影响它的方法

理想情况下,我的操作系统 (debian) 的一些配置将是完美的。但我不知道该怎么做...

我知道一些与堆栈相关的函数,如 setrlimit() 和 ulimit(),但这并不能解决问题。

gdb 可能有一些这样的功能吗? (如果程序在gdb里面运行就没有问题。)

既然是自己写的程序,我也想过在程序启动的时候做一个大的malloc,把esp/ebp改成指向它。但这并不理想。

如果有人知道 Linux 进程创建的一些黑暗特性就好了!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。