24СʱÈÈÃŰæ¿éÅÅÐаñ    

Znn3bq.jpeg
ÉÇÍ·´óѧº£Ñó¿ÆÑ§½ÓÊܵ÷¼Á
²é¿´: 313  |  »Ø¸´: 2
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

sdlj8051

½ð³æ (ÖøÃûдÊÖ)

[½»Á÷] [zt]29AÔÓÖ¾#8:±àÒëÃÔÄãWin32¿ÉÖ´ÐÐÎļþ(ʹÓÃC´úÂë)

Èç½ñÈËÃÇʹÓø÷Àà¼Ó¿ÇÈí¼þ³ÌÐòѹËõÓ¦ÓóÌÐòʹ×Ô¼ºµÄ³ÌÐò¸ü¶ÌС,
ʹµÃ´ó¼Ò¶¼ºöÂÔ(Ô­ÎÄ:ÊÇ·ñÒòΪÀÁ¶è?)ÁËÈçºÎ×Ô¼º±àÒëÒ»¸öСÇɵĶþ½øÖÆÎļþ,
Ï£ÍûÏÂÃæËù½²ÊöµÄ¿ÉÒÔ¸øÄãһЩ˼·..
(¸öÈËÀí½âÊÇÕâ¸öÒâ˼¡«²»Ã÷µÄµØ·½¿´Ô­ÎÄ¡«ÕâÀïÖ»ÊÇÒÀÕÕ¸öÈË˼ά·­ÒëµÄ)

ÕªÒª:
¼ò½é.
µÚ1½².²»Ê¹ÓôúÂë,¶¨Î»´úÂëÈë¿ÚµãºÍCÓïÑÔÁ¬½Óʱ¼ä¿â(¾ÍÊÇ*.lib)
µÚ2½².ÈÚºÏPE½Ú
µÚ3½².ʹÓÃDos stub(DOS²å×®Öù)À´´æ´¢³õʼ»¯Êý¾Ý(¿ÉÒÔ½âÊͳɳ£Á¿!)
µÚX½².ÔÙ½øÒ»²½......µÈµÈ....

Ô´´úÂë:test.c,test2.c

½éÉÜ:
±àÒëÃÔÄãµÄÓ¦ÓóÌÐòÊǽ¨Á¢ÔÚÒ»¸öºÃµÄÁ¬½ÓÆ÷»ù´¡ÉϵÄ.
ÕâÀïÎÒʹÓõÄÊÇPelles-cµÄÁ¬½Ó¿â
(ÒëÕß×¢elles-c,ÀàËÆLCCµÄÒ»ÖÖCÓïÑÔ±àÒëÆ÷,Æäʵ¾ÍÊÇLCCÔ´´úÂëÐ޸ĵÄ)
Pelles-cÊÇÒ»¿îÃâ·ÑºÜ²»´íµÄ±àÒëÆ÷(Ö»Ö§³ÖCÓïÑÔ)Polink(Ö¸µÄÊÇÁ¬½ÓÆ÷)
ÊÇÄ£Äâ¿ÆÂ¡M$ VCµÄÁ¬½ÓÆ÷µÄ.

ÎÒʹÓÃÒ»¸ö"Hello World"³ÌÐò(test.c)À´Ê¾·¶±àÒëÒ»¸öÃÔÄãµÄÓ¦ÓóÌÐò.
(Ô­ÎÄÒâ˼ÊÇ¡«ÎÒÓ¦¸ÃÓôÎÀ´ÓÅ»¯Ò»¸ö¶þ½øÖÆÎļþ...²»Àí½âËûÊÇʲôÒâ˼)

***** µÚ0½²: ĬÈϱàÒë
ʹÓÃÃüÁî:
cc.exe test.c
polink.exe c:\progra~1\pellesc\lib\crt.lib c:\progra~1\pellesc\ ->
lib\win\kernel32.lib test.obj

