首页
论坛
课程
招聘
[原创]DLL自卸载无模块注入源码(一)
2013-12-1 17:28 37271

[原创]DLL自卸载无模块注入源码(一)

2013-12-1 17:28
37271
  这种无模块注入的特点是:
     编译生成的是个DLL,使用正常的DLL注入方法,把该DLL注入到目标进程后,DLL会自己去做无模块操作,对于某些场合(你懂的)比较方便.
  原理:
    DllMain第一次执行时,重新申请一块内存把DLL文件进行模拟加载,然后再调用模拟加载PE的DllMain,第二次的DllMain就在非模块的内存中执行了。无模块加载过程大家可能都有了解。接下来就是卸载DLL自身了,这是关键点,不过说白了其实也很简单,只要控制好DllMain的返回值就行了详见源码
  还有种方法可以不用模拟PE加载,也由Dll本身来实现无模块   
  附件中的TestDll.dl注入到目标进程后,无模块线程使用OutputDebugString每5秒输出一次"No Module Thread"打印消息

[注意] 招人!base上海,课程运营、市场多个坑位等你投递!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (47)
雪    币: 56
活跃值: 活跃值 (256)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Yecate 活跃值 2013-12-1 18:34
2
0
好像很牛逼的样子啊
雪    币: 280
活跃值: 活跃值 (419)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
sxpp 活跃值 1 2013-12-1 18:42
3
0
如果注入后文件不存在就好啦
雪    币: 5
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rqqeq 活跃值 2013-12-1 19:30
4
0
汗……为何不直接插线程进去……
雪    币: 157
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shijiheima 活跃值 2013-12-1 20:14
5
0
什么原理?可简述下?
雪    币: 110
活跃值: 活跃值 (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ling林 活跃值 2013-12-1 20:54
6
0
看了你的代码,想问一下 怎样注入时dllmain的reason会为NO_MODULE_MARK?
雪    币: 25
活跃值: 活跃值 (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哥布林 活跃值 2013-12-1 20:58
7
0
我猜就是挂起所有线程,释放掉DLL,在原地址重新申请内存的那个,然后重新处理一下内存。gh0st里面应该就有这段代码。
PS:听人说这种方法在WOW64下无效。我自己没测试过,不知道是不是真的这样。
雪    币: 5239
活跃值: 活跃值 (270)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PPTV 活跃值 2013-12-1 21:26
8
0
无模块注入源码,什么原理?可简述下?
雪    币: 242
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ShadoWWinL 活跃值 2013-12-1 21:39
9
0
看了代码。原理dll先注入到进程。获得dll全路径。然后读取dll。申请一块ImageSize内存。按节表拷贝节内容。
加载dll赋值IAT。然后重定位。最后调用NO_MODULE_MARK标记调用DllMain
完事后free dll。留下那块dll内存来干活。
和MemoryLoadLibrary差不多。不过MemoryLoadLibrary写的更好些
雪    币: 255
活跃值: 活跃值 (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 活跃值 1 2013-12-1 22:53
10
0
来关注一下
雪    币: 24
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shinck 活跃值 2013-12-1 23:50
11
0
关注一下。。。
雪    币: 174
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
岁月静好 活跃值 2013-12-2 00:33
12
0
mark,支持。
雪    币: 163
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sinmon 活跃值 2013-12-2 02:07
13
0
膜拜大神
雪    币: 48
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
修莫问 活跃值 2013-12-2 17:33
14
0
source里面的工程文件跟给的源码不是一个项目吧
雪    币: 107
活跃值: 活跃值 (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
chenwitch 活跃值 2013-12-2 20:25
15
0
搞错了,,,已改
雪    币: 1396
活跃值: 活跃值 (332)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 活跃值 19 2013-12-2 23:19
16
0
找到了添加自己代码的地方
雪    币: 48
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
修莫问 活跃值 2013-12-3 14:23
17
0
感谢分享~
雪    币: 64
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kenjidaye 活跃值 2013-12-3 14:40
18
0
收藏了,DLL自卸载无模块注入源码
雪    币: 21
活跃值: 活跃值 (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZSYL 活跃值 2013-12-4 23:01
19
0
学习学习
雪    币: 1396
活跃值: 活跃值 (332)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 活跃值 19 2013-12-5 10:10
20
0
测试了下,可以执行自己的代码,执行exe的时候过不了卡巴,嘿嘿
只是简单测试了下
雪    币: 184
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 活跃值 2013-12-5 10:19
21
0
准确说是gh0st里面有这个代码的链接吧。 没有直接用这个代码吧  3.6.0
雪    币: 107
活跃值: 活跃值 (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
chenwitch 活跃值 2013-12-5 17:06
22
0
下了份gh0st 3.6的代码,没找到相关的代码啊,你说的是在哪个文件里的?
雪    币: 184
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 活跃值 2013-12-5 17:17
23
0
你搜索一下baidu... 里面是一个baidu的链接。
雪    币: 3702
活跃值: 活跃值 (363)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxzpy 活跃值 2013-12-5 17:51
24
0


看看了!!!
雪    币: 107
活跃值: 活跃值 (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
chenwitch 活跃值 2013-12-5 17:51
25
0
找到了,看了下代码,实现不一样的。这篇文章里为了卸载DLL自身做了很多操作,而且需要导出函数配合。我的代码里卸载DLL自身非常简单,FreeLibrary都没调用
游客
登录 | 注册 方可回帖
返回