shellcode的初步编写

本文介绍了一个简单的Shellcode编写实例,通过具体的代码展示了如何利用系统调用来执行命令。文中提供了两种不同的Shellcode实现方式,并附带了必要的注释帮助理解。
部署运行你感兴趣的模型镜像
  1 //系统环境:xpsp2+Microsoft Visual Studio .NET 2003
  2 //这是我学习中写出来的。算是读书笔记一类的吧!
  3 //时间 20051203
  4 //内容是关于shellcode的初步编写。此时我的系统函数地址是0xC7,0x93,0xBF,0x77。也就是77BF93C7
  5 作者:emissary
  6 
  7 
  8 //这两天。听说当兵的那些人走了,不知道龚哲她是否也走了。
  9 //再放一表上来。以后可能会用到。
 10 /*
 11 61h        a
 12 62h        b
 13 63h        c
 14 64h        d
 15 65        e
 16 66        f
 17 67        g
 18 68        h
 19 69        i
 20 6a        j
 21 6b        k
 22 6c        l
 23 6d        m
 24 6e        n
 25 6f        o
 26 70        p
 27 71        q
 28 72        r
 29 73        x
 30 74        t
 31 75        u
 32 76        v
 33 77        w
 34 78        x
 35 79        y
 36 7a        z
 37 */
 38 
 39 #include <stdio.h>
 40 #include <windows.h>
 41 #include <winbase.h>
 42 
 43 //这个是网上的一代码。和我写的不一样。环境不同。但两个都能用。
 44 char shellcode_command[] = {
 45 0x8B,0xE5, /*mov esp, ebp */
 46 0x55, /*push ebp */
 47 0x8B,0xEC, /*mov ebp, esp */
 48 0x83,0xEC,0x0C, /*sub esp, 0000000C */
 49 0xB8,0x63,0x6F,0x6D,0x6D, /*mov eax, 6D6D6F63 */ 
 50 0x89,0x45,0xF4, /*mov dword ptr [ebp-0C], eax*/
 51 0xB8,0x61,0x6E,0x64,0x2E, /*mov eax, 2E646E61 */ 
 52 0x89,0x45,0xF8, /*mov dword ptr [ebp-08], eax*/
 53 0xB8,0x63,0x6F,0x6D,0x22, /*mov eax, 226D6F63 */ 
 54 0x89,0x45,0xFC, /*mov dword ptr [ebp-04], eax*/
 55 0x33,0xD2, /*xor edx, edx */
 56 0x88,0x55,0xFF, /*mov byte ptr [ebp-01], dl */
 57 0x8D,0x45,0xF4, /*lea eax, dword ptr [ebp-0C]*/
 58 0x50, /*push eax */
 59 0xB8,0xC7,0x93,0xBF,0x77, /*mov eax, system地址改成了我本机的。 */ 
 60 0xFF,0xD0 /*call eax */
 61 };
 62 
 63 
 64 //这个是我自己搞出来的code
 65 char shellcode_cmd[] ={
 66 0x8B,0xE5,
 67 0x55,
 68 0x8B,0xEC,       
 69 0x33,0xFF,
 70 0x57,
 71 0x83,0xEC,0x08,
 72 0xC6,0x45,0xF8,0x63,
 73 0xC6,0x45,0xF9,0x6D,
 74 0xC6,0x45,0xFA,0x64,
 75 0xC6,0x45,0xFB,0x2E,
 76 0xC6,0x45,0xFC,0x65,
 77 0xC6,0x45,0xFD,0x78,
 78 0xC6,0x45,0xFE,0x65,
 79 0x8D,0x45,0xF8,
 80 0x50,
 81 0xB8,0xC7,0x93,0xBF,0x77,
 82 0xFF,0xD0
 83 };
 84 //typedef void (*MYPROC)(LPTSTR);  //定义函数指针
 85 
 86 int main()
 87 {
 88 //HINSTANCE LibHandle;
 89 //MYPROC ProcAdd;
 90 //LibHandle = LoadLibrary("msvcrt.dll");
 91 //ProcAdd = (MYPROC) GetProcAddress(LibHandle,"system"); //查找System函数地址
 92 //(ProcAdd) ("cmd.exe");  
 93 //return 0;
 94 LoadLibrary("msvcrt.dll");
 95 ((void(*)(void))&shellcode_cmd)();//两个都可以运行。一个是command,一个是cmd。
 96 return 0;
 97 
 98 //__asm
 99 //{
100 //mov esp,ebp ; 
101   // push ebp ; 
102    //mov ebp,esp ;    把当前esp赋给ebp 
103 //xor edi,edi ;
104   // push edi ;压入0,esp-4,; 作用是构造字符串的结尾字符。 
105    //sub esp,08h ;    这个我不知道是什么意思来着。
106    //mov byte ptr [ebp-08h],63h ;  c
107    //mov byte ptr [ebp-07h],6dh ;  m
108    //mov byte ptr [ebp-06h],64h ;  d
109    //mov byte ptr [ebp-05h],2Eh ;  .
110   // mov byte ptr [ebp-04h],65h ;  e
111   // mov byte ptr [ebp-03h],78h ;  x
112   // mov byte ptr [ebp-02h],65h ;  e一个一个生成串
113  //  lea eax,[ebp-08h] ;   
114 //   push eax ;    串地址作为参数入栈
115   // mov eax, 0x77BF93C7 ;
116 //   call eax ;     call System函数的地址
117 //}
118 } 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值