今天突然想到见过别人用vc写的木马 下载者之类大小都只有 几K (没用过pe压缩程序)

我写个hello world用 release + minimize size 编译都有30++k

于是google寻求解答 搜索了一些相关信息 有效的做个总结如下
#include <windows.h>

//自定义加载的库
#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"msvcrt.lib")

//自定义函数入口
#pragma comment(linker, "/ENTRY:EntryPoint")

//自定义对齐方式
#pragma comment (linker, "/ALIGN:512")
#pragma comment(linker, "/FILEALIGN:512")

 // 优化选项
#pragma comment(linker, "/opt:nowin98")
#pragma comment(linker, "/opt:ref")
#pragma comment (linker, "/OPT:ICF")

// 合并区段
#pragma comment(linker, "/MERGE:.rdata=.data")
#pragma comment(linker, "/MERGE:.text=.data")
#pragma comment(linker, "/MERGE:.reloc=.data")

 

int   WINAPI   WinMain( HINSTANCE hInstance,  
         HINSTANCE hPrevInstance,  
         LPSTR     lpCmdLine,  
         int       iCmdShow ) ;    

void   EntryPoint()    
{    
 ExitProcess(WinMain(GetModuleHandle(NULL), NULL,
                  GetCommandLine(), SW_SHOWNORMAL));    







/////////////////////////////////////////////////////////////////////////////////////////////////
写了下段代码编译后1K
用peid查看不是vc6.0 而是First Publisher Graphics format *
也不了解pe减小vc编译文件体积  只能先这样了 最近时间要学习下相关的知识

 1减小vc编译文件体积#include <windows.h>
 2减小vc编译文件体积
 3减小vc编译文件体积#pragma comment(lib,"kernel32.lib")
 4减小vc编译文件体积#pragma comment(lib,"shell32.lib")
 5减小vc编译文件体积#pragma comment(lib,"msvcrt.lib")
 6减小vc编译文件体积
 7减小vc编译文件体积#pragma comment(linker, "/ENTRY:EntryPoint")
 8减小vc编译文件体积
 9减小vc编译文件体积#pragma comment (linker, "/ALIGN:512")
10减小vc编译文件体积#pragma comment(linker, "/FILEALIGN:512")
11减小vc编译文件体积
12减小vc编译文件体积#pragma comment(linker, "/opt:nowin98"
13减小vc编译文件体积#pragma comment(linker, "/opt:ref"
14减小vc编译文件体积#pragma comment (linker, "/OPT:ICF")
15减小vc编译文件体积
16减小vc编译文件体积#pragma comment(linker, "/MERGE:.rdata=.data")
17减小vc编译文件体积#pragma comment(linker, "/MERGE:.text=.data")
18减小vc编译文件体积#pragma comment(linker, "/MERGE:.reloc=.data")
19减小vc编译文件体积
20减小vc编译文件体积
21减小vc编译文件体积
22减小vc编译文件体积int   WINAPI   WinMain( HINSTANCE hInstance,   
23减小vc编译文件体积                        HINSTANCE hPrevInstance,   
24减小vc编译文件体积                        LPSTR     lpCmdLine,   
25减小vc编译文件体积                        int       iCmdShow ) ;     
26减小vc编译文件体积
27减小vc编译文件体积void   EntryPoint()     
28}

遇到的一些问题 就是编译可以通过但有2个警告还需要解决下

对pe的结构还不是很了解 用uedit32看了下 还有很多00 不知道是不是还有压缩的空间

实现同样功能用masm32写的会小很多

这些选项也没有研究的很透 肯定还存在问题 这里先留个帖子  以后改进了弄明白了再来修改

相关文章: