免杀之浅谈shellcode加载器

就当作自己浅学这个,阿巴阿巴,废物的一天

shellcode特点

  • 可以直接在内存中运行,不需要一个完整的pe结构,简单来说,内存能执行就能运行,没有啥依赖的“生存环境”

  • 没有标准pe头(pe头里面有相应的函数名词地址)

  • shellcode不能静态(就是不能存在磁盘里,就比如exe啥的)

简单来说,这个就是一个无意义的变量。以下是利用msf生成了一个shellcode

它就是一个变量!!!

既然是一个变量,肯定要运行,但是没有完整的pe头,不能直接像exe这种程序直接运行,所以需要一个加载器!!!

加载器是怎么做一个加载的?

简单来说:就是将数据编程代码的过程就是加载器的过程

还是以上的shellcode,本地生成的,用的是Visual Studio

VirtualAlloc:申请一个虚拟地址的空间,可以说为虚拟空间到物理空间的映射,简单来说,在虚拟空间操作,物理空间就会自动的分配物理地址。

在这里也就是利用这个参考物“虚拟空间”,设置内容,属性。

  1. 设置一个指针类型的,也可以是别的,这里设置成NULL,这样系统会自动的去分配一个空间区域。

  2. 设置内容长度,这里是利用了一个shellcode的变量,c++就是sizeof(变量名)来计算一个长度/大小(如果是python的话就是len)。

  3. 就是一个类型属性,主要是内存分配的类型属性,可以去百度的,这里设置了两个值,去了解一下。

  4. 设置保护属性,去理解成文件属性也行,但这里的属性是内存属性,一般都是设置成可读可写可执行也就是page_executr_readwrite.


这样就是设置好虚拟地址空间的内容属性

学习就是让人劳累啊

rtlmovememory函数作用就是将源内存块的内容复制到目的内存块。

rtlmovememory(目的内存块,源内存块,长度)

还不懂上网百度

这时候这个shellcode就已经可以执行了。


接下来就直接去线程运行就行了

这里大致写了一个线程运行(基础知识:程序运行起来会在本地起一个进程,一个进程会有很多的线程。)

总结

ok,以上就是一个简单基础的加载器,原理都差不多,内容---->执行。

运行本地的shellcode,成功使用上线

果然还是适合基础玩家,总的来说,shellcode要去内存中执行.....阿巴阿巴

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值