21,458
社区成员
发帖
与我相关
我的任务
分享
const char *code = "\xB8\x01\x00\x00\x00";//mov eax, 1
void main()
{
__asm
{
lea eax, code;
call eax;
}
}
const char *code = "\xB8\x01\x00\x00\x00\xc3";//mov eax, 1; ret;
void main()
{
__asm
{
mov eax, code;
call eax;
}
}
其实调试的时候确实是能看到即将执行的语句就是 mov eax, 1
但是一执行就会崩溃:
0x011458A8 处有未经处理的异常(在 shellcode.exe 中): 0xC0000005: 执行位置 0x011458A8 时发生访问冲突。
const char *code = "\xB8\x01\x00\x00\x00\xc3";//mov eax, 1; ret;
void main()
{
__asm
{
lea eax, code;
mov eax, [eax];
call eax;
}
}
还是会崩溃,出错跟一开始的类似
const char *code = "\xB8\x01\x00\x00\x00";//mov eax, 1
void main()
{
__asm
{
mov eax, code;
call eax;
}
}
这样可以保证你执行到 mov eax, 1 但之后就可能崩溃了,需要返回。