【发布时间】:2014-04-30 22:11:36
【问题描述】:
我尝试在 C 的缓冲区中构建一个函数。 用gdb我可以翻译
push rbp
mov rbp,rsp
(...)
leave
ret
到
0x55
0x48 0x89 0xe5
(...)
0xc9
0xc3
于是我写了一段C代码:
int main()
{
char buffer[]={0x55,0x48,0x89,0xe5,0xc9,0xc3};
void (*j)(void)=buffer;
j();
}
但我的程序似乎在指令“push rbp”(缓冲区中的 0x55)处崩溃 你知道为什么吗?
【问题讨论】:
-
您需要提供很多更多信息。架构和操作系统是什么?数据空间是否可执行?你需要做一些特别的事情来确保缓存的一致性吗?