首页
社区
课程
招聘
[求助].pdata段数据有什么用,可以删除不?
发表于: 2017-10-4 15:19 9488

[求助].pdata段数据有什么用,可以删除不?

2017-10-4 15:19
9488
用VC编写的x64可执行EXE程序,比编译成x32 可执行EXE 程序多了.pdata段数据,不知道有什么用。

发现,用CFF Explorer删除 x64位的GUI程序的.pdata和.reloc段数据,文件廋了好多,还可以正常执行。
而用Stud_PE-->Strip Relocation 也可以正常执行 ,发现 .pdata 段数据没有了,多了隐藏的ExtraDat数据,难道   .pdata 是重定位数据。。。
又,删除 .reloc段后,再 用Stud_PE-->Strip Relocation  ,发现 .pdata 段数据没有了,也没有隐藏的ExtraDat数据,

困惑中,知道的回复一下,谢谢。

2个问题(其实是一个):
1. .pdata段数据有什么用?
2.和 .reloc一样直接删除,是否有后遗症什么的?


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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 783
活跃值: (1121)
能力值: ( LV5,RANK:78 )
在线值:
发帖
回帖
粉丝
2
.reloc  是重定位    .pdata    应该是跟date段一样的.可能是放变量之类的.具体做什么要看编译器了.
2017-10-4 15:29
0
雪    币: 32
活跃值: (319)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚测试一个x64的控制台程序,删除  .pdata  ,  后,用  -help  参数测试,回显变成空的,什么也没有了。
2017-10-4 15:37
0
雪    币: 32
活跃值: (319)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
测试的x64的控制台程序:SetAcl 3.0.6,可在下载
https://helgeklein.com/download/

附件中,
setacl.exe为原文件,
setacl3.exe为删除了 reloc和pdata的文件,
上传的附件:
2017-10-4 15:43
0
雪    币: 32
活跃值: (319)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
.pdata对应的是  Exception  Directory  (异常处理目录)


http://blog.csdn.net/xbgprogrammer/article/details/38752651

RUNTIME_FUNCTION

X64  executable  files  use  a  file  format  that  is  a  variant  of  the  PE  file  format,  used  for  X86,  called  PE32+.  Such  files  have  an  extra  section  called  ".pdata"  or  Exception  Directory  that  contains  information  used  for  handling  exceptions.  This  "Exception  Directory"  contains  a  RUNTIME_FUNCTION  structure  for  every  non-leaf  function  in  the  executable.  Non-leaf  functions  are  those  that  call  other  functions.  Each  RUNTIME_FUNCTION  structure  contains  the  offset  of  the  first  and  the  last  instruction  in  the  function  (i.e.  the  function  extents)  and  a  pointer  to  the  unwind  information  structure  that  describes  how  the  function's  call  stack  is  to  be  unwound  in  the  event  of  an  exception.  Figure  4  shows  RUNTIME_FUNCTION  structure  for  a  module  containing  offsets  to  the  beginning  and  the  end  of  the  functions  in  that  module.

意思是说在PE32+中的包含叫做pdata或者exception  directory的段,为每一个非叶子节点函数包含了一个叫做RUNTIME_FUNCTION的结构体,结构体包含了函数第一个及最后一个指令相对模块基址的偏移量一个以及一个指向展开信息结构体用于描述异常发生时函数调用栈如何展开。

调试器还用来使用这些信息遍历调用栈信息。
2017-10-5 10:56
0
雪    币: 32
活跃值: (319)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原来是用来异常处理的,和调试信息一样,鸟用都没有。
2017-10-5 11:01
0
雪    币: 298
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
超级坏蛋 原来是用来异常处理的,和调试信息一样,鸟用都没有。
异常处理还是很有用的。。。
2018-12-9 12:49
0
游客
登录 | 注册 方可回帖
返回
//