什么是shellcode:
1996年,Aleph One在Underground发表了著名论文《SMASHING THE STACK FOR FUN AND PROFIT》,其中详细描述了Linux系统中栈的结构和如何利用基于栈的缓冲区溢出。在这篇具有划时代意义的论文中,Aleph One演示了如何向进程中植入一段用于获得shell的代码,并在论文中称这段被植入进程的代码为“shellcode”。 后来人们干脆统一用shellcode这个专用术语来通称缓冲区溢出攻击中植入进程的代码。这段代码可以是出于恶作剧目的的弹出一个消息框,也可以是出于攻击目的的删改重要文件、窃取数据、上传木马病毒并运行,甚至是出于破坏目的的格式化硬盘等等。请注意本章讨论的shellcode就是这种广义上的植入进程的代码,而不是狭义上的仅仅用来获得shell的代码。
那到底什么是shellcode:
本人理解:
shellcode就是一段不依靠pe加载器加载和处理的(不需要重定位表、不需要导入表、不需要数据段);在任意进程都空间都可以执行的一段二进制代码。
编写shellcode的难点在哪里:
1.代码的自定位。
2.所用到的数据的处理。
3.获取kernel32的基址。
4.使用的API的处理
1.使用的开发语言:C/C++ ASM
shellcode是一段短小且功能强大的二进制数据,所以短小也是他的一个特点,所以在语言选择上要使用汇编语言。
2.IDE编辑器: 既然是写汇编代码最好是用汇编类的IDE例如RadAsm,RadAsm功
能强大,有汇编关键字的联想和着色功能,但事实上高级语言的IDE也支持汇编语言的编译,只需要适当的设置或者使用适当的语法。我们写这段shellcode虽然用汇编语言,但我们仍然使用vidua