对于“shellcode”和“exploit”的解释

      最近在浏览“邪恶八进制”的论坛的时候看到了一个朋友的帖子“如何编译shellcode”。大家讨论的热情比较高,但我发现有一部分人实际上对于shellcode的理解还是不够深刻的。

      首先“编译shellcode”这个说法就有点不合适。
      shellcode其实在编写的过程中就要让自己的大脑充当编译器了,而实际上shellcode是不需要编译的,比如说如果你记得机器码,那么随便打开一个pe文件,然后直接编辑代码段的HEX值写入弹窗的机器码(shellcode),完事保存,只要你写的没错误就可以直接运行生效了。可见shellcode是cpu可以直接识别的数据,它并不需要被再次编译,也就是说shellcode实际上是已经被编译好了的代码!
      理解shellcode这个词要分2部分,一部分是“shell”,标明它的用途;另一部分是“code”,标明它的性质。

     

      另外很多高手也曾经说过“编译shellcode”这样的说法,这其实是指代了exploit,shellcode是作为exploit程序的数据部分一起被编译起来了。

      对于exploit程序,我的解释是:指一种专门利用漏洞对计算机系统进行入侵的程序。它往往包含shellcode,但也有不包含shellcode的。

      希望我解释清楚了,呵呵,欢迎大家讨论。

你可能感兴趣的:(shell,hex,编译器)