No.1 谁能编译出更小的exe 呵呵! 挑战哦 我的是vc++6下cl msg.cpp编译滴Code: #include <windows.h> #pragma comment(linker, "/OPT:NOWIN98") #pragma comment(lib,"user32.lib") #pragma comment(linker, "/ENTRY:main") #pragma comment(linker, "/merge:.data=.text") #pragma comment(linker, "/merge:.rdata=.text") #pragma comment(linker, "/align:512") #pragma comment(linker, "/subsystem:windows") void main() { char Msg[] = "你好"; char Title[] = "www.Ph4t0m.org"; MessageBox(0, Msg, Title, 1); } 附件的是708字节的exe谁能更小? 附件: msg.exe [需 0 社区元下载]该文件已经被下载 22 次. 由 nop 于 2005-12-27 05:13 AM 最后编辑 向版主反映这个帖子 | IP: 已记录 2005-12-27 04:52 AM Zoner无名的旅人 来自: 金钱:90发帖数: 16注册日期: 2004-05-25 No.2 编译环境MASM v8.0编译参数 /OPT:NOWIN98 /align:4 /SUBSYSTEM:WINDOWS /merge:.rdata=.text /MERGE:.data=.textCode: .386 .model flat, stdcall option casemap :none include windows.inc include user32.inc includelib user32.lib .CONST szMsg db "你好",0 szTit db "www.Ph4t0m.org",0 .CODE START: invoke MessageBox,NULL,ADDR szMsg,ADDR szTit,1 ret end START 附件的是596字节的exe 反正比LZ的小了,咔咔咔... 附件: Tiny.exe [需 0 社区元下载]该文件已经被下载 19 次. 向版主反映这个帖子 | IP: 已记录 2005-12-27 09:57 AM hayate呢喃的歌声 来自: 武汉金钱:1204发帖数: 269注册日期: 2003-11-28 No.3 哈哈 支持无甚意义的dd顺便问一下 楼上的 ml是 vs2005带的吗编译一些文件 非要加上/Zi 才行 由 hayate 于 2005-12-27 01:23 PM 最后编辑 向版主反映这个帖子 | IP: 已记录 2005-12-27 12:56 PM nop水面上的小草 来自: :自来金钱:515发帖数: 107注册日期: 2005-05-22 No.4 无聊 灌水下面这个编译出来不算是最小的 :-P但是没有直接导入user32.dll里的MessageBoxA导入表里面只导入了kernel32.dll 里的GetProcAddressLoadLibraryACode: #include <windows.h> #pragma comment(lib,"kernel32.lib") #pragma comment(linker, "/entry:main") #pragma comment(linker, "/align:512") #pragma comment(linker, "/merge:.data=.text") #pragma comment(linker, "/merge:.rdata=.text") #pragma comment(linker, "/subsystem:windows") typedef int (__stdcall *PMessageBox)(HWND, LPCTSTR, LPCTSTR, UINT); typedef HINSTANCE (__stdcall *PLoadLibraryW)(LPCTSTR); void main(void) { char lib[]="user32.dll"; char func[]="MessageBoxA"; char msg[]="你好!"; char title[]="www.Ph4t0m.org"; (PMessageBox)GetProcAddress(LoadLibrary(&lib), &func)(0,&msg,&title,1); } 由 nop 于 2005-12-27 10:47 PM 最后编辑 向版主反映这个帖子 | IP: 已记录 2005-12-27 01:36 PM Zoner无名的旅人 来自: 金钱:90发帖数: 16注册日期: 2004-05-25 No.5 不是2005带的,我用的是MASM32包中的,有差别么?楼主的第二份自己编译过么?应该不可能比第一个小的!再说偶的本来就是asm写的啊本来觉得这样可能会更小,结果还是不行,应该已经是正常编译能到的最小程度了吧,当然把显示的内容改掉不算……Code: .386 .model flat, stdcall option casemap :none include windows.inc include user32.inc includelib user32.lib .CODE START: push 1 call @F szMsg db "你好",0 @@: call @F szTit db "www.Ph4t0m.org",0 @@: push 0 call MessageBox ret end START 由 Zoner 于 2005-12-27 03:31 PM 最后编辑 向版主反映这个帖子 | IP: 已记录 2005-12-27 03:04 PM goldsun路旁的落叶 来自: 金钱:205发帖数: 56注册日期: 2003-07-30 No.6 这样的只有手工改造PE头部来缩小了. 向版主反映这个帖子 | IP: 已记录 2005-12-27 04:19 PM 黑暗之子旅团正式成员 来自: 我爱幻影金钱:2771发帖数: 482注册日期: 2005-04-18 No.7 把文字信息写入Section Table还可以更小一点CALL JMPJMP [address]写成 CALL [address] 还可以省几个字节 ^_^已经接近极限了 向版主反映这个帖子 | IP: 已记录 2005-12-27 04:37 PM luoluo我是一个浪子 来自: 娥眉山金钱:3115发帖数: 616注册日期: 2002-11-20 No.8 呵呵,手工不算vc6看看还能不能再小了下面这个608字节Code: /* vc++ 6.0 cl Helo.c /MD /O1 /link /nologo /release /align:16 /subsystem:windows /entry:main /section:.text,REW /merge:.data=.text /merge:.rdata=.text */ #include <windows.h> #pragma comment(lib, "user32.lib") #pragma comment(lib, "msvcrt.lib") void main(void) { __asm { xor eax, eax push eax call TITLE _emit 'w' _emit 'w' _emit 'w' _emit '.' _emit 'p' _emit 'h' _emit '4' _emit 'n' _emit 't' _emit '0' _emit 'm' _emit '.' _emit 'n' _emit 'e' _emit 't' _emit 0x00 TITLE: call TEXT _emit 0xc4 _emit 0xe3 _emit 0xba _emit 0xc3 _emit 0x00 TEXT: push eax call ds:[MessageBox] } } 附件: Helo.exe [需 0 社区元下载]该文件已经被下载 12 次. . . . . . . . . . . . . . . . . . .想独自在娥眉静静的做一个和尚…… 向版主反映这个帖子 | IP: 已记录 2005-12-27 05:32 PM nop水面上的小草 来自: :自来金钱:515发帖数: 107注册日期: 2005-05-22 No.9 还有办法 不知道算不算违规就是自己做个dos stub 然后link /stub:stub.exe也许可以更小点 不过如果仅仅通过编译器编译 现在估计已经接近极限了 :-P附件贴个牛人手工打造的最小hello world (204 Bytes) 附件: Hello204.exe [需 0 社区元下载]该文件已经被下载 28 次. 向版主反映这个帖子 | IP: 已记录 2005-12-27 10:42 PM Zoner无名的旅人 来自: 金钱:90发帖数: 16注册日期: 2004-05-25 No.10 Code: /*按楼主你的标题“谁能编译出更小的exe”来看,肯定算违规*/ 看错了,注释掉注释掉……加一句,如果要手工改的话,强烈推荐用Stud_PE!! 由 Zoner 于 2005-12-27 11:13 PM 最后编辑 向版主反映这个帖子 | IP: 已记录 2005-12-27 10:53 PM 孤狼望月路旁的落叶 来自: 山东济南金钱:304发帖数: 58注册日期: 2004-05-17 No.11 引用: 最初由 nop 发布还有办法 不知道算不算违规就是自己做个dos stub 然后link /stub:stub.exe也许可以更小点 不过如果仅仅通过编译器编译 现在估计已经接近极限了 :-P附件贴个牛人?.以下省略...... Hello204.exe 无法找到DLL . . . . . . . . . . . . . . . . . .我们不是军人但却有着和军人一样的使命>>>那就是维护中国网络领土的主权<<< 向版主反映这个帖子 | IP: 已记录 2005-12-28 12:26 AM BDragonH水面上的小草 来自: 南宫家族金钱:680发帖数: 121注册日期: 2005-11-22 No.12 汗! . . . . . . . . . . . . . . . . . .有我(龙)的天空一片晴朗 向版主反映这个帖子 | IP: 已记录 2005-12-28 12:39 PM 黑暗之子旅团正式成员 来自: 我爱幻影金钱:2771发帖数: 482注册日期: 2005-04-18 No.13 幻影的学习气氛还不是特别的浓厚,我的意思当然不是缺牛人唉,真希望大家能如nop同志一样,多多弄些“专题研究”之类的。有头有尾有深度。小东西研究深了也是学问,某些事情上制约我们的也往往就是些小问题。比如捆绑机哪个好用?现在的ArpSniffer测试结果怎么样等等 向版主反映这个帖子 | IP: 已记录 2005-12-28 02:21 PM hayate呢喃的歌声 来自: 武汉金钱:1204发帖数: 269注册日期: 2003-11-28 No.14 我也觉得代码段没什么可挖掘的啦 PE头可能还有机会做文章 Dos stub也可以不要了PS:我发现vc 7.1 vc 8好像不能生成小于1k的文件呢 怎么回事? 向版主反映这个帖子 | IP: 已记录 2005-12-28 10:00 PM hayate呢喃的歌声 来自: 武汉金钱:1204发帖数: 269注册日期: 2003-11-28 No.15 引用: 最初由 Zoner 发布不是2005带的,我用的是MASM32包中的,有差别么?楼主的第二份自己编译过么?应该不可能比第一个小的!再说偶的本来就是asm写的啊本来觉得这样可能会更小,结果?.以下省略...... 那个不是8.0 是6.14 只是叫做MASM32 v8区别不大 多些选项而已