C代码说明

有人可以帮我解释一下这些代码吗?

char code[] = "paste your shellcode here"; int main(int argc, char **argv) { int (*func)(); func = (int (*)()) code; (int)(*func)(); } 

您在此处获得的代码是如何创建指向任意数据片段的函数指针然后调用它的示例。

在一个非常简单的意义上,我们分配一个字节数组(char []),二进制shellcode有效负载被粘贴到其中,通常作为转义的hex值。

这一行, int (*func)(); ,声明一个返回整数的函数指针。 这是典型的,因为大多数代码都会在EAX中返回某种基于整数的退出代码。

这一行, func = (int (*)()) code; 将字节数组代码转换为函数指针,并将其分配给’func’,即先前定义的函数指针。

这一行(int)(*func)(); 实际上调用shellcode,将执行转移到字节数组中的第一个内存位置。

这段代码实际上非常有用。 你不会期望它被用来开发系统; 相反,此代码用于在开发期间测试,调试和以其他方式试验shellcode。 使用它,您只需粘贴您要测试的shellcode,然后执行它。 这使您可以保持shellcode非常简单,不包括完整独立可执行文件的所有典型要求,但仍允许您对其进行测试,而无需确定要利用的漏洞。 通过这种方式,您可以了解代码是否正常运行,而不会被尝试利用实际代码时出现的各种分散注意力。

你有没有试过谷歌搜索“粘贴你的shellcode” ? 返回的第一秒(现在这个问题是第一个LOL)结果是Corelan Team的Exploit编写教程第9部分:Win32 shellcoding简介,其中全部解释了:

shellcode实验室

简而言之,它只是一个用于测试shellcode的小型实用程序C应用程序,稍后将在本教程的后续部分中用于此目的。 其余部分在教程中进行了解释。