result: test.exe ,size=27648 bytes
Õâ¸öÌå»ýÓеã´óÁË,µ«ÊdzÌÐòֻʹÓÃÁËKernel32.dllÖеĺ¯Êý
***** µÚ1½²:
²»Ê¹ÓôúÂë,ÖØ¶¨Î»´úÂëÈë¿ÚµãºÍCÓïÑÔÁ¬½Óʱ¼ä¿â(¾ÍÊÇ*.lib),
Á¬½ÓÆ÷ʹÓÃÒ»¸ö³£¹æµÄÈë¿Úµã,´úÂ빦ÄÜ:¶ÁÈ¡ºÍ½âÎö¸½¼Ó²ÎÊý.

ÎÒÃǵÄÀý×Ó²»ÐèÒªÉÏÃæµÄÌØÕ÷(ÃüÁî),ΪÁËÓÅ»¯ÎÒÃǵĴúÂëÎÒÃǾö¶¨È¥³ýÕâЩ¶«Î÷

.
Á¬½ÓÆ÷Óиö²ÎÊý:

/ENTRY:         

(/ENTRY:ºóÃæ¸ú³ÌÐòÈë¿Úº¯Êý--Ò»°ãÎÒÃǵijÌÐòÊÇmain¿ªÊ¼µÄ)

symbolÊÇÄãµÄ³ÌÐòmainº¯ÊýµÄÈë¿Úµã(ÒëÕß×¢:µ±È»ÄãÒ²¿ÉÒÔÉèÖóɱðµÄº¯ÊýÀýÈç:

/ENTRY:MyMain)
Èç¹ûÎÒÃÇÐèҪʹÓÃÒ»¸öCÁ¬½Ó¿â¿ÉÒÔʹÓÃ:

/NODEFAULTLIB

±àÒëÃüÁî:

cc.exe test.c
polink.exe /NODEFAULTLIB /ENTRY:main

c:\progra~1\pellesc\lib\win\msvcrt.lib test.obj

result: test.exe, size=2560 bytes

***** µÚ2½²:ÈÚºÏPE½Ú
(ÒëÕß×¢:Ðí¶à¼Ó¿ÇÈí¼þ¼Ó¿Çºó³ÌÐòµÄ½ÚÃ÷ÏÔ±ÈÔ­À´Ð¡ÁË.ÕâÀïËù˵µÄ¾ÍÊÇÕâ¸öÒâ˼

)
ÎÒÃǵÄtest.exe³ÌÐò±àÒëºóÓµÓÐ2¸öPE½Ú: .text ,.rdata ,.data
ÎÒÃÇ¿ÉÒÔÈÚºÏÈý¸ö½Ú³ÉΪһ¸ö½Ú

Á¬½ÓÆ÷ÉèÖÃ:  /MERGE:=

(Ô­ÎÄ:this option can be used several times!,¸Ð¾õÎÞÒâÒå¾ÍûÓз­Òë)

±àÒëÃüÁî:

cc.exe test.c
polink.exe /MERGE:.rdata=.text /MERGE:.data=.text /NODEFAULTLIB

/ENTRY:main ->
c:\progra~1\pellesc\lib\win\msvcrt.lib test.obj

result: test.exe, size=1536 bytes

***** µÚ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

stub
Ö»ÓÐ160×Ö½Ú,ʣϵĿռä¿ÉÒÔÓÃÀ´´æ´¢ÎÒÃǵijõʼ»¯Êý¾Ý(ÒëÕß×¢:Ðí¶àDIY PEµÄ

Å£È˶¼×÷¹ýСÓÚ
512×Ö½ÚµÄdos stub..ËÆºõÔ­×÷ÕßÈÏΪdos stub±ØÐëÊÇ512×Ö½Ú²»È»¾Í»á·¢Éúʲô

ÊÂÇé..)

ÎÒÃDZØÐë¸Ä±äÉÙÁ¿µÄC´úÂë,

ÎÒÃÇÐèÒª½«Êý¾Ý·Ö³ÉÁ½¸ö²¿·Ö,Ò»¸ö²¿·Ö±£´æÔÚdos

stubÖÐ,ʣϵIJ¿·Ö±£´æÔÚ.text¶ÎÖÐ.

