我写了一个简单的ASM文件并在我编写的C文件中运行它。结果我遇到了一个段错误。但是,当我执行已编译的ASM文件时,没有错误发生。
我正在运行64位,并使用32位shellcode。这是问题吗?
不可能,因为我使用下面的代码却一直得到段错误:
似乎可以使用这一行代码代替那三行代码。
我正在运行64位,并使用32位shellcode。这是问题吗?
不可能,因为我使用下面的代码却一直得到段错误:
char shellcode[] = "\x90"; //simple NOP in ASM
int main(int argc, char **argv)
{
int (*ret)();
ret = (int (*)()) shellcode;
(int)(*ret)();
}
请问有人能运行这个程序并告诉我是否报分段错误吗?我已经尝试了3到4个其他的C文件,但都无法正常工作。
更新:
((void(*)(void))code)();
似乎可以使用这一行代码代替那三行代码。
((void(*)(void))shellcode)();
是有效的。我对指针强制转换成函数语法感到困惑。 - Goodies