C代码说明

时间:2013-07-13 23:32:39

标签: c shellcode

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

char code[] = "paste your shellcode here";

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

2 个答案:

答案 0 :(得分:5)

这里的代码是一个如何创建指向任意数据片段的函数指针然后调用它的示例。

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

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

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

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

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

答案 1 :(得分:1)

您是否尝试使用Google搜索 "paste your shellcode here" 第一个秒(现在这个问题是第一个LOL)返回的结果是Corelan Team's Exploit writing tutorial part 9: Introduction to Win32 shellcoding,其中全部解释了:

shellcode lab

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