减小vc编译文件体积

今天突然想到见过别人用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 *
也不了解pehitwall.gif  只能先这样了 最近时间要学习下相关的知识

 1 None.gif #include  < windows.h >
 2 None.gif
 3 None.gif#pragma comment(lib, " kernel32.lib " )
 4 None.gif#pragma comment(lib, " shell32.lib " )
 5 None.gif#pragma comment(lib, " msvcrt.lib " )
 6 None.gif
 7 None.gif#pragma comment(linker,  " /ENTRY:EntryPoint " )
 8 None.gif
 9 None.gif#pragma comment (linker,  " /ALIGN:512 " )
10 None.gif#pragma comment(linker,  " /FILEALIGN:512 " )
11 None.gif
12 None.gif#pragma comment(linker,  " /opt:nowin98 "
13 None.gif#pragma comment(linker,  " /opt:ref "
14 None.gif#pragma comment (linker,  " /OPT:ICF " )
15 None.gif
16 None.gif#pragma comment(linker,  " /MERGE:.rdata=.data " )
17 None.gif#pragma comment(linker,  " /MERGE:.text=.data " )
18 None.gif#pragma comment(linker,  " /MERGE:.reloc=.data " )
19 None.gif
20 None.gif
21 None.gif
22 None.gif int    WINAPI   WinMain( HINSTANCE hInstance,   
23 None.gif                        HINSTANCE hPrevInstance,   
24 None.gif                        LPSTR     lpCmdLine,   
25 None.gif                         int        iCmdShow ) ;     
26 None.gif
27 None.gif void    EntryPoint()     
28 ExpandedBlockStart.gifContractedBlock.gif dot.gif {     
29InBlock.gif    ExitProcess(WinMain(GetModuleHandle(NULL), NULL, 
30InBlock.gif                        GetCommandLine(), SW_SHOWNORMAL));     
31ExpandedBlockEnd.gif}
  
32 None.gif int  WINAPI WinMain( HINSTANCE hInstance, 
33 None.gif                    HINSTANCE hPrevInstance, 
34 None.gif                    LPSTR     lpCmdLine, 
35 None.gif                     int        iShowCmd )
36 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
37InBlock.gif    MessageBox(NULL, TEXT("hello!"), TEXT("hi"), 0) ;
38InBlock.gif    return 0 ;
39ExpandedBlockEnd.gif}

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

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

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

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

转载于:https://www.cnblogs.com/nniixl/archive/2007/04/22/723155.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值