go生成隐藏cmd窗口exe

用cs veil 生成木马的时候,将go的源码进行二次改动,而后进行编译,很顺利,过了各种杀软UAC成功回连。

但是build生成的木马,运行的时候,cmd窗口就杵在那儿,这肯定是不行的。
刚开始,觉得是veil没有输出了 "守护进程"的代码,于是找了半天go daemon的代码,效果不是很理想。
想了想,veil不至于藏代码,那么可能是用c exe生成了go exe的子进程。
转头一想,veil是python的开源的,不管它做了啥,看看就好了。打开veil的源码看看。

Veil/tools/evasion/evasion_common/outfile.py中
205行,编译的命令和我的简单的编译命令"go build xxx.go"长得不太像。

正文

go build ldflags 设定编译参数

参数用法

https://golang.org/cmd/link/

go build -ldflags "-s -w -H=windowsgui"

-s 省略符号表和调试信息
-w Omit the DWARF symbol table 省略DWARF符号表
-H windowsgui  不打印信息到console (On Windows, -H windowsgui writes a "GUI binary" instead of a "console binary."),就不会有cmd窗口了

完美,木马守护进程形式运行也解决了

原文地址:https://www.cnblogs.com/huim/p/12585491.html