***** 第3讲:使用Dos stub(DOS插桩柱)来存储初始化数据
DOS Stub头部是PE程序为了兼容msdos系统所作的,如果你的程序的程序
在msdos环境下运行,会显示一个"This program cannot be run in DOS mode"
的警告信息然后退出.(译者注:就和printf打印这条信息一个结果~不过他使用的
是int21中断)
他可以作一些你需要让程序在dos下作的事情(那是你自己的事情这里就不细说了)
dos stub尺寸是512的倍数,最小的可能性也是512字节,如果我们去除警告信息dos
#define POEM "\
It might be lonelier\r\n\
Without the Loneliness --\r\n\
I'm so accustomed to my Fate --\r\n\
Perhaps the Other -- Peace --\r\n\r\n\
Would interrupt the Dark --\r\n\
And crowd the little Room --\r\n\
Too scant -- by Cubits -- to contain\r\n\
The Sacrament -- of Him --\r\n\r\n\
I am not used to Hope --\r\n\
It might intrude upon --\r\n\
Its sweet parade -- blaspheme the place --\r\n\
Ordained to Suffering --\r\n\r\n\
It might be easier\r\n\
To fail -- with Land in Sight --\r\n\
Than gain -- My Blue Peninsula --\r\n\
To perish -- of Delight --\r\n\r\n\
(Emily Dickinson, 1830-1886)\r\n"
void main()
{
printf(POEM);
}
/***** End of source code*/
/***** test2.c*/
#include <stdio.h>
#define PTR_POEM1 0x400040
#define POEM2 "\
little Room --\r\n\
Too scant -- by Cubits -- to contain\r\n\
The Sacrament -- of Him --\r\n\
I am not used to Hope --\r\n\
It might intrude upon --\r\n\
Its sweet parade -- blaspheme the place --\r\n\
Ordained to Suffering --\r\n\r\n\
It might be easier\r\n\
To fail -- with Land in Sight --\r\n\
Than gain -- My Blue Peninsula --\r\n\
To perish -- of Delight --\r\n\r\n\
(Emily Dickinson, 1830-1886)\r\n"
void main()
{
printf("%s%s",PTR_POEM1,POEM2);
}
/***** End of source code*/
POEM1 db "It might be lonelier",0dh,0ah
db "Without the Loneliness --",0dh,0ah
db "I'm so accustomed to my Fate --",0dh,0ah
db "Perhaps the Other -- Peace --",0dh,0ah,0dh,0ah
db "Would interrupt the Dark --",0dh,0ah
db "And crowd the",0
rb 160-(DOS_Stub-$)
PE_header:
/***** End of source code*/