首页
社区
课程
招聘
[原创]DLL自卸载无模块注入源码(一)
发表于: 2013-12-1 17:28 41348

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

2013-12-1 17:28
41348

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


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

上传的附件:
收藏
免费 5
支持
分享
最新回复 (47)
雪    币: 127
活跃值: (2803)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好像很牛逼的样子啊
2013-12-1 18:34
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
如果注入后文件不存在就好啦
2013-12-1 18:42
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
汗……为何不直接插线程进去……
2013-12-1 19:30
0
雪    币: 176
活跃值: (267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
什么原理?可简述下?
2013-12-1 20:14
0
雪    币: 110
活跃值: (308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看了你的代码,想问一下 怎样注入时dllmain的reason会为NO_MODULE_MARK?
2013-12-1 20:54
0
雪    币: 27
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我猜就是挂起所有线程,释放掉DLL,在原地址重新申请内存的那个,然后重新处理一下内存。gh0st里面应该就有这段代码。
PS:听人说这种方法在WOW64下无效。我自己没测试过,不知道是不是真的这样。
2013-12-1 20:58
0
雪    币: 9720
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
无模块注入源码,什么原理?可简述下?
2013-12-1 21:26
0
雪    币: 246
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看了代码。原理dll先注入到进程。获得dll全路径。然后读取dll。申请一块ImageSize内存。按节表拷贝节内容。
加载dll赋值IAT。然后重定位。最后调用NO_MODULE_MARK标记调用DllMain
完事后free dll。留下那块dll内存来干活。
和MemoryLoadLibrary差不多。不过MemoryLoadLibrary写的更好些
2013-12-1 21:39
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
来关注一下
2013-12-1 22:53
0
雪    币: 24
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
关注一下。。。
2013-12-1 23:50
0
雪    币: 137
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark,支持。
2013-12-2 00:33
0
雪    币: 163
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
膜拜大神
2013-12-2 02:07
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
source里面的工程文件跟给的源码不是一个项目吧
2013-12-2 17:33
0
雪    币: 88
活跃值: (156)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
搞错了,,,已改
2013-12-2 20:25
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
16
找到了添加自己代码的地方
2013-12-2 23:19
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
感谢分享~
2013-12-3 14:23
0
雪    币: 64
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
收藏了,DLL自卸载无模块注入源码
2013-12-3 14:40
0
雪    币: 16
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
学习学习
2013-12-4 23:01
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
20
测试了下,可以执行自己的代码,执行exe的时候过不了卡巴,嘿嘿
只是简单测试了下
2013-12-5 10:10
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
准确说是gh0st里面有这个代码的链接吧。 没有直接用这个代码吧  3.6.0
2013-12-5 10:19
0
雪    币: 88
活跃值: (156)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
22
下了份gh0st 3.6的代码,没找到相关的代码啊,你说的是在哪个文件里的?
2013-12-5 17:06
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
你搜索一下baidu... 里面是一个baidu的链接。
2013-12-5 17:17
0
雪    币: 3496
活跃值: (749)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24


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