找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1807|回复: 5

【C语言】如何将资源文件内的数据输出到文件

[复制链接]

4

主题

28

回帖

289

积分

用户组: 中·技术宅

UID
5449
精华
0
威望
6 点
宅币
245 个
贡献
0 次
宅之契约
0 份
在线时间
42 小时
注册时间
2019-12-13
发表于 2020-7-21 22:44:21 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 德小SHUO 于 2020-7-21 22:46 编辑

是这样的,我想让一个可执行文件释放出一个 dll

那个 dll 被我写进
dll.rc
,并使用 windres 命令将其编译为 .o 文件

将它与源程序用 MinGW 链接在了一起,就是不知道怎么把它输出到文件

求各位大佬指点
回复

使用道具 举报

65

主题

117

回帖

1万

积分

用户组: 超级版主

OS与VM研究学者

UID
1043
精华
35
威望
789 点
宅币
8310 个
贡献
1094 次
宅之契约
0 份
在线时间
2072 小时
注册时间
2015-8-15
发表于 2020-7-22 13:12:10 | 显示全部楼层
简单说就是你有个EXE文件,这个文件的资源里面有一个DLL,然后你要把他提出来?
说说我的方法,以下步骤除了最终的写文件之外均不需要使用任何API。
第一步:拿到你自身的映像地址。不使用API的方法就是Teb->Peb->ImageBaseAddress,其中Teb->Peb这个读fs/gs段即可,但GCC的话可能需要你用汇编。
第二步:解析PE文件拿到资源表地址。资源表的相对地址就在PE可选头上数据目录的第三项。
第三步:解析资源表,按类型、名称、语言的顺序依次遍历资源表。找到你那个DLL的位置后就可以调用写文件的函数了。
你可以参考这些帖子,虽然都不是提取个DLL出来,但我认为算是抛砖引玉了:
无API获取进程文件路径(用于第一步的参考):https://www.0xaa55.com/thread-16873-1-1.html
解析PE文件版本资源(用于第二步和第三步的参考):https://www.0xaa55.com/thread-25934-1-1.html
解析PE文件位图资源(用于第二步和第三步的参考):https://www.0xaa55.com/thread-26000-1-1.html
回复 赞! 靠!

使用道具 举报

4

主题

28

回帖

289

积分

用户组: 中·技术宅

UID
5449
精华
0
威望
6 点
宅币
245 个
贡献
0 次
宅之契约
0 份
在线时间
42 小时
注册时间
2019-12-13
 楼主| 发表于 2020-7-22 21:46:42 | 显示全部楼层
tangptr@126.com 发表于 2020-7-22 13:12
简单说就是你有个EXE文件,这个文件的资源里面有一个DLL,然后你要把他提出来?
说说我的方法,以下步骤除 ...

感谢大佬的指点
回复 赞! 靠!

使用道具 举报

9

主题

179

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
6
威望
441 点
宅币
8683 个
贡献
850 次
宅之契约
0 份
在线时间
339 小时
注册时间
2018-9-19
发表于 2020-7-22 22:04:16 | 显示全部楼层
tangptr@126.com 发表于 2020-7-22 13:12
简单说就是你有个EXE文件,这个文件的资源里面有一个DLL,然后你要把他提出来?
说说我的方法,以下步骤除 ...

拿自己的hInstance也不需要走PEB,直接取 __ImageBase 变量的地址就行了,链接器会保证 __ImageBase 变量刚好指向PE头
回复 赞! 靠!

使用道具 举报

4

主题

28

回帖

289

积分

用户组: 中·技术宅

UID
5449
精华
0
威望
6 点
宅币
245 个
贡献
0 次
宅之契约
0 份
在线时间
42 小时
注册时间
2019-12-13
 楼主| 发表于 2020-7-22 23:35:41 | 显示全部楼层
本帖最后由 德小SHUO 于 2020-7-22 23:36 编辑
tangptr@126.com 发表于 2020-7-22 13:12
简单说就是你有个EXE文件,这个文件的资源里面有一个DLL,然后你要把他提出来?
说说我的方法,以下步骤除 ...


谢谢大佬们热心回复,不过我找到了个更简单的方法
程序资源自释放 CSDN
回复 赞! 靠!

使用道具 举报

4

主题

36

回帖

667

积分

用户组: 大·技术宅

UID
7138
精华
0
威望
17 点
宅币
578 个
贡献
15 次
宅之契约
0 份
在线时间
63 小时
注册时间
2021-5-11
发表于 2021-5-23 21:48:36 | 显示全部楼层
为什么不用压缩软件做自解压包呢
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-27 12:33 , Processed in 0.034802 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表