PolinkÁ¬½ÓÆ÷¿ÉÒÔÉèÖÃÎÒÃÇÐèҪʹÓõÄdos stub.ÕâÀïÎÒÃÇÓÃÒ»¸öÃâ·ÑµÄ»ã±àÓïÑÔ

±àÒëÆ÷FASMÀ´×÷
(ÒëÕß×¢:BÈ˺Üϲ»¶µÄÒ»¸ö±àÒëÆ÷,¿ªÔ´,ÓдóÁ¿µÄºêÖ¸Áî¿ÉÒÔʹÓÃ,ÓÉÓÚÊǵͼ¶±à

ÒëÆ÷¿ÉÒÔ°´ÕÕ×Ô¼ºµÄÉèÏë±àÒëPE½á¹¹)

±àÒëÆ÷ÉèÖòÎÊý: /STUB: ,ÕâÀïÉèÖÃÎÒÃÇÐèÒªµÄdos stub µÄ¶þ½ø

ÖÆÎļþ(Õâô˵»°ºÃ±ðŤ~)

±àÒëÃüÁî:

fasm stub.asm stub.bin
cc.exe testb.c
polink.exe /STUB:stub.bin /MERGE:.rdata=.text /MERGE:.data=.text

/NODEFAULTLIB /ENTRY:main ->
c:\progra~1\pellesc\lib\win\msvcrt.lib testb.obj

*****µÚX½²:ÔÙ½øÒ»²½
(ÒëÕß×¢:dos stubÖÐ)¿ÉÒÔ±£´æÄãÐèÒªµ¼ÈëµÄDLLµÄº¯ÊýÃûºÍ¡«"By Name"µÈµÈ×Ö·û

´®ÐÅÏ¢
(ËÆºõºÃ¶à¿Ç¶¼ÕâÑù×÷ÁË¡«±ÈÈç(Win)Upack,FSGµÈµÈ¿Ç),Ò»°ãʹÓõ¼ÈëÐòÊý²»ÊÇÒ»

¸öºÃÖ÷Òâ,
ÒòΪ²Ù×÷ϵͳµÄ²î±ð¡«(ÒëÕß×¢:±ÈÈçWin2k,WinXp,Win9xϵĺ¯Êýδ±Ø¾ÍÊÇÒ»¸öÐò

ºÅ.´ó¼ÒÐèҪעÒâÕâÀï)
×ÜÖ®..һЩDLL,Èçwsock32.dll,ÄãÍêȫûÓбØÒªÔÚWindowsÏÂʹÓÃÐòÊý....
¶Ôµ¼Èë±íʹÓÃÐòÊý,ÄãÐèҪʹÓÃÒ»Ð©ÌØ±ðµÄ·½·¨µ¼ÈëÁ¬½Ó¿â....
Ò»¸ö²»ÐèҪʹÓôúÂëµÄ·½·¨,ÔÚÄãÁ¬½Ó³ÌÐòµÄ´´½¨µ¼Èë±íÁбíµÄ·½·¨.
polib.exeÕâ¸ö¹¤¾ß¿ÉÒÔ´´½¨ÄãÁ¬½Ó¿âµÄµ¼Èë±í±£´æ³ÉÒ»¸ö .defµÄÎļþ
ÕâÀïÊÇÒ»¸öÑÝʾµÄÎļþ:
***** example of a .def file
LIBRARY WSOCK32
EXPORTS
accept @1
bind @2
closesocket @3
connect @4
htons @9
listen @13
recv @16
send @19
socket @23
gethostbyname @52
WSAAsyncSelect @101
WSACleanup @116
WSAStartup @115
***** end of file
.defÎļþ±£´æÁËÎÒÃÇÐèÒªµ¼ÈëµÄwsock32.dllµÄº¯Êý,²»ÊÇÈ«²¿Ö»ÓÐÎÒÃÇÐèÒªµÄ
@XXX
symbolsÊÇÉèÖÃÎÒÃÇÐèҪʹÓõĺ¯ÊýÃû³Æ-.xxx ÊÇÎÒÃÇÐèÒªµ¼ÈëµÄº¯ÊýÐòÊý
polib.exeͬʱ»á´´½¨Ò»¸ö.lib µÄÎļþ
¸Ä±äPE×Ö½ÚµÄÒ»ÖÖBT·½·¨(ÒëÕß×¢ÊÍ:Ô­ÎÄ·­ÒëÊÇÕâÑù:»ñÈ¡ÎļþÊý¾ÝµÄÒ»ÖÖBT·½·¨

.)
,Ò»¸öPEÎļþ±ØÐëÊÇ512µÄ±¶Êý(ÀÏ벡ÓÖ·¸ÁË.)
ºÍһЩСÓÚ1024×ֽڵijÌÐò»¹ÊÇ¿ÉÒÔºÍWin32Ïà¼æÈݵÄ.
(ÒëÕß×¢:ÕâÀï˵µÄÊÇÎļþ¶ÔÆë¡«512×Ö½Ú,Ò»¿ªÊ¼ÎÒҲû¿´¶®ÒÔºó¿´ÁËÏÂÃæµÄ´úÂë

²ÅÃ÷°×)
Õâ¸ö·½·¨ÊÇ:µ÷ÕûPEÎļþµÄ¶ÔÆë×Ö½Ú(ÉèÖóÉ512µÄ±¶Êý--µ±È»Ò²¿ÉÒÔÊÇʹÓÃ512)
ÕâÑùµ÷Õûºó,ÎļþµÄµÚÒ»¸ö½ÚµÄÐéÄâµØÖ·Æ«ÒÆ+´óС¾ÍÊÇÎļþµÄ´óС(½Ó½üÓÚ1000h

µÄ±¶Êý.Ò²¿ÉÒÔÊÇ1024)
(ÒëÕß×¢:ʣϵIJ¿·ÖÔ­×÷Õß¶¼Ã»ÓÐд¡«Ò²ÐíÊÇÎÒ·­ÒëµÄÓÐÎÊÌâ,·´Õý¾ÍûÁË¡«ºÇºÇ

²»ÖªµÀÊÇʲôÒâ˼)

