Ê×Ò³ | ×ÊѶ¶¯Ì¬ | linux»ù´¡ | ϵͳ¹ÜÀí | ÍøÂç¹ÜÀí | ±à³Ì¿ª·¢ | linuxÊý¾Ý¿â | ·þÎñÆ÷¼¼Êõ | linuxÏà¹Ø | linuxÈÏÖ¤ | ǶÈëʽ | ÏÂÔØÖÐÐÄ | רÌâ | linuxÕÐƸ | ¾µÏñÕ¾
OKLinuxÖÐÎļ¼ÊõÕ¾
¡¤ÉèΪÊ×Ò³
¡¤¼ÓÈëÊÕ²Ø
¡¤ÁªÏµÎÒÃÇ
ϵͳ¹ÜÀí: ÖÐÎÄ»·¾³ ϵͳ¹ÜÀí ×ÀÃæÓ¦Óà Äں˼¼Êõ | Linux»ù´¡: »ù´¡ÈëÃÅ °²×°ÅäÖà ³£ÓÃÃüÁî ¾­Ñé¼¼ÇÉ Èí¼þÓ¦Óà | LinuxÊý¾Ý¿â: Mysql Postgre Oracle DB2 Sybase other
ÍøÂç¹ÜÀí: ÍøÂ簲ȫ ÍøÂçÓ¦Óà Linux·þÎñÆ÷ »·¾³ÅäÖà ºÚ¿Í°²È« | ±à³Ì¿ª·¢: PHP CC++ Python Perl Shell ǶÈëʽ¿ª·¢ java jsp | PHP¼¼Êõ: PHP»ù´¡ PHP¼¼ÇÉ PHPÓ¦Óà PHPÎÄÕª
Linux×ÊѶ LinuxÕÐƸ LinuxרÌâ Apache | LinuxÏà¹Ø: Ó²¼þÏà¹Ø Linux½â¾ö·½°¸ LinuxÈÏÖ¤ ÆóÒµÓ¦Óà ÆäËüUnix | Ïà¹ØÏÂÔØ: ×ÊÁÏÏÂÔØ ²Î¿¼ÊÖ²á ¿ª·¢¹¤¾ß ·þÎñÆ÷Àà Èí·ÓÉ ÆäËü
 ¼¼ÊõËÑË÷:
»áÔ±ÖÐÐÄ ×¢²á»áÔ± ¸ß¼¶ËÑË÷  
  ¡ú µ±Ç°Î»ÖÃ:Ê×Ò³>±à³Ì¿ª·¢>cc++>ÕýÎÄ

PEÎļþ¸ñʽÏê½â(3)

http://www.oklinux.cn  2003-05-01  À´Ô´: »¥ÁªÍø  ±¾Õ¾ÕûÀí   »áÔ±ÊÕ²Ø  ÓοÍÊղؠ ¡¾´ó ÖРС¡¿ 

PE¿ÉÑ¡Í·²¿

