- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 应急应变类题型特点.doc
- 底线范文.doc
- 廉政风险防控机制建设岗位风险排查登记表.doc
- 建筑工人工资待遇和工会组织状况调研(中).doc
- 建筑工程施工现场消防演练12.17.doc
- 建筑工程施工现场消防演练6.20.doc
- 开会记录.doc
- 开发存取期刊介绍.doc
- 开发信模板汇总.doc
- 开发流程与程序员注意事项.doc
- 2024浙江衢州市常山县“英才荟”事业单位紧缺急需人才招聘18人笔试备考试题及答案解析.docx
- 2024浙江省近海海洋工程环境与生态安全重点实验室招聘1人笔试备考试题及答案解析.docx
- 2024广东阳江市阳西县补充招聘森林消防应急队员5人笔试备考试题及答案解析.docx
- 2024浙江松阳县新华书店有限公司招聘见习大学生1人笔试备考试题及答案解析.docx
- 2024云南曲靖市马龙区部分事业单位选调(含选调计划)26人笔试备考试题及答案解析.docx
- 2024广西柳州市残疾人劳动就业服务中心招聘残疾人专职委员1人笔试备考试题及答案解析.docx
- 2024广西河池市总工会公开招聘社会化工会工作者3人笔试备考试题及答案解析.docx
- 2024贵州华贵人寿保险股份有限公司第三次社会招聘15人笔试备考试题及答案解析.docx
- 2024广西百色市田东县5月城镇公益性岗位工作人员招聘4人笔试备考试题及答案解析.docx
- 2024广西百色市那坡县坡荷乡人民政府公开招聘编外工作人员2人笔试备考试题及答案解析.docx
文档评论(0)