起因
前几天在Github上随便找了个开源的shellcode加载器项目用 是使用Go编写的
这里并没有使用os/exec包或者类似的API 而是直接使用syscall调用Windows API
改了改编译运行发现使用Go编写的命令行程序在Windows11下会弹出命令行窗口GUI并且无法隐藏
解决方案
首先获取控制台窗口句柄
// 获取当前窗口句柄
kernel32 := syscall.NewLazyDLL("kernel32.dll")
getConsoleWindow := kernel32.NewProc("GetConsoleWindow")
hwnd, _, _ := getConsoleWindow.Call()
这里使用GetConsoleWindow
函数返回当前进程的控制台窗口的句柄
如果返回的句柄为非零值说明存在窗口
// 隐藏窗口
if hwnd != 0 {
user32 := syscall.NewLazyDLL("user32.dll")
showWindow := user32.NewProc("ShowWindow")
const SW_HIDE = 0
showWindow.Call(hwnd, SW_HIDE)
}
然后使用 ShowWindow
函数更改窗口的可见状态
编译命令记得:-ldflags="-H windowsgui"
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
- 最新
- 最热
只看作者