PE可執(zhí)行文件的鑲?cè)胧匠绦虻木帉?xiě)方法及示例(鑲?cè)胧胶箝T(mén)程序&原程序) 由于Microsoft公司的Windows系統(tǒng)是當(dāng)前大部分個(gè)人電腦所使用的操作系統(tǒng) 主要包括win95,98,me,nt4,2000,xp等,而這些系統(tǒng)所使用的可執(zhí)行文件的格式基 本上是PE結(jié)構(gòu)的。這里的可執(zhí)行文件的鑲?cè)胧匠绦蚓褪轻槍?duì)PE結(jié)構(gòu)的可執(zhí)行文件。 這里先簡(jiǎn)單說(shuō)一下PE文件框架結(jié)構(gòu): DOS MZ header DOS stub//在不支持 PE文件格式的操作系統(tǒng)中它將簡(jiǎn)單顯示一個(gè)錯(cuò)誤提示 PE header//含了許多PE裝載器用到的重要信息 Section table//每個(gè)Section的信息 Section 1 Section 2 Section 3.... 由于SectionAlignment 塊對(duì)齊的原因每個(gè)Section之間都會(huì)產(chǎn)生很多空間, 鑲?cè)胧匠绦虻拇a可以放在Section之間的空位上,比較方便的方法是把代碼放在 最后一個(gè)Section的末尾,然后更改Misc.VirtualSize和SizeOfRawData這兩個(gè)位 于Section table的IMAGE_SECTION_HEADER結(jié)構(gòu)數(shù)組的成員。如果代碼十分的長(zhǎng), 有時(shí)候會(huì)造成鑲?cè)氲拇a無(wú)法被完全加載而產(chǎn)生錯(cuò)誤,這時(shí)需要更改SizeOfImage 在IMAGE_NT_HEADERS 結(jié)構(gòu)中。 在不同的WINDOWS版本中api調(diào)用地址也有不同,為了解決這個(gè)問(wèn)題可以更改引 入表讓加載器
標(biāo)簽:
Microsoft
Windows
程序
200
上傳時(shí)間:
2015-01-13
上傳用戶:luopoguixiong