gpt4 book ai didi

c - 可靠的 shellcode 测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:38 26 4
gpt4 key购买 nike

像下面这样的代码应该能够“测试”shellcode,即执行它。

char shellcode[] = "...";

int main(int argc, char **argv)
{
int (*func)();
func = (int (*)()) shellcode;
(int)(*func)();
}

但是,当我尝试使用此类示例时发现,代码似乎在不可执行的内存中执行,因为它在 shellcode 的第一条指令处收到段错误。

如果我将 shellcode 声明更改为 #define,我就能让 shellcode 执行。然而,当 shellcode 试图写入自己的内存时,它会停止(这个 shellcode 假设它是在堆栈上执行的)。

所以我的问题很简单,测试假定可执行(显然)和可写内存的 shellcode 的最简单可靠的方法是什么?如果我在堆栈或堆上分配代码并尝试跳转到它,我只会遇到 NX 位保护并再次失败。现在显然我可以禁用 NX 位,但是没有更好的方法来进行此测试吗?

最佳答案

分配一个可写和可执行的内存区域(例如使用 mmapmprotect)并将您的代码放置在那里,然后将其称为您的 main 确实如此。在 W^X、PaX 等可执行空间保护的情况下,您可以首先使您的内存区域可写以复制 shellcode,然后仅可执行以执行它,但您的里程可能会根据保护措施的不同而有所不同.

关于c - 可靠的 shellcode 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com