小编JKS*_*JKS的帖子

将堆栈移动到特定位置

如何将我的堆栈移动到特定的虚拟地址?例如,我希望我的堆栈为40960大,并从地址0x355480开始.我尝试使用setcontext,但我想知道是否有"标准"方法:

ucontext_t cont;
bool flag = false;
getcontext (&cont);
if(!flag){
  void* a = mmap((void*)0x34B000, 81920, PROT_EXEC | PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
  cont.uc_mcontext.gregs[REG_ESP] = 0x355000;
  flag = true;
  setcontext(&cont);
}
Run Code Online (Sandbox Code Playgroud)

c linux x86 stack

5
推荐指数
1
解决办法
96
查看次数

标签 统计

c ×1

linux ×1

stack ×1

x86 ×1