| ²é¿´: 298 | »Ø¸´: 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: ÖÆÎļþ(Õâô˵»°ºÃ±ðŤ~ )±àÒëÃüÁî: 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µÄº¯Êý,²»ÊÇÈ«²¿Ö»ÓÐÎÒÃÇÐèÒªµÄ 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 ] |
» ²ÂÄãϲ»¶
284Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
һ־Ըɽ¶«´óѧҩѧѧ˶Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
07»¯Ñ§280·ÖÇóµ÷¼Á
ÒѾÓÐ4È˻ظ´
298-Ò»Ö¾Ô¸Öйúũҵ´óѧ-Çóµ÷¼Á
ÒѾÓÐ12È˻ظ´
Çó²ÄÁÏ£¬»·¾³×¨Òµµ÷¼Á
ÒѾÓÐ3È˻ظ´
335Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
Ò»Ö¾Ô¸¼ª´ó»¯Ñ§322Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
»·¾³Ñ§Ë¶288Çóµ÷¼Á
ÒѾÓÐ8È˻ظ´
341Çóµ÷¼Á(Ò»Ö¾Ô¸ºþÄÏ´óѧ070300)
ÒѾÓÐ6È˻ظ´
gph-rabbit
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 6187.4
- Ìû×Ó: 141
- ÔÚÏß: 85.2Сʱ
- ³æºÅ: 283155
- ×¢²á: 2006-10-08
- רҵ: ÐÅÏ¢°²È«
2Â¥2006-12-29 01:21:28
0.5
![]() |
3Â¥2006-12-29 09:52:11













elles-c,ÀàËÆLCCµÄÒ»ÖÖCÓïÑÔ±àÒëÆ÷,Æäʵ¾ÍÊÇLCCÔ´´úÂëÐ޸ĵÄ)
)
»Ø¸´´ËÂ¥