免入土(三)编译工具配置
一、前言
本文主要介绍的内容是关于 Visual Studio 配置和对程序的一些处理,主要是为了防止生成的免杀木马容易被溯源或者被查杀软件查杀。
二、Visual Studio 配置
- 生成 release 的时候使用 MT,不要使用多线程 DLL(/MD)
- 关闭生成编译信息(防止溯源定位)
如果不关闭该选项的话可能会导致生成的 exe 文件中包含编译路径和相关计算机的用户名
若未关闭上述设置则会出现如上图的调试信息,可定位编译生成的.pdb
文件的位置,泄露物理路径。
三、程序黑框处理
3.1 pragma 预处理指令
1 |
|
3.2 API 隐藏窗口
- FreeConsole 函数
1 |
|
- GetForegroundWindow + ShowWindow 函数
1 |
|
- 创建子进程
1 |
|
使用该方式隐藏窗口效果等同于 FreeConsole 函数,启动窗口一闪而过,但是隐蔽方式比 FreeConsole 函数要好,但是在某些杀软的复杂环境下可能会阻止进程创建子进程从而导致程序执行失败。
3.3 WinMain()
- hInstance:当前实例的句柄。
- hPrevInstance:先前实例的句柄,在现代的Windows系统中这个参数总是NULL。
- lpCmdLine:命令行参数,是一个指向以空字符结尾的字符串的指针。
- nCmdShow:指定窗口应该以何种形式显示。
1 |
|
四、总结
- 对于 visual studio 生成的程序处理,不要保存调试信息,以防反编译溯源本人。
- 对于免杀马执行产生黑框的情况,可以采取 3 种方式进行解决,分别为 Pragma 启动 windows 子系统解决、FreeConsole()函数或GetForegroundWindow 函数解决黑框、通过 WinMain()将黑框隐藏。
免入土(三)编译工具配置
http://candyb0x.github.io/2025/06/12/免入土(三)编译工具配置/