如何删除一个文件里面的资源,比如a.exe文件的RT_RCDATA类型下有一个名为LOVE的资源,如何删除并可以减少原文件大小? ( 积分: 80 )

  • 主题发起人 主题发起人 l0v3_y1n9
  • 开始时间 开始时间
L

l0v3_y1n9

Unregistered / Unconfirmed
GUEST, unregistred user!
如何删除一个文件里面的资源,比如a.exe文件的RT_RCDATA类型下有一个名为LOVE的资源,如何删除并可以减少原文件大小?<br>我测试代码如下:<br><br>function&nbsp;DeleteResource(const&nbsp;FileName:&nbsp;string;&nbsp;const&nbsp;ResType,&nbsp;ResName:&nbsp;PChar):&nbsp;Boolean;<br>var<br>&nbsp;&nbsp;hUpdate:&nbsp;Cardinal;<br>begin<br>&nbsp;&nbsp;Result:=&nbsp;False;<br>&nbsp;&nbsp;hUpdate:=&nbsp;BeginUpdateResource(PChar(FileName),&nbsp;False);<br>&nbsp;&nbsp;if&nbsp;hUpdate&nbsp;=&nbsp;0&nbsp;then&nbsp;Exit;<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;Result:=&nbsp;UpdateResource(hUpdate,&nbsp;ResType,&nbsp;ResName,&nbsp;0,&nbsp;nil,&nbsp;0);<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;EndUpdateResource(hUpdate,&nbsp;not&nbsp;Result);<br>&nbsp;&nbsp;end;<br>end;<br><br>procedure&nbsp;TForm1.Button7Click(Sender:&nbsp;TObject);<br>begin<br>&nbsp;&nbsp;if&nbsp;DeleteResource('a.exe',RT_RCDATA,'LOVE')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMessAge('OK')<br>&nbsp;&nbsp;else&nbsp;ShowMessAge('Err');<br>end;<br><br>测试后,名为LOVE的资源确实是删除了,但是体积没有减少...<br>我用ResHacker删除资源,体积是会根据所删除的资源大小而减少的.<br>有那位可以帮忙解决实现ResHacker的删除效果!致谢!
 
文件的长度记录在文件的头部!看一看pe文件格式的文章,改之!不难
 

Similar threads

I
回复
0
查看
510
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部