谁能编译出更小的exe 呵呵! 挑战哦 (转贴)

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 最后编辑

Old Post 2005-12-27 04:52 AM
点这里查看 nop 的个人资料 点这里给 nop 发送一条悄悄话 点这里给 nop 发送Email 访问 nop 的主页! 查找 nop 的更多帖子 将 nop 添加到你的好友列表 编辑/删除 引用/回复
Zoner

无名的旅人
无名的旅人

来自:
金钱:90
发帖数: 16

注册日期: 2004-05-25

Zoner 现在离线

No.2

编译环境MASM v8.0
编译参数 /OPT:NOWIN98 /align:4 /SUBSYSTEM:WINDOWS /merge:.rdata=.text /MERGE:.data=.text

Code:


.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 次.

Old Post 2005-12-27 09:57 AM
点这里查看 Zoner 的个人资料 点这里给 Zoner 发送一条悄悄话 点这里给 Zoner 发送Email 查找 Zoner 的更多帖子 将 Zoner 添加到你的好友列表 编辑/删除 引用/回复
hayate

呢喃的歌声
呢喃的歌声

来自: 武汉
金钱:1204
发帖数: 269

注册日期: 2003-11-28

hayate 目前在线

No.3

哈哈 支持无甚意义的dd

顺便问一下 楼上的 ml是 vs2005带的吗

编译一些文件 非要加上/Zi 才行

由 hayate 于 2005-12-27 01:23 PM 最后编辑

Old Post 2005-12-27 12:56 PM
点这里查看 hayate 的个人资料 点这里给 hayate 发送一条悄悄话 点这里给 hayate 发送Email 查找 hayate 的更多帖子 将 hayate 添加到你的好友列表 编辑/删除 引用/回复
nop

水面上的小草
水面上的小草

来自: :自来
金钱:515
发帖数: 107

注册日期: 2005-05-22

nop 现在离线

No.4

无聊 灌水

下面这个编译出来不算是最小的 :-P
但是没有直接导入user32.dll里的MessageBoxA

导入表里面只导入了kernel32.dll 里的
GetProcAddress
LoadLibraryA

Code:


#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 最后编辑

Old Post 2005-12-27 01:36 PM
点这里查看 nop 的个人资料 点这里给 nop 发送一条悄悄话 点这里给 nop 发送Email 访问 nop 的主页! 查找 nop 的更多帖子 将 nop 添加到你的好友列表 编辑/删除 引用/回复
Zoner

无名的旅人
无名的旅人

来自:
金钱:90
发帖数: 16

注册日期: 2004-05-25

Zoner 现在离线

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 最后编辑

Old Post 2005-12-27 03:04 PM
点这里查看 Zoner 的个人资料 点这里给 Zoner 发送一条悄悄话 点这里给 Zoner 发送Email 查找 Zoner 的更多帖子 将 Zoner 添加到你的好友列表 编辑/删除 引用/回复
goldsun

路旁的落叶
路旁的落叶

来自:
金钱:205
发帖数: 56

注册日期: 2003-07-30

goldsun 目前在线

No.6

这样的只有手工改造PE头部来缩小了.

Old Post 2005-12-27 04:19 PM
点这里查看 goldsun 的个人资料 点这里给 goldsun 发送一条悄悄话 点这里给 goldsun 发送Email 查找 goldsun 的更多帖子 将 goldsun 添加到你的好友列表 编辑/删除 引用/回复
黑暗之子

旅团正式成员
旅团正式成员

来自: 我爱幻影
金钱:2771
发帖数: 482

注册日期: 2005-04-18

黑暗之子 现在离线

No.7

把文字信息写入Section Table还可以更小一点
CALL JMP
JMP [address]
写成 CALL [address] 还可以省几个字节 ^_^
已经接近极限了

Old Post 2005-12-27 04:37 PM
点这里查看 黑暗之子 的个人资料 点这里给 黑暗之子 发送一条悄悄话 点这里给 黑暗之子 发送Email 查找 黑暗之子 的更多帖子 将 黑暗之子 添加到你的好友列表 编辑/删除 引用/回复
luoluo

我是一个浪子
我是一个浪子

来自: 娥眉山
金钱:3115
发帖数: 616

注册日期: 2002-11-20

luoluo 现在离线

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 次.

. . . . . . . . . . . . . . . . . .
想独自在娥眉

静静的做一个和尚

……

Old Post 2005-12-27 05:32 PM
点这里查看 luoluo 的个人资料 点这里给 luoluo 发送一条悄悄话 点这里给 luoluo 发送Email 访问 luoluo 的主页! 查找 luoluo 的更多帖子 将 luoluo 添加到你的好友列表 luoluo 的QQ号码:80832240    编辑/删除 引用/回复
nop

水面上的小草
水面上的小草

来自: :自来
金钱:515
发帖数: 107

注册日期: 2005-05-22

nop 现在离线

No.9

还有办法 不知道算不算违规
就是自己做个dos stub 然后link /stub:stub.exe
也许可以更小点
不过如果仅仅通过编译器编译 现在估计已经接近极限了 :-P

