首页
社区
课程
招聘
[讨论]内存加载运行的DLL,怎么复制DLL自身进硬盘
发表于: 2016-10-3 16:54 6370

[讨论]内存加载运行的DLL,怎么复制DLL自身进硬盘

2016-10-3 16:54
6370
内存加载运行的DLL中

TCHAR dllname[MAX_PATH]={0};
case DLL_PROCESS_ATTACH:
                GetModuleFileName((HINSTANCE)hModule,dllname,sizeof(dllname));

获取不到这个dllname,是空的

宿主内存加载运行这个DLL,想把这个DLL中写个代码,把DLL本身释放到硬盘上,现在只能修改这个DLL的代码,求方法怎么能把DLL本身释放到硬盘上呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
2
为毛要释放文件?
2016-10-3 17:03
0
雪    币: 220
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
貌似好久没见VXK大神了,
释放文件肯定是有别的用途,哈哈,讨论下标题的问题,
2016-10-3 17:34
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
既然都释放啦,为什么不直接加载呢
2016-10-3 18:11
0
雪    币: 220
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
PS:
sxpp

使用环境的限制
2016-10-3 19:17
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个……直接让宿主释放呀
或者根据hinstance直接dump下来?
2016-10-3 19:32
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
根据描述,这个dll不是LZ写的
所以LZ是想把dll文件提取出来分析
综合判断,LZ有做病毒分析或做反外挂之嫌疑
2016-10-3 21:02
0
雪    币: 274
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
你这个DLL本身就是自己(宿主)加载的,是自定义方式加载的
标准windows API当然无法获取名字之类的信息(宿主可以给些HOOK之后的对应API来模拟,但就你的描述的情况显然不是这样)
要从内存中获取保存到文件,就只能dump重建PE,这涉及到很多PE知识,跟写壳、脱壳差不多
重建难度跟这个DLL修改程度相关,比如他抹去了PE头你就要重构PE头等,反正就是还原成标准PE
如果他没修改,只是自己加载的,直接用loadpe等工具dump dll即可(更简单的,procmon找到原始文件复制一份)
如果你只需要代码段,直接用工具dump出内存就行了(自己写代码就用VirtraulQuery相关函数获取长度)
2016-10-3 21:09
0
雪    币: 274
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
DLL是你自己的?完整未修改的PE文件?
自己dump自己,这个需求真有点奇葩
那用VQM系列函数获取内存中个个节,dump出来,还原导入表、重定位表等重构自己就行了
参考这个 https://github.com/glmcdona/Process-Dump
2016-10-3 21:20
0
雪    币: 23
活跃值: (1396)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
既然是内存加载DLL, 那就找Loader的代码啊 ,找到后  在加载前钩住不就有DLL了.
2016-10-4 00:09
0
雪    币: 220
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你们语文明显学的不好啊,回答的都不合题目.
具体点就是用DLLBOX加载的DLL,在DLL中实现个将DLL本身释放到硬盘上,就这么个意思.
2016-10-4 09:07
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
楼上没说错,找Loader代码   在没加载前DUMP出来  就是文件
加载后还原为文件    难度较大。
2016-10-4 17:27
0
雪    币: 68
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
内存加载前 就备份一块DLL文件内存
2016-10-4 19:03
0
雪    币: 56
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
是自己的DLL先备份在写出来
2016-10-5 13:42
0
雪    币: 118
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
http://blog.csdn.net/dalerkd/article/details/50688790
给出了详细的步骤说明,相信按照其你可以得到你想要的。
而我身边并没有现在的包。
2016-10-19 11:37
0
雪    币: 350
活跃值: (87)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
16
你是不是,是想自己加载自己的DLL之后,动态更改其中的代码,然后将更改的代码写回原文件?这个简单啦!根据PE文件的内存对齐值和文件对齐值,将代码在的内存地址转换成文件上的指针,然后写入就行了!
2016-11-17 20:27
0
游客
登录 | 注册 方可回帖
返回
//