首页
社区
课程
招聘
[求助]关于DLL隐藏
发表于: 2012-12-6 06:46 10019

[求助]关于DLL隐藏

2012-12-6 06:46
10019
一个DLL的启动过程是这样的:
1,被宿主程序LoadLibraryA加载进来
2,首先DLL申请了一块内存(和自身模块大小一样)

3.VirtualProtect修改DLL的内存属性(PAGE_EXECUTE_READWRITE)

4.对第2步申请的内存用WriteProcessMemory写数据(把DLL的数据写进去)

5.卸载DLL

6.用被卸载的DLL句柄为起始地址申请一块内存(大小和DLL大小一样)

7.再用WriteProcessMemory把第6步申请内存填充数据(数据是buf是第2步申请的内存地址数据)

8.VirtualProtect把以DLL句柄为起始地址内存属性修改为可执行(代码段)

9.把第2步申请的内存释放掉


关键代码就是这么多了.DLL是带窗口的,这样做了之后DLL就可以隐藏起来了eek:

上面的分析是OD调试出来的,但是实际DLL是注入到HS保护的游戏,请问我该怎么做才能取到DLL模块句柄呢?

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嘿嘿...暴力搜索特征码可以么??

还是没太看懂你要表达的意思..
2012-12-6 07:50
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
那个载入基址就是句柄啊。。。第一步LoadLibrary的那个地址就是。。。后面的再咋改。。。只要PE信息没变,都一样的。。。就跟断链差不多的,还不如内存LoadPE来得直接
2012-12-6 08:16
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
游戏是HS保护的,我当然知道LoadLibrary那个就是句柄,现在的问题是 DLL已经完成了这些步骤之后,该怎么去得到这个句柄,并不是我LoadLibrary的
2012-12-6 08:27
0
雪    币: 343
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
确实隐藏了dll,dll的相关信息应该直接用API也拿不到了,特征码搜索?
2012-12-6 10:44
0
雪    币: 107
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
特征码可以找到

另外关注这个隐藏DLL,最后一步是不是Createthread创建线程启动第六步的那个地址即可实现DLL?

呵呵求解答
2012-12-6 14:28
0
雪    币: 256
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
图的流程很清晰,但文字表述没怎么懂,GetModuleHandle ?
2012-12-6 14:32
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
HMODULE GetDllSelfModuleHandle()
{
        MEMORY_BASIC_INFORMATION mbi;
        RtlZeroMemory(&mbi,sizeof(MEMORY_BASIC_INFORMATION));

        return ((::VirtualQuery(GetDllSelfModuleHandle,&mbi,sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
}
这应该也可以吧
2012-12-6 15:00
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9
pe文件有dos头,暴力找内存,列表所有dos头,和api枚举出来的hmodule对比,找出隐藏的,跟据代码段特征识别这个模块是啥
2012-12-6 20:14
0
雪    币: 7527
活跃值: (5362)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
不是GetModuleHandle么?
2012-12-6 20:57
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
DLL被Free掉了,GetModuleHandle得不到的
2012-12-7 01:18
0
雪    币: 5163
活跃值: (3402)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
扫内存就好。
2012-12-7 03:28
0
雪    币: 256
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
DLL Free掉之前获取,然后写到你申请的那块内存里面
2012-12-7 10:14
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
已经解决了 ,我劫持了游戏的DLL,在HS还没加载起来就被游戏加载了,然后Hook LoadLibraryA
得到了他的句柄,感谢大家的回复
2012-12-8 18:14
0
雪    币: 2325
活跃值: (4878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我想问下 怎么能用指定地址来申请内存·!
2012-12-9 01:47
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
http://baike.baidu.com/view/1521481.htm
2012-12-9 13:05
0
雪    币: 86
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
过于复杂 ,修改一个值就可以了 ,哎 ,都做成这样了 ,该抹的字段顺带的抹一下吧  ,一步loader 即可,不用来来回回这么复杂 ,懂得都知道咧
2012-12-9 13:17
0
雪    币: 2325
活跃值: (4878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
再来回复下···我用那个 API 申请不到 原DLL的内存啊·!! DLL卸载后再申请的·1!
2012-12-10 01:32
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
DLL不卸载的话 那块内存是被占用的啊
2012-12-10 19:50
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
哈哈 这个不是我写的啦,是别人的辅助DLL这样做的,(DELPHI写的)
2012-12-10 19:51
0
雪    币: 2325
活跃值: (4878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我卸载了·!!我用OD找不到那块内存了··然后申请··返回0 ···OD也找不到那个内存·!!
2012-12-10 23:43
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
执行DLL隐藏的这部分代码是申请内存写入SELLCODE来调用的,因为DLL不能FREE掉自己
2012-12-11 00:50
0
雪    币: 2325
活跃值: (4878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我是自己写个测试程序的··DLL也是···然后加载DLL  EXE来卸载·!!申请也是EXE来操作的·!
2012-12-11 01:06
0
雪    币: 2291
活跃值: (2185)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
24
哈哈,这个方法以前在外挂中见过,确实不错。嘿嘿。
2012-12-11 17:35
0
游客
登录 | 注册 方可回帖
返回
//