附件贴个牛人手工打造的最小hello world (204 Bytes)

附件: Hello204.exe [需 0 社区元下载]
该文件已经被下载 28 次.

Old Post 2005-12-27 10:42 PM
点这里查看 nop 的个人资料 点这里给 nop 发送一条悄悄话 点这里给 nop 发送Email 访问 nop 的主页! 查找 nop 的更多帖子 将 nop 添加到你的好友列表 编辑/删除 引用/回复
Zoner

无名的旅人
无名的旅人

来自:
金钱:90
发帖数: 16

注册日期: 2004-05-25

Zoner 现在离线

No.10

Code:


/*按楼主你的标题“谁能编译出更小的exe”来看,肯定算违规*/

看错了,注释掉注释掉……

加一句,如果要手工改的话,强烈推荐用Stud_PE!!

 

由 Zoner 于 2005-12-27 11:13 PM 最后编辑

Old Post 2005-12-27 10:53 PM
点这里查看 Zoner 的个人资料 点这里给 Zoner 发送一条悄悄话 点这里给 Zoner 发送Email 查找 Zoner 的更多帖子 将 Zoner 添加到你的好友列表 编辑/删除 引用/回复
孤狼望月

路旁的落叶
路旁的落叶

来自: 山东济南
金钱:304
发帖数: 58

注册日期: 2004-05-17

孤狼望月 现在离线

No.11

引用:

最初由 nop 发布
还有办法 不知道算不算违规
就是自己做个dos stub 然后link /stub:stub.exe
也许可以更小点
不过如果仅仅通过编译器编译 现在估计已经接近极限了 :-P

附件贴个牛人?.

以下省略......


Hello204.exe 无法找到DLL

 

. . . . . . . . . . . . . . . . . .
我们不是军人但却有着和军人一样的使命
>>>那就是维护中国网络领土的主权<<<

Old Post 2005-12-28 12:26 AM
点这里查看 孤狼望月 的个人资料 点这里给 孤狼望月 发送一条悄悄话 点这里给 孤狼望月 发送Email 访问 孤狼望月 的主页! 查找 孤狼望月 的更多帖子 将 孤狼望月 添加到你的好友列表 编辑/删除 引用/回复
BDragonH

水面上的小草
水面上的小草

来自: 南宫家族
金钱:680
发帖数: 121

注册日期: 2005-11-22

BDragonH 现在离线

No.12

汗!

. . . . . . . . . . . . . . . . . .
有我(龙)的天空一片晴朗

Old Post 2005-12-28 12:39 PM
点这里查看 BDragonH 的个人资料 点这里给 BDragonH 发送一条悄悄话 点这里给 BDragonH 发送Email 访问 BDragonH 的主页! 查找 BDragonH 的更多帖子 将 BDragonH 添加到你的好友列表    编辑/删除 引用/回复
黑暗之子

旅团正式成员
旅团正式成员

来自: 我爱幻影
金钱:2771
发帖数: 482

注册日期: 2005-04-18

黑暗之子 现在离线

No.13

幻影的学习气氛还不是特别的浓厚,我的意思当然不是缺牛人
唉,真希望大家能如nop同志一样,多多弄些“专题研究”之类的。有头有尾有深度。
小东西研究深了也是学问,某些事情上制约我们的也往往就是些小问题。
比如捆绑机哪个好用?现在的ArpSniffer测试结果怎么样等等

Old Post 2005-12-28 02:21 PM
点这里查看 黑暗之子 的个人资料 点这里给 黑暗之子 发送一条悄悄话 点这里给 黑暗之子 发送Email 查找 黑暗之子 的更多帖子 将 黑暗之子 添加到你的好友列表 编辑/删除 引用/回复
hayate

呢喃的歌声
呢喃的歌声

来自: 武汉
金钱:1204
发帖数: 269

注册日期: 2003-11-28

hayate 目前在线

No.14

我也觉得代码段没什么可挖掘的啦 PE头可能还有机会做文章 Dos stub也可以不要了
PS:我发现vc 7.1 vc 8好像不能生成小于1k的文件呢 怎么回事?

Old Post 2005-12-28 10:00 PM
点这里查看 hayate 的个人资料 点这里给 hayate 发送一条悄悄话 点这里给 hayate 发送Email 查找 hayate 的更多帖子 将 hayate 添加到你的好友列表 编辑/删除 引用/回复
hayate

呢喃的歌声
呢喃的歌声

来自: 武汉
金钱:1204
发帖数: 269

注册日期: 2003-11-28

hayate 目前在线

No.15

引用:

最初由 Zoner 发布
不是2005带的,我用的是MASM32包中的,有差别么?

楼主的第二份自己编译过么?应该不可能比第一个小的!
再说偶的本来就是asm写的啊

本来觉得这样可能会更小,结果?.

以下省略......


那个不是8.0 是6.14 只是叫做MASM32 v8
区别不大 多些选项而已

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值