首页
社区
课程
招聘
[求助]PE文件中的附加数据的正确处理方法
发表于: 2009-5-17 20:41 8464

[求助]PE文件中的附加数据的正确处理方法

2009-5-17 20:41
8464

写了一个对PE-EXE文件增加区块的小程序,修改原文件的OEP指向该区块位置,该区块内容主要是弹出对话框,然后从原文件的OEP继续开始执行,但是发现当原PE-EXE文件中有附加数据时,则修改后的文件不能正常使用附加数据,程序的源码在附近中(其中overlay.exe程序含有附加数据,当运行程序,执行File/Open将会读取附件数据并显示,对这个程序进行加入区块后,则无法读取处附件数据,我知道读取附件数据是打开文件自身,定位到3800h处读取的,加入区块后的文件,3800h处的数据是区块内容,附加数据被下移了),希望高手指教!
  说明:程序在完善之中,很乱,同时没有实现判断是否是PE-EXE功能!


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
004010DC    6A 00           PUSH 0
004010DE    6A 00           PUSH 0
004010E0    68 00380000     PUSH 3800
004010E5    8B95 E4FEFFFF   MOV EDX,DWORD PTR SS:[EBP-11C]
004010EB    52              PUSH EDX
004010EC    FF15 08504000   CALL DWORD PTR DS:[405008]               ; kernel32.SetFilePointer

    这应该与overlay.exe程序有关。如上,在004010E0处,File/Open读取的数据是从文件固定的偏移0x3800处取数据;而加了区块后,0x4800处才是要读取的数据。不对之处,请指教。
2009-5-19 17:24
0
雪    币: 87
活跃值: (25)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
谢谢您的回复,您的分析是正确的,这个程序就是《加密与解密第三版》中一个例子,我现在是想请教,这样的有附加数据的PE-EXE程序,增加区块后,怎样可以让其正确使用附加数据?除了直接修改3800h为4800h外,有没有什么其他比较好的方法?谢谢指教!
2009-5-19 20:50
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
4
非常简单的一个问题.
根据程序中附加数据的读取方式, 随即应变即可.

比如有的附加数据的读取方式是固定的位置, 就像你的这种情况, 固定从3800h处开始读.

而有的附加数据的读取方式是从文件尾开始向前定位, 比如以前的某些木马的配置信息.

对于后者, 我们原封不动移动附加数据在文件尾即可.
对于前者, 也就是你的情况, 你大可不去更改附加数据的位置, 而将区块数据放到附加数据之后即可(这需要设置一下PE头信息).
2009-5-19 21:22
0
雪    币: 87
活跃值: (25)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
非常感谢楼上的回答!
   我还有两个问题请教:
1.我怎样能判断程序对附加数据的使用情况是前者还是后者?
2.对于前者,怎样修改PE头信息,能否说的具体一点?我是一个菜鸟!附加数据是否不应该装入到内存中的?我将区块直接加到附件数据后面,修改OEP后,产生异常,利用od调试,发现此OEP指向的是附加数据,这个问题应该怎样修改?
   再次感谢指教!
2009-5-20 10:33
0
游客
登录 | 注册 方可回帖
返回
//