ÒÔÏÂΪԴ´úÂë
/***** test.c*/
#include

#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

#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*/

×÷ÕßÔ­ÎÄûÓÐÌûFASM²¿·ÖµÄ´úÂëÎÒÕâÀï²¹ÉÏ
ÏÂÔØ×îеÄFASM°æ±¾È»ºóÖ±½Ó±àÒë¾ÍºÃÁË,»áÉú³ÉÒ»¸östub.binÎļþ
Çë×ÔÐÐÐ޸ijÉstub.exeÈ»ºóÔÚ°´ÕÕÉÏÃæËù˵µÄÎÄÕ½øÐбàÒë¾Í¿ÉÒÔÁË
/***** stub.asm*/
DOS_Header:
   .e_magic     dw "MZ"      ;IMAGE_DOS_SIGNATURE
   .e_cblp      dw 0x0080
   .e_cp        dw 0x0001
   .e_crlc      dw 0x0000
   .e_cparhdr   dw 0x0004
   .e_minalloc  dw 0x0010
   .e_maxalloc  dw 0xFFFF
   .e_ss        dw 0x0000
   .e_sp        dw 0x0140
   .e_csum      dw 0x0000
   .e_ip        dw 0x0000
   .e_cs        dw 0x0000
   .e_lfarlc    dw 0x0040
   .e_ovno      dw 0x0000
   .e_res       rw 4
   .e_oemid     dw 0x0000
   .e_oeminfo   dw 0x0000
   .e_res2      rw 10
   .e_lfanew    dd PE_header  ;PE header Offset

DOS_Stub:
org $+DOS_Stub

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*/

