我们发现有的可执行文件有DLL依赖但是没有看到DLL文件,就一个可执行文件。有的支持多种语言但是没有看到资源dll,这个时候你使用exescope或者pe explorer打开看下资源发现和一般的可执行文件的资源结构相比多了一些类型,其实这些可执行文件里面都包含有执行所需要的各种资源。此文为简单介绍,详细win32 api使用请查看msdn。
我们一般从可执行文件(本文件或者其他文件)读取资源需要做一下步骤:
1.FindResource从模块中查找资源,主要资源类型和资源名称。注意第一个参数是模块的HINSTANCE。
2.LoadResource导入资源。
3.LockResource这个函数返回的就是资源数据了,不管你是文本,图片,等等,需要具体处理。
4.SizeOfResource可以获取资源的长度。
5.FreeResource这个函数不需要自己调用,系统会自动释放。
以上是读取资源。
下面再说明怎么写入或者删除资源
1.BeginUpdateResource,不要对当前在执行的可执行文件或者已经载入内存的可执行文件修改资源,会被拒绝(当然你可以做个副本,修改后覆盖原文件)。
2.UpdateResource更新资源,调用此函数资源并没有更新到文件中,请注意此文件的参数要填写正确,如果最后两个参数为NULL, 0表示要删除指定的资源。
3.EndUpdateResource更新资源到文件。
操作资源差不多就以上一些函数,当然还有EnumResource***开头的一些枚举函数,也都是很有用处的,比如你要知道一个类型下资源的数量就可以使用EnumResourceNames,在此不一一列举。应用这些API可以做很多有意思的事,就看怎么发挥想象力!
附带一篇怎么加载资源中的dll(不需要释放到磁盘)这是地址
这一篇是歪国人写的,看后也能受益匪浅,这是地址
谢谢所有无私的贡献者,如不能转载还请留言,会立即删除!