手工打造微型Win32可执行文件PE.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
手工打造微型Win32可执行文件PE

手工打造微型Win32可执行文件PE 手工打造微型Win32可执行文件 创建时间:2003-02-12 文章属性:原创 文章来源: 文章提交:watercloud (watercloud_at_) 本文是我在学习PE文件格式时打造小型PE文件的学习历程的一个记录性文字,最终我的目标是完全手工打造一个小的EXE文件,第一个为1024字节,最终改造到512字节。 废话不多说,开始工作: 写个汇编程序: start: xor ebx,ebx jz tcall tjmp: pop eax push ebx push eax add eax,7 push eax push ebx push ExitProcess push MessageBoxA ret tcall: call tjmp db ExeDIY,0 db Hello!,0 用masm32编译链接后生成Hello.exe 该exe为2k大小,为了把它大小裁减下来,用UltraEdit新建一个16进制文件, 然后我们参考原来的文件来手工创建一个新的hello.exe。 文件如附件最终为1k大小,已经在WinXp/2k/Nt上测试。 我们作的主要工作是: 1. 把Dos Stub去掉;按照新的信息构造文件头。 2. 新文件对齐值为0x200,在0x200处填入指令信息。 3. 把数据段去掉。(但由于WinXp上section个数不能为一个,否则报不是Win32程序,所以仍 然保留了数据段的section信息,但把它指向都改为了.text段) 4. 由于数据段已经被去掉,需要将Imports相关信息搬入.text段0x300处。并从新计算 输入表的地址和输入地址表的地址及Import结构相关链表和指针的地址。由于我们在0x300 处,执行时内存映像中地址为0x401100,需要按照0x1100为参照修改链表的各个值。 在制作过程中发现文件对齐WinXp不能小于0x200,否则为非法win32程序,而NT可以时32字节倍数的对齐 ,如果只针对NT的话可以把文件构造的更小. 虽然我们只用到1个段,但pe文件还是必须要有两个section! 修改Import相关地址后必须修改指令信息中的地址。因为每次对API的引用都是在操作编译器提供的一个地址, 该地址存放的时一条jmp [xxxx] 的指令, xxxx 地址即为Import的函数指针数组,Loader在加载程序时 会根据调用的DLL函数的具体加载地址来填充这里,但我们已经把这一地址移到了0x401100,要作修正。 整个文件dump出来的内容如下(WinHex真是强大呀!)。具体意义在后面描述。 你可以在这里下载它:/others/Hello1.exe Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 4D 5A D5 E2 C0 EF BB F9 B1 BE B6 BC C3 BB D3 D0 MZ这里基本都没有 D3 C3 2C 44 4F 53 B1 A3 C1 F4 B5 C4 CD B7 B2 BF 用,DOS保留的头部 D0 C5 CF A2 2C CE D2 C3 C7 B6 BC B2 BB D3 C3 2E 信息,我们都不用. D2 BB D6 B1 B5 BD D5 E2 C0 EF C0 B2 40 00 00 00 一直到这里啦@... 50 45 00 00 4C 01 02 00 00 00 00 00 00 00 00 00 PE..L 00 00 00 00 E0 00 0F 01 0B 01 00 00 00 02 00 00 ? 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 10 00 00 00 02 00 00 @ 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 30 00 00 00 02 00 00 00 00 00 00 02 00 00 00 .0 000000A0 00 01 00 00 00 00 0

您可能关注的文档

文档评论(0)

cbf96793 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档