首页
社区
课程
招聘
[旧帖] [求助]关于PE资源的疑难问题 0.00雪花
2008-5-24 18:34 4518

[旧帖] [求助]关于PE资源的疑难问题 0.00雪花

2008-5-24 18:34
4518
刚遇到了一个问题,百思不得其解,望大家给予指点,谢谢!

是这样的,打算替换 VC++ 6.0 编译好的 PE 文件中的 BMP 资源,因为这个 BMP 是由用户随机指定的(大小不一),所以需要在另一个程序中重新构建 PE 的资源树实现。

这个程序中的资源除了 BMP,还有图标(组)、菜单、对话框、字符串、版本信息。现在遇到的问题是,修改完毕后,程序运行正常,但是唯独对话框不能显示。用 eXeScope、ResHacker 等查看其对话框资源,发现是乱码,但是其它资源均正常。

我的算法是先遍历源 PE 的资源树,记下每个叶节点(即资源数据)的相关信息,然后照搬除了 BMP 的资源到目标 PE 文件,BMP 资源另行拷贝指定的。当然在这一过程中各资源的排列顺序会打乱,我想问题是不是会出在这?难道 PE 的各资源有个必须依据的排列顺序?或者编译后对话框资源的偏移地址不能改变?(相关结构中的指针已经更新,不是这个的问题)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xyu 2008-5-24 19:29
2
0
替换资源直接用工具不就行了么?
如果出现错误,看看和你的图片格式,色位有没有关系
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Aqua 2008-5-24 19:50
3
0
楼上大概没注意我说的话,是用户在另一个客户程序中指定图片,需要现生成 PE 文件。
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Aqua 2008-5-24 20:37
4
0
弄好了。原来每个资源数据在 PE 中的存储起始位要按 8 字节的边界对齐,这个尤其对于对话框很重要,否则就会产生上面所出现的无法加载问题。
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xyu 2008-5-25 10:50
5
0
楼主不是要"打算替换 VC++ 6.0 编译好的 PE 文件中的 BMP 资源",那我就不太明白了,既然替换bmp资源,你直接用资源工具替换图片就行啦,难道还用二进制替换?
都糊涂了不明白你的意思?“需要在另一个程序中重新构建 PE 的资源”
到底是替换几个pe里面的资源呢?
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Aqua 2008-5-25 11:14
6
0
举个例子吧,用 WinRAR 把压缩好的  *.rar 文件编译成自解压 *.exe 文件,这个过程中就涉及到资源的重建问题,这个是由 WinRAR 自己完成的,它总没有调用资源工具吧?
“需要在另一个程序中重新构建 PE 的资源”中的“另一个程序”就相当于 WinRAR。
楼上明白了吧。
游客
登录 | 注册 方可回帖
返回