总字符数: 7.15K

代码: 1.32K, 文本: 1.76K

预计阅读时间: 13 分钟

编译器环境配置

Visual Studio

选中ConsoleApplication1右键—>属性

关闭调试信息

属性—>链接器—>调试—>生成调试信息—>否

关闭优化

如果不关闭这些信息的话,上传到云沙箱则会泄露很多信息

隐藏控制台

属性隐藏

mainCRTStartup

代码隐藏
1
#pragma comment(linker,"/subsystem:\"windows\" / entry:\"mainCRTStartup\"")//不显示窗⼝

静态编译

微软在制作Windows系统时,为了提高代码的复用率,提出了⼀个动态链接库的概念(DLL).DLL提供了一种方法,使程序在运行时能够调用不属于其本身的可执行代码的函数。

如此一来,如果我们的程序在运行时需要调用不属于其本身的函数,而发布的程序中又没有包含这些函数库,便会出现错误。

解决的办法

  1. 将调用到的所有函数库、以及编译生成的程序⼀起提供给使⽤者。

  2. 将调用到的所有函数在编译时⼀同打包进生成的程序中。

在这两种方法中,后者通常便称为”静态编译”

项目—>配置属性—>C/C++—>代码生成—>运行库—>选择/MT

关闭生成清单文件

常规—>详细输出—>否

清单工具—>输入和输出—>嵌入清单—>否

关闭SDL检查

禁用安全检查

关闭生成调试信息

语言

添加图标

资源文件—>添加—>资源

编译并查杀

Hello World代码也会报毒,这个就和杀毒软件的原理有关了.比如icon、数字签名等

MinGW

解压x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z,然后将bin目录设置环境变量

1
2
3
4
5
gcc ConsoleApplication1.c -mwindows -o test.exe
# 通过 -mwindows 参数屏蔽黑窗口

# linux下编译exe
x86_64-w64-mingw32-gcc hello.c -o hello.exe -static

注意 : 不同的编译器对代码的要求不一样, 报错记得chatgpt分析原因

1
2
gcc编译c源码文件(.c)
g++编译cpp源码文件(.cpp)

Intel C++编译器

相比于vs默认的编译器,intel c++编译器编译的exe特征更少、报毒更低,在代码层面免杀时在VT上可

以很轻松达到0查杀。

  1. 安装vs2019或以上版本

  2. 下载intel安装包

双击w_BaseKit_p_2023.0.0.25940_offline.exe运行, 安装 ( 全部安装完成比较大 )

安装后会自动删除

等待下载,然后勾选I accept the terms of the license agreement,点击下面的Customize

选择需要安装的项,全部安装需要21GB,选完后点击下面的→按钮进入下一步,然后勾选要为哪个vs安装intel,点击下面的→按钮进入下一步

选择I do NOT consent to the collection of my information,即我不同意收集我的信息,点击install按钮

退出Visual Studio 2022 Preview.以下警告为:”安装完成后需要重启”,继续点击install安装.

开始安装,等到十几分钟.

点击Finish.重启系统.打开vs属性页,可以看到intel C++编译器已经有了

General—>Warning Level—>Turn Off All Warnings(/W0)

Code Generation—>Security Check—>Disable Security Check

exe处理

针对360报毒”QVM”问题,比较好的处理方式为数字签名及加资源进行Bypass

加签名

Sigthief

1
2
3
4
5
6
7
# python38 sigthief.py -i 签名文件 -t 样本.exe -o 输出.exe

D:\Penetration\BypassAV\SigThief-master>python38 sigthief.py -i sign_exe/360.exe -t sign_exe/beacon.exe -o 360_s.exe
!! New Version available now for Dev Tier Sponsors! Sponsor here: https://github.com/sponsors/secretsquirrel
Output file: 360_s.exe
Signature appended.
FIN.

自签名

自签名对Windows Defener效果好.

1
2
3
4
5
6
7
8
9
10
11
12
13
# 第一次创建签名文件,中间需要输入密码
makecert -r -pe -n "CN=Microsoft Windows Production PCA 2011, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv Microsoft.pvk Microsoft.cer

certutil -user -addstore Root Microsoft.cer

makecert -pe -n "CN=Microsoft Windows Production PCA 2011, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" -a sha256 -cy end -sky signature -ic Microsoft.cer -iv Microsoft.pvk -sv Microsoft.pvk Microsoft.cer

pvk2pfx -pvk Microsoft.pvk -spc Microsoft.cer -pfx Microsoft.pfx

# 通过自签名文件添加到exe
signtool sign /f Microsoft.pfx /t http://timestamp.digicert.com /fd SHA256 要签名的.exe

# 或者运行start.bat,直接拖拽exe即可

加资源

Resource Hacker

文件—>打开—>操作 –> 从资源文件添加—>选择样本文件.可全选或自选—>导入

加壳

UPX

upx是一款压缩壳, 针对exe文件进行代码压缩, 压缩后的文件体积会小于原始文件.

UPX 提供了不同的压缩级别,级别越高,压缩率越大,但压缩和解压缩的速度可能会减慢。压缩级别范围是从 1 到 9。数字越高,表示压缩级别越高,对文件大小的减小也越明显

1
upx -9 beacon.exe

Shielden

Safengine Shielden 软件保护加壳工具是一款能够帮助用户对自己电脑上各种文件程序进行加壳免杀的Windows操作平台功能性保护工具,它可以帮助用户对自己需要进行保护的文件程序进行加壳处理拥有强大的虚拟机代码保护系统,能够让你的文件程序无需担心被逆向工程破解入侵,拥有专业级的加密操作,保护你的文件不被恶意修改。

Vmp

MProtect Software 3.5是一款给软件增加防护的工具。俗称vmp加壳。它能够帮你给软件加一层防护。防止被破解反编译。

打开选择exe文件, 然后运行

文件的熵值

Entropy(熵)能被用于衡量系统的混乱程度,熵值越大,说明混乱程度越高。熵也被用于检测PE文件病毒, 一般一些合法软件的熵值在 4.8 - 7.2 之间

有阶段样本

无阶段样本