热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

减小vc编译文件体积

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

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

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

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

//自定义加载的库
#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  只能先这样了 最近时间要学习下相关的知识

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



推荐阅读
author-avatar
童恩_658
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有