shellcode编写
2012-10-13 22:35
211 查看
在VC中调试运行程序,比如输出一个字符串,看到反汇编以及机器码如下:
所以可以编写我们自己的shellcode,(以后自己写一个根据程序直接生成shellcode的工具,实现自动化的就能方便多了。)
开始编写:
输出:
9: printf("str的地址:0X%p\n",str); //0X00414420 00401368 8B F4 mov esi,esp 0040136A 68 20 44 41 00 push offset str (00414420) 0040136F 68 1C 30 41 00 push offset string "str\xb5\xc4\xb5\xd8\xd6\xb7:0X%p\n" (0041301c) 00401374 FF 15 A4 50 41 00 call dword ptr [__imp__printf (004150a4)] 0040137A 83 C4 08 add esp,8 0040137D 3B F4 cmp esi,esp 0040137F E8 78 FD FF FF call _chkesp (004010fc)
所以可以编写我们自己的shellcode,(以后自己写一个根据程序直接生成shellcode的工具,实现自动化的就能方便多了。)
开始编写:
#include <stdio.h> char str[] = "这是shellcode的实例:\n"; void main( void ) { printf("str的地址:0X%p\n",str); //0X00414410 char shell_code[]= { 0X8B , 0XF4 , 0X68 , 0X10 , 0X44 , 0X41 , 0X00 ,//0X68 , 0X1c , 0X30 , 0X41 , 0X00 , 0XFF , 0X15 , 0XAC , 0X50 , 0X41 , 0X00 , // 0X83 , 0XC4 , 0X04 , // 0X3B , 0XF4 , // 0XE8 , 0X05 , 0X01 , 0X00 , 0X00, // 0XEB , 0X70, 0X10, 0X40, 0X00 ,//0X00401070是HERE的地址 0X6A , 0X01 , //push 1 0XFF , 0X15 , 0XBC , 0X50 , 0X41 , 0X00 //call dword ptr [__imp__exit (004150bc)] }; ((void(_stdcall*)())&shell_code[0])(); //goto HERE; HERE: getchar(); //exit(1); //system("pause"); return ; }
输出:
str的地址:0X00414410 这是shellcode的实例: Press any key to continue
相关文章推荐
- ShellCode编写历程
- 编写便于打印的Shellcode
- PWN-shellcode获取与编写
- ShellCode编写实例
- Delphi是最适合编写ShellCode的工具
- 编写变形的shellcode[原理篇]
- 编写ShellCode
- 使用windows系统调用编写shellcode
- 如何编写并编译一个shellcode(linux)
- 编写变形的shellcode[实战篇]
- 缓冲区溢出分析第04课:ShellCode的编写
- 编写通用内核shellcode
- Shellcode的原理及编写http://blog.csdn.net/maotoula/article/details/18502679
- linux编写shellcode
- 缓冲区溢出分析第05课:编写通用的ShellCode
- 如何编写一个shellcode
- 关于Windows下ShellCode编写的一点思考
- 如何编写绑定端口shellcode
- 关于Windows下ShellCode编写的一点思考
- 溢出的原理及 shellcode 编写