¡¡¡¡PE¿ÉÖ´ÐÐÎļþÖнÓÏÂÀ´µÄ224¸ö×Ö½Ú×é³ÉÁËPE¿ÉÑ¡Í·²¿¡£ËäÈ»ËüµÄÃû×ÖÊÇ¡°¿ÉÑ¡Í·²¿¡±£¬µ«ÊÇÇëÈ·ÐÅ£ºÕâ¸öÍ·²¿²¢·Ç¡°¿ÉÑ¡¡±£¬¶øÊÇ¡°±ØÐ衱µÄ¡£ OPTHDROFFSET ºê¿ÉÒÔ»ñµÃÖ¸Ïò¿ÉÑ¡Í·²¿µÄÖ¸Õ룺
PEFILE.H
#define OPTHDROFFSET(a) ((LPVOID)((BYTE *)a +
((PIMAGE_DOS_HEADER)a)->e_lfanew +
SIZE_OF_NT_SIGNATURE +
sizeof(IMAGE_FILE_HEADER)))
¡¡¡¡ ¿ÉÑ¡Í·²¿°üº¬Á˺ܶà¹ØÓÚ¿ÉÖ´ÐÐÓ³ÏñµÄÖØÒªÐÅÏ¢£¬ÀýÈç³õʼµÄ¶ÑÕ»´óС¡¢³ÌÐòÈë¿ÚµãµÄλÖá¢Ê×Ñ¡»ùµØÖ·¡¢²Ù×÷ϵͳ°æ±¾¡¢¶Î¶ÔÆëµÄÐÅÏ¢µÈµÈ¡£ IMAGE_OPTIONAL_HEADER ½á¹¹ÈçÏ£º
WINNT.H
typedef struct _IMAGE_OPTIONAL_HEADER {
//
// ±ê×¼Óò
//
USHORT Magic;
UCHAR MajorLinkerVersion;
UCHAR MinorLinkerVersion;
ULONG SizeOfCode;
ULONG SizeOfInitializedData;
ULONG SizeOfUninitializedData;
ULONG AddressOfEntryPoint;
ULONG BaseOfCode;
ULONG BaseOfData;
//
// NT¸½¼ÓÓò
//
ULONG ImageBase;
ULONG SectionAlignment;
ULONG FileAlignment;
USHORT MajorOperatingSystemVersion;
USHORT MinorOperatingSystemVersion;
USHORT MajorImageVersion;
USHORT MinorImageVersion;
USHORT MajorSubsystemVersion;
USHORT MinorSubsystemVersion;
ULONG Reserved1;
ULONG SizeOfImage;
ULONG SizeOfHeaders;
ULONG CheckSum;
USHORT Subsystem;
USHORT DllCharacteristics;
ULONG SizeOfStackReserve;
ULONG SizeOfStackCommit;
ULONG SizeOfHeapReserve;
ULONG SizeOfHeapCommit;
ULONG LoaderFlags;
ULONG NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
¡¡¡¡ ÈçÄãËù¼û£¬Õâ¸ö½á¹¹ÖÐËùÁгöµÄÓòʵÔÚÊÇÈß³¤µÃ¹ý·Ö¡£ÎªÁ˲»ÈÃÄã¶ÔËùÓÐÕâЩÓò¸Ðµ½Ñá·³£¬ÎÒ»á½ö½öÌÖÂÛÓÐÓõġª¡ª¾ÍÊÇ˵£¬¶ÔÓÚ̽¾¿PEÎļþ¸ñʽ¶øÑÔÓÐÓõġ£

±ê×¼Óò

¡¡¡¡Ê×ÏÈ£¬Çë×¢ÒâÕâ¸ö½á¹¹±»»®·ÖΪ¡°±ê×¼Óò¡±ºÍ¡°NT¸½¼ÓÓò¡±¡£Ëùν±ê×¼Óò£¬¾ÍÊǺÍUNIX¿ÉÖ´ÐÐÎļþµÄCOFF¸ñʽËù¹«¹²µÄ²¿·Ö¡£ËäÈ»±ê×¼Óò±£ÁôÁËCOFFÖж¨ÒåµÄÃû×Ö£¬µ«ÊÇWindows NTÈÔÈ»½«ËüÃÇÓÃ×÷Á˲»Í¬µÄÄ¿µÄ¡ª¡ª¾¡¹Ü»»¸öÃû×Ö¸üºÃһЩ¡£
¡¡¡¡ ¡¤Magic¡£ÎÒ²»ÖªµÀÕâ¸öÓòÊǸÉʲôµÄ£¬¶ÔÓÚʾÀý³ÌÐòEXEVIEW.EXEʾÀý³ÌÐò¶øÑÔ£¬Õâ¸öÖµÊÇ0x010B»ò267£¨Òë×¢£º0x010BΪ.EXE£¬0x0107ΪROMÓ³Ïñ£¬Õâ¸öÐÅÏ¢ÎÒÊÇ´ÓeXeScopeÉϵÃÀ´µÄ£©¡£
¡¡¡¡ ¡¤MajorLinkerVersion¡¢MinorLinkerVersion¡£±íʾÁ´½Ó´ËÓ³ÏñµÄÁ´½ÓÆ÷°æ±¾¡£ËæWindow NT build 438ÅäÌ×µÄWindows NT SDK°üº¬µÄÁ´½ÓÆ÷°æ±¾ÊÇ2.39£¨Ê®Áù½øÖÆΪ2.27£©¡£
¡¡¡¡ ¡¤SizeOfCode¡£¿ÉÖ´ÐдúÂë³ß´ç¡£
¡¡¡¡ ¡¤SizeOfInitializedData¡£Òѳõʼ»¯µÄÊý¾Ý³ß´ç¡£
¡¡¡¡ ¡¤SizeOfUninitializedData¡£Î´³õʼ»¯µÄÊý¾Ý³ß´ç¡£
¡¡¡¡ ¡¤AddressOfEntryPoint¡£ÔÚ±ê×¼ÓòÖУ¬AddressOfEntryPointÓòÊǶÔPEÎļþ¸ñʽÀ´Ëµ×îΪÓÐȤµÄÁË¡£Õâ¸öÓò±íʾӦÓóÌÐòÈë¿ÚµãµÄλÖᣲ¢ÇÒ£¬¶ÔÓÚϵͳºÚ¿ÍÀ´Ëµ£¬Õâ¸öλÖþÍÊǵ¼ÈëµØÖ·±í£¨IAT£©µÄĩβ¡£ÒÔϵĺ¯Êýʾ·¶ÁËÈçºÎ´Ó¿ÉÑ¡Í·²¿»ñµÃWindows NT¿ÉÖ´ÐÐÓ³ÏñµÄÈë¿Úµã¡£
PEFILE.C
LPVOID WINAPI GetModuleEntryPoint(LPVOID lpFile)
{
PIMAGE_OPTIONAL_HEADER poh;
poh = (PIMAGE_OPTIONAL_HEADER)OPTHDROFFSET(lpFile);
if (poh != NULL)
return (LPVOID)poh->AddressOfEntryPoint;
else
return NULL;
}
¡¡¡¡ ¡¤BaseOfCode¡£ÒÑÔØÈëÓ³ÏñµÄ´úÂ루¡°.text¡±¶Î£©µÄÏà¶ÔÆ«ÒÆÁ¿¡£
¡¡¡¡ ¡¤BaseOfData¡£ÒÑÔØÈëÓ³ÏñµÄδ³õʼ»¯Êý¾Ý£¨¡°.bss¡±¶Î£©µÄÏà¶ÔÆ«ÒÆÁ¿¡£

Windows NT¸½¼ÓÓò

¡¡¡¡Ìí¼Óµ½Windows NT PEÎļþ¸ñʽÖеĸ½¼ÓÓòΪWindows NTÌض¨µÄ½ø³ÌÐÐΪÌṩÁË×°ÔØÆ÷µÄÖ§³Ö£¬ÒÔÏÂΪÕâЩÓòµÄ¸ÅÊö¡£
¡¡¡¡ ¡¤ImageBase¡£½ø³ÌÓ³ÏñµØÖ·¿Õ¼äÖеÄÊ×Ñ¡»ùµØÖ·¡£Windows NTµÄMicrosoft Win32 SDKÁ´½ÓÆ÷½«Õâ¸öֵĬÈÏÉèΪ0x00400000£¬µ«ÊÇÄã¿ÉÒÔʹÓà -BASE:linker ¿ª¹Ø¸Ä±äÕâ¸öÖµ¡£
¡¡¡¡ ¡¤SectionAlignment¡£´ÓImageBase¿ªÊ¼£¬Ã¿¸ö¶Î¶¼±»Ïà¼ÌµÄ×°Èë½ø³ÌµÄµØÖ·¿Õ¼äÖС£SectionAlignmentÔò¹æ¶¨ÁË×°ÔØʱ¶ÎÄܹ»Õ¼¾ÝµÄ×îС¿Õ¼äÊýÁ¿¡ª¡ª¾ÍÊÇ˵£¬¶ÎÊǹØÓÚSectionAlignment¶ÔÆëµÄ¡£
¡¡¡¡ Windows NTÐéÄâÄÚ´æ¹ÜÀíÆ÷¹æ¶¨£¬¶Î¶ÔÆë²»ÄÜÉÙÓÚÒ³³ß´ç£¨µ±Ç°µÄx86ƽ̨ÊÇ4096×Ö½Ú£©£¬²¢ÇÒ±ØÐëÊdzɱ¶µÄÒ³³ß´ç¡£4096×Ö½ÚÊÇx86Á´½ÓÆ÷µÄĬÈÏÖµ£¬µ«ÊÇËü¿ÉÒÔͨ¹ý -ALIGN: linker ¿ª¹ØÀ´ÉèÖá£
¡¡¡¡ ¡¤FileAlignment¡£Ó³ÏñÎļþÊ×ÏÈ×°ÔصÄ×îСµÄÐÅÏ¢¿é¼ä¸ô¡£ÀýÈ磬Á´½ÓÆ÷½«Ò»¸ö¶ÎʵÌ壨¶ÎµÄԭʼÊý¾Ý£©¼ÓÁãÀ©Õ¹ÎªÎļþÖÐ×î½Ó½üµÄFileAlignment±ß½ç¡£ÔçÏÈÌá¼°µÄ2.39°æÁ´½ÓÆ÷½«Ó³ÏñÎļþÒÔ0x200×ֽڵı߽ç¶ÔÆ룬Õâ¸öÖµ¿ÉÒÔ±»Ç¿ÖƸÄΪ512µ½65535Õâô¶à¡£
¡¡¡¡ ¡¤MajorOperatingSystemVersion¡£±íʾWindows NT²Ù×÷ϵͳµÄÖ÷°æ±¾ºÅ£»Í¨³£¶ÔWindows NT 1.0¶øÑÔ£¬Õâ¸öÖµ±»ÉèΪ1¡£
¡¡¡¡ ¡¤MinorOperatingSystemVersion¡£±íʾWindows NT²Ù×÷ϵͳµÄ´Î°æ±¾ºÅ£»Í¨³£¶ÔWindows NT 1.0¶øÑÔ£¬Õâ¸öÖµ±»ÉèΪ0¡£
¡¡¡¡ ¡¤MajorImageVersion¡£ÓÃÀ´±íʾӦÓóÌÐòµÄÖ÷°æ±¾ºÅ£»¶ÔÓÚMicrosoft Excel 4.0¶øÑÔ£¬Õâ¸öÖµÊÇ4¡£
¡¡¡¡ ¡¤MinorImageVersion¡£ÓÃÀ´±íʾӦÓóÌÐòµÄ´Î°æ±¾ºÅ£»¶ÔÓÚMicrosoft Excel 4.0¶øÑÔ£¬Õâ¸öÖµÊÇ0¡£
¡¡¡¡ ¡¤MajorSubsystemVersion¡£±íʾWindows NT Win32×ÓϵͳµÄÖ÷°æ±¾ºÅ£»Í¨³£¶ÔÓÚWindows NT 3.10¶øÑÔ£¬Õâ¸öÖµ±»ÉèΪ3¡£
¡¡¡¡ ¡¤MinorSubsystemVersion¡£±íʾWindows NT Win32×ÓϵͳµÄ´Î°æ±¾ºÅ£»Í¨³£¶ÔÓÚWindows NT 3.10¶øÑÔ£¬Õâ¸öÖµ±»ÉèΪ10¡£
¡¡¡¡ ¡¤Reserved1¡£Î´ÖªÄ¿µÄ£¬Í¨³£²»±»ÏµÍ³Ê¹Ó㬲¢±»Á´½ÓÆ÷ÉèΪ0¡£
¡¡¡¡ ¡¤SizeOfImage¡£±íʾÔØÈëµÄ¿ÉÖ´ÐÐÓ³ÏñµÄµØÖ·¿Õ¼äÖÐÒª±£ÁôµÄµØÖ·¿Õ¼ä´óС£¬Õâ¸öÊý×ֺܴó³Ì¶ÈÉÏÊÜSectionAlignmentµÄÓ°Ïì¡£ÀýÈ磬¿¼ÂÇÒ»¸öÓµÓй̶¨Ò³³ß´ç4096×Ö½ÚµÄϵͳ£¬Èç¹ûÄãÓÐÒ»¸ö11¸ö¶ÎµÄ¿ÉÖ´ÐÐÎļþ£¬ËüµÄÿ¸ö¶Î¶¼ÉÙÓÚ4096×Ö½Ú£¬²¢ÇÒ¹ØÓÚ65536×ֽڱ߽ç¶ÔÆ룬ÄÇôSizeOfImageÓò½«»á±»ÉèΪ11 * 65536 = 720896£¨176Ò³£©¡£¶øÈç¹ûÒ»¸öÏàͬµÄÎļþ¹ØÓÚ4096×Ö½Ú¶ÔÆëµÄ»°£¬ÄÇôSizeOfImageÓòµÄ½á¹û½«ÊÇ11 * 4096 = 45056£¨11Ò³£©¡£ÕâÖ»ÊǸö¼òµ¥µÄÀý×Ó£¬Ëü˵Ã÷ÿ¸ö¶ÎÐèÒªÉÙÓÚÒ»¸öÒ³ÃæµÄÄÚ´æ¡£ÔÚÏÖʵÖУ¬Á´½ÓÆ÷ͨ¹ý¸ö±ðµØ¼ÆËãÿ¸ö¶ÎµÄ·½·¨À´¾ö¶¨SizeOfImageÈ·ÇеÄÖµ¡£ËüÊ×ÏȾö¶¨Ã¿¸ö¶ÎÐèÒª¶àÉÙ×Ö½Ú£¬²¢ÇÒ×îºó½«Ò³Ãæ×ÜÊýÏòÉÏÈ¡ÕûÖÁ×î½Ó½üµÄSectionAlignment±ß½ç£¬È»ºó×ÜÊý¾ÍÊÇÿ¸ö¶Î¸ö±ðÐèÇóÖ®ºÍÁË¡£
¡¡¡¡ ¡¤SizeOfHeaders¡£Õâ¸öÓò±íʾÎļþÖÐÓжàÉÙ¿Õ¼äÓÃÀ´±£´æËùÓеÄÎļþÍ·²¿£¬°üÀ¨MS-DOSÍ·²¿¡¢PEÎļþÍ·²¿¡¢PE¿ÉÑ¡Í·²¿ÒÔ¼°PE¶ÎÍ·²¿¡£ÎļþÖÐËùÓеĶÎʵÌå¾Í¿ªÊ¼ÓÚÕâ¸öλÖá£
¡¡¡¡ ¡¤CheckSum¡£Ð£ÑéºÍÊÇÓÃÀ´ÔÚ×°ÔØʱÑéÖ¤¿ÉÖ´ÐÐÎļþµÄ£¬ËüÊÇÓÉÁ´½ÓÆ÷ÉèÖò¢¼ìÑéµÄ¡£ÓÉÓÚ´´½¨ÕâЩУÑéºÍµÄËã·¨ÊÇ˽ÓÐÐÅÏ¢£¬ËùÒÔÔڴ˲»½øÐÐÌÖÂÛ¡£
¡¡¡¡ ¡¤Subsystem¡£ÓÃÓÚ±êʶ¸Ã¿ÉÖ´ÐÐÎļþÄ¿±ê×ÓϵͳµÄÓò¡£Ã¿¸ö¿ÉÄܵÄ×ÓϵͳȡֵÁÐÓÚWINNT.HµÄ IMAGE_OPTIONAL_HEADER ½á¹¹Ö®ºó¡£
¡¡¡¡ ¡¤DllCharacteristics¡£ÓÃÀ´±íʾһ¸öDLLÓ³ÏñÊÇ·ñΪ½ø³ÌºÍÏ̵߳ijõʼ»¯¼°ÖÕÖ¹°üº¬Èë¿ÚµãµÄ±ê¼Ç¡£
¡¡¡¡ ¡¤SizeOfStackReserve¡¢SizeOfStackCommit¡¢SizeOfHeapReserve¡¢SizeOfHeapCommit¡£ÕâЩÓò¿ØÖÆÒª±£ÁôµÄµØÖ·¿Õ¼äÊýÁ¿£¬²¢ÇÒ¸ºÔðÕ»ºÍĬÈ϶ѵÄÉêÇë¡£ÔÚĬÈÏÇé¿öÏ£¬Õ»ºÍ¶Ñ¶¼ÓµÓÐ1¸öÒ³ÃæµÄÉêÇëÖµÒÔ¼°16¸öÒ³ÃæµÄ±£ÁôÖµ¡£ÕâЩֵ¿ÉÒÔʹÓÃÁ´½ÓÆ÷¿ª¹Ø-STACKSIZE:Óë-HEAPSIZE:À´ÉèÖá£
¡¡¡¡ ¡¤LoaderFlags¡£¸æ֪װÔØÆ÷ÊÇ·ñÔÚ×°ÔØʱÖÐÖ¹ºÍµ÷ÊÔ£¬»òÕßĬÈϵØÕý³£ÔËÐС£
¡¡¡¡ ¡¤NumberOfRvaAndSizes¡£Õâ¸öÓò±êʶÁ˽ÓÏÂÀ´µÄDataDirectoryÊý×é¡£Çë×¢ÒâËü±»ÓÃÀ´±êʶÕâ¸öÊý×飬¶ø²»ÊÇÊý×éÖеĸ÷¸öÈë¿ÚÊý×Ö£¬ÕâÒ»µã·Ç³£ÖØÒª¡£
¡¡¡¡ ¡¤DataDirectory¡£Êý¾ÝĿ¼±íʾÎļþÖÐÆäËü¿ÉÖ´ÐÐÐÅÏ¢ÖØÒª×é³É²¿·ÖµÄλÖá£ËüÊÂʵÉϾÍÊÇÒ»¸ö IMAGE_DATA_DIRECTORY ½á¹¹µÄÊý×飬λÓÚ¿ÉÑ¡Í·²¿½á¹¹µÄĩβ¡£µ±Ç°µÄPEÎļþ¸ñʽ¶¨ÒåÁË16ÖÖ¿ÉÄܵÄÊý¾ÝĿ¼£¬ÕâÖ®ÖеÄ11ÖÖÏÖÔÚÔÚʹÓÃÖС£

Êý¾ÝĿ¼

¡¡¡¡WINNT.HÖ®ÖÐËù¶¨ÒåµÄÊý¾ÝĿ¼Ϊ£º
WINNT.H
// Ŀ¼Èë¿Ú
// µ¼³öĿ¼
#define IMAGE_DIRECTORY_ENTRY_EXPORT 0
// µ¼ÈëĿ¼
#define IMAGE_DIRECTORY_ENTRY_IMPORT 1
// ×ÊԴĿ¼
#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
// Ò쳣Ŀ¼
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
// °²È«Ä¿Â¼
#define IMAGE_DIRECTORY_ENTRY_SECURITY 4
// Öض¨Î»»ù±¾±í
#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
// µ÷ÊÔĿ¼
#define IMAGE_DIRECTORY_ENTRY_DEBUG 6
// ÃèÊö×Ö´®
#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
// »úÆ÷Öµ£¨MIPS GP£©
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
// TLSĿ¼
#define IMAGE_DIRECTORY_ENTRY_TLS 9
// ÔØÈëÅäÖÃĿ¼
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
¡¡¡¡ »ù±¾ÉÏ£¬Ã¿¸öÊý¾ÝĿ¼¶¼ÊÇÒ»¸ö±»¶¨ÒåΪ IMAGE_DATA_DIRECTORY µÄ½á¹¹¡£ËäÈ»Êý¾ÝĿ¼Èë¿Ú±¾ÉíÊÇÏàͬµÄ£¬µ«ÊÇÿ¸öÌض¨µÄĿ¼ÖÖÀàÈ´ÊÇÍêȫΨһµÄ¡£Ã¿¸öÊý¾ÝĿ¼µÄ¶¨ÒåÔÚ±¾ÎĵÄÒԺ󲿷ֱ»ÃèÊöΪ¡°Ô¤¶¨Òå¶Î¡±¡£
WINNT.H
typedef struct _IMAGE_DATA_DIRECTORY {
ULONG VirtualAddress;
ULONG Size;
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
¡¡¡¡ ÿ¸öÊý¾ÝĿ¼Èë¿ÚÖ¸¶¨Á˸ÃĿ¼µÄ³ß´çºÍÏà¶ÔÐéÄâµØÖ·¡£Èç¹ûÄãÒª¶¨ÒåÒ»¸öÌض¨µÄĿ¼µÄ»°£¬¾ÍÐèÒª´Ó¿ÉÑ¡Í·²¿ÖеÄÊý¾ÝĿ¼Êý×éÖоö¶¨Ïà¶ÔµÄµØÖ·£¬È»ºóʹÓÃÐéÄâµØÖ·À´¾ö¶¨¸ÃĿ¼λÓÚÄĸö¶ÎÖС£Ò»µ©Äã¾ö¶¨ÁËÄĸö¶Î°üº¬Á˸ÃĿ¼£¬¸Ã¶ÎµÄ¶ÎÍ·²¿¾Í»á±»ÓÃÓÚ²éÕÒÊý¾ÝĿ¼µÄ¾«È·ÎļþÆ«ÒÆÁ¿Î»Öá£
¡¡¡¡ ËùÒÔÒª»ñµÃÒ»¸öÊý¾ÝĿ¼µÄ»°£¬ÄÇôÊ×ÏÈÄãÐèÒªÁ˽â¶ÎµÄ¸ÅÄî¡£ÎÒÔÚÏÂÃæ»á¶ÔÆä½øÐÐÃèÊö£¬Õâ¸öÌÖÂÛÖ®ºó»¹ÓÐÒ»¸öÓйØÈçºÎ¶¨Î»Êý¾ÝĿ¼µÄʾÀý¡££¨Î´Íê´ýÐø£©



ÉÏһƪ£ºPEÎļþ¸ñʽÏê½â(4)   ÏÂһƪ£ºPEÎļþ¸ñʽÏê½â(2)


¡¾ÊÕ²ØÓÚÊղؼС¿ ¡¾ÆÀÂÛ¡¿ ¡¾ÍƼö¡¿ ¡¾´òÓ¡¡¿ ¡¾¹Ø±Õ¡¿
Ïà¹ØÎĵµ
¡¤PEÎļþ¸ñʽÏê½â(2)
¡¤PEÎļþ¸ñʽÏê½â(4)
¡¤PEÎļþ¸ñʽÏê½â(5)
¡¤PEÎļþ¸ñʽÏê½â(1)
¡¤PCI
¡¤PEÎļþ¸ñʽÏê½â(6)
¡¤Networks£¨ÍøÂç)
¡¤PEÎļþ¸ñʽÏê½â(7)
¡¤Modules
¡¤Processes £¨½ø³Ì£©
¡¤Memory Management £¨ÄÚ´æ¹ÜÀí£©
¡¤References and arrays
¡¤Reserved Names
¡¤Macro Definitions of Functions
¡¤Scheduling £¨µ÷¶È)
¡¤Linux³ÌʽÉè¼ÆÈëÃÅ
·¢±íÆÀÂÛ
ÃÜÂ룺 ÄäÃûÆÀÂÛ
ÆÀÂÛÄÚÈÝ£º

