作为linux程序集中shellcode的一部分,我创建了一个egghunter shellcode,它使用Access系统调用在内存中查找shellcode并执行它。这在ubuntu 12.04 VM上完美运行,但在我的“普通”ubuntu 18.04上使用它时它不起作用。
这是基于以下事实:当无法访问内存的一部分时,访问系统调用应返回EFAULT错误。这通常会将0x2f返回到al寄存器(rax设置为0xfff ...... 2f)。这适用于ubuntu VM,但在我的普通机器上它返回0xea(rax设置为0xfff .... ea)。
我假设这是另一个错误,如果我知道这是什么错误我应该能够修复我的shellcode。但我找不到它的意思。我读了unistd.h和关联文件,但什么都没找到。