[ Last edited by sdlj8051 on 2006-10-6 at 11:10 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

gph-rabbit

½ð³æ (СÓÐÃûÆø)

¿´¿´ÁË£¬Ñ§Ï°Ò»Ï¡£
2Â¥2006-12-29 01:21:28
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

0.5

3Â¥2006-12-29 09:52:11
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ sdlj8051 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤349·ÖÇóµ÷¼Á +14 Àîľ×Ó°¡¹þ¹þ 2026-04-12 15/750 2026-04-14 00:14 by Equinoxhua
[¿¼ÑÐ] 297Çóµ÷¼Á +22 ORCHID1 2026-04-10 25/1250 2026-04-13 23:11 by pies112
[¿¼ÑÐ] 22ר˶Çóµ÷¼Á +8 haoyunÉϰ¶ 2026-04-11 10/500 2026-04-13 22:15 by zhq0425
[¿¼ÑÐ] ÉúÎïѧ308·ÖÇóµ÷¼Á£¨Ò»Ö¾Ô¸»ª¶«Ê¦´ó£©×ö¹ý·Ö×ÓʵÑé +9 ÏàÐűػá¹ââÍòÕ 2026-04-07 10/500 2026-04-13 10:20 by ¿Éµ­²»¿ÉÍü
[¿¼ÑÐ] ±¾¿ÆÄÏ·½Ò½¿Æ´óѧ Ò»Ö¾Ô¸985 ҩѧѧ˶284·Ö Çóµ÷¼Á +5 ÈõË®ÌýÎÄ 2026-04-09 5/250 2026-04-12 13:16 by shengxi123
[¿¼ÑÐ] 070300»¯Ñ§279Çóµ÷¼Á +19 ¹þ¹þ¹þ^_^ 2026-04-08 20/1000 2026-04-11 20:43 by stoner78
[¿¼ÑÐ] 085500Çóµ÷¼Á²ÄÁÏ +10 Ò×11122 2026-04-09 10/500 2026-04-11 10:39 by maddjdld
[¿¼ÑÐ] 288Çóµ÷¼Á +15 ´úfish 2026-04-09 16/800 2026-04-11 10:26 by wwj2530616
[¿¼ÑÐ] 297Çóµ÷¼Á +9 Kwgyz 2026-04-09 9/450 2026-04-11 10:09 by zhq0425
[¿¼ÑÐ] 346£¬¹¤¿ÆÇóµ÷¼Á +3 moser233 2026-04-09 3/150 2026-04-11 10:04 by zhq0425
[¿¼ÑÐ] 085506-Çóµ÷¼Á-285·Ö +3 À×Å··ÉÌß 2026-04-08 3/150 2026-04-11 08:37 by zhq0425
[¿¼ÑÐ] µ÷¼Á +19 СÕÅZA 2026-04-10 20/1000 2026-04-10 22:08 by Öí»á·É
[¿¼ÑÐ] µ÷¼ÁÉêÇë086000Ò»Ö¾Ô¸Î÷±±Å©ÁֿƼ¼´óѧÉúÎïÓëÒ½Ò©320·Ö-±¾¿ÆÆë³¹¤Òµ´óѧ +3 ÃÀÃÀŮʿ 2026-04-09 3/150 2026-04-10 10:31 by liuhuiying09
[¿¼ÑÐ] 314Çóµ÷¼Á +14 weltZeng 2026-04-09 14/700 2026-04-09 23:14 by wolf97
[¿¼ÑÐ] 348Çóµ÷¼Á +3 candyyyi 2026-04-09 3/150 2026-04-09 17:20 by ¶ÎΰÑÞ
[ÂÛÎÄͶ¸å] ÇóÖúÎÄÏ×Ô­ÎÄ 10+3 18500821399 2026-04-08 3/150 2026-04-09 16:56 by ±±¾©À³ÒðÈóÉ«
[¿¼ÑÐ] ²ÄÁÏ307·ÖÇó´óÀÐ×éÊÕÁô +17 Hllºú 2026-04-07 17/850 2026-04-09 10:53 by liuhuiying09
[¿¼ÑÐ] Èí¼þ¹¤³ÌÇóµ÷¼Á22Èí¹¤296·ÖÇóµ÷¼Á£¬½ÓÊÜ¿çµ÷ +4 yangchen2017 2026-04-08 5/250 2026-04-08 21:56 by ÍÁľ˶ʿÕÐÉú
[¿¼ÑÐ] »úеµ÷¼Á +3 zzzbcb 2026-04-07 3/150 2026-04-07 22:19 by hemengdong
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +11 Ò»ÑùYWY 2026-04-07 11/550 2026-04-07 15:13 by shdgaomin
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û