(²»³¬¹ý250×Ö£¬ÐèÉóºËºó²Å»á¹«²¼£¬Çë×Ô¾õ×ñÊØ»¥ÁªÍøÏà¹ØÕþ²ß·¨¹æ)
 
  ×îÐÂÎĵµ
¡¤ÓÃEclipseƽ̨½øÐÐC/C ¿ª·¢
¡¤ÔÚ Linux ÖÐʹÓù²Ïí¶ÔÏó
¡¤VS:Õë¶ÔJava¿ª·¢ÈËÔ±µÄC#±à³ÌÓïÑÔ
¡¤Ê¹ÓÃÖÇÄÜÉ豸À©Õ¹ÔÚC#Öпª·¢×Ô¶¨Òå¿Ø¼þ
¡¤Visual C# ³£¼ûÎÊÌâ
¡¤¶þ¼¶CÓïÑÔʵÀý½â´ð
¡¤Ò»ÖÖ±»ºöÊӵĹ¹ÔìºÍÕûÊýÒç³öÖØÏÖ
¡¤ÇáÇáËÉËÉC to C
¡¤ÓëÓÃÓÚ C µÄISO±ê×¼±£³ÖÒ»ÖÂ
¡¤ÓÃC µÄÍйÜÀ©Õ¹Õë¶ÔWindows±à³Ì
¡¤ÔËÐÐʱºÍ±àÒëʱµÄ°²È«ÐÔ¼ì²é
¡¤ÇáÇáËÉËÉC to C £¨¶þ£©
  ÔĶÁÅÅÐÐ
