首页
社区
课程
招聘
[旧帖] 自己写的一个pe loader,申请邀请码 0.00雪花
发表于: 2009-11-4 12:27 4479

[旧帖] 自己写的一个pe loader,申请邀请码 0.00雪花

2009-11-4 12:27
4479

本人接触pe文件格式不久,参考看雪上的一些资料写了一个pe loader,主要是通过把需要加载的文件的所所有section加载到相应的RVA上,然后进行重定位处理、导入表和导出表处理、资源段处理。由于本loader.exe会被加载到0x0f400000处,因此可以把0x400000给被加载的文件预留了,这样可以避免重定位所带来的性能损耗。导入表的处理主要是通过调用GetProcAddress获取导入表中函数的地址。导出表一般仅在dll中使用,而此主要是用于load exe文件,所以不用做任何处理。资源段处理资料不多,我这里好像有些问题,加载console程序可以正常执行,但是当加载gui程序则不能成功。望高手能指教一二。

执行结果:


加载cmd.exe会提示“系统无法在消息文件中为 Application 找到消息号为 0x2378 的消息文本“错误,不知道说何原因,也望高手指点一二。

主要代码:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主比较厉害
2009-11-4 13:04
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
lz强人,我是来学习的。
是不是部分dll文件没有加载成功,cmd依赖的dll文件应该不止这些,比如你得程序中显示卷、目录信息等操作都失败了。
2009-11-4 13:33
0
雪    币: 66
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
分别用dependency walker和Stud_PE察看了cmd.exe,两个结果如下,比较奇怪为什么依赖的dll会不一样,还是Stud_PE察看的结果不正确呢?



上传的附件:
2009-11-4 13:53
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
都是些大牛,厉害
2009-11-4 15:42
0
雪    币: 66
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
坛主、斑竹等大牛们,帮帮小弟看看是哪里出问题了?
谢啦
2009-11-4 17:37
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
牛人来得看到晕了
2009-11-5 00:13
0
雪    币: 21
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
厉害  学习了   有收获
2009-11-5 09:36
0
雪    币: 505
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持楼主,进来学习
2009-11-5 09:58
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
如果loader自身被加载到高地址(/fixed /base),把0x400000预留出来。我觉得使用CreateFile/CreateFileMapping/MapViewOfFileEx更方便。

CreateFileMapping 使用 SEC_IMAGE 选项,这样Image的加载,各个section的映射都由系统完成了,包括设置属性。

最后自己fixup import table就OK了。
2009-11-6 16:59
0
雪    币: 66
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
这确实是个好方法,会简化代码,但是一些内部细节同时也会被这些接口给屏蔽了,有关rv\rav等一些知识点就没办法涉及到,所以后来采用自己把sections加载到内存中.本来LoadLibrary和GetProAddress也想通过自己的代码来替代该功能的,不过为了方便就没有这么做了,呵呵.
2009-11-6 17:39
0
雪    币: 66
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
谢谢看雪的支持,希望以后能和大家一起进步
2009-11-9 20:07
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
啥时候才能转正啊~~
2010-2-3 10:23
0
雪    币: 520
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
啥时候才能转正啊
2010-2-5 15:39
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
强悍啊 坚决顶楼主
2010-2-13 17:03
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
厉害,学习了
2010-2-20 22:28
0
雪    币: 172
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
楼主牛人,学习了
2011-10-4 14:35
0
游客
登录 | 注册 方可回帖
返回
//