¡¤c/c++ ѧϰ-read º¯ÊýºÍ write º¯Êý
¡¤³ÌÐòÔ±ÑÛÖеÄqmail(qmailÔ´´úÂë·ÖÎö)
¡¤Awk »ù´¡ÈëÃÅ£ºAwk ʵÀý±à³Ì
¡¤autoconf ºÍautomakeÉú³ÉMakefileÎļþ
¡¤LinuxϵĶà½ø³Ì±à³Ì
¡¤ÈëÃÅÎÄÕ£º½ÌÄãѧ»á±àдLinuxÉ豸Çý¶¯
¡¤C++×Ô¶¯»¯(Ä£°åÔª)±à³Ì»ù´¡ÓëÓ¦ÓÃ
¡¤Ê¹Óà GDB µ÷ÊÔ¶à½ø³Ì³ÌÐò
¡¤Qt ²»¹æÔò´°ÌåµÄʵÏÖ
¡¤Ç¶Èëʽ³ÌÐòÔ±Ó¦ÖªµÀµÄ¼¸¸ö»ù±¾ÎÊÌâ
¡¤Linux²Ù×÷ϵͳÖÐGCCµÄÓ¦ÓýéÉÜ
¡¤CÓïÑÔÖеÄÖ¸ÕëºÍÄÚ´æй©
¡¤ÓÃGNU profilerÌá¸ß´úÂëÔËÐÐËÙ¶È
¡¤vi ÖеÄÕýÔò±í´ïʽ (Regular Expressio
¡¤Linux Ì×½Ó×Ö±à³ÌÖÐµÄ 5 ¸öÒþ»¼
ÍøÕªÊÕ²Ø: