首页
论坛
专栏
课程

[原创]没什么卵用的——驱动运行过程中自卸载(我 卸 我 自 己)

2019-3-17 08:55 3355

[原创]没什么卵用的——驱动运行过程中自卸载(我 卸 我 自 己)

2019-3-17 08:55
3355


如果你试过sc start TesSafe,你会发现:它在没有通信的情况下,几秒后会自动unload自己



那么这是怎么做到的呢?

当当当。。。。。

PUNICODE_STRING g_pRegistryPath  = NULL;
PWORK_QUEUE_ITEM g_pUnloadWorkItem =NULL;

DriverEntry:
  g_pRegistryPath = (PUNICODE_STRING)ExAllocatePool(NonPagedPool, sizeof(UNICODE_STRING));
  g_pRegistryPath ->Buffer = (PWCH)ExAllocatePool(NonPagedPool, registry_path->MaximumLength);
  g_pRegistryPath ->Length = registry_path->Length;
  g_pRegistryPath ->MaximumLength = registry_path->MaximumLength;
  memcpy(g_pRegistryPath->Buffer, registry_path->Buffer, g_pRegistryPath->Length);

  g_pUnloadWorkItem = (PWORK_QUEUE_ITEM)ExAllocatePool(NonPagedPool, sizeof(WORK_QUEUE_ITEM));
  ExInitializeWorkItem(g_pUnloadWorkItem, (PWORKER_THREAD_ROUTINE)ZwUnloadDriver, g_pRegistryPath);

当要自卸载时:
ExQueueWorkItem(g_pUnloadWorkItem, DelayedWorkQueue);

内存泄露什么的不要在意了

2019-03-18 无内存泄露改进版:

AsmDriverUnloadSelf PROC
lea rcx, RegistryPath
sub rsp, 8
call ZwUnloadDriver
add rsp, 8
lea rcx, AsmDriverUnloadSelf
jmp ExFreePool
int 3
ZwUnloadDriver dq 0h
ExFreePool dq 0h
RegistryPath dq 0h
AsmDriverUnloadSelf ENDP

懂的都懂,不懂的也别瞎琢磨了

关键点就两个:
ZwUnloadDriver要求rsp对齐16字节,所以要手动sub rsp, 8
驱动常规卸载例程DriverUnload里要判断是不是来自AsmDriverUnloadSelf的卸载行为,如果不是你得把这个手动free了,不然正常卸载就内存泄露了


[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

最后于 2019-3-18 09:22 被hzqst编辑 ,原因:
上一主题 下一主题
最新回复 (17)
又出bug了 2 2019-3-17 14:58
5
0
牛逼
最后于 2019-3-17 15:00 被又出bug了编辑 ,原因:
JACK李冰 2019-3-17 16:16
6
0
没什么用,驱动不卸载DXF照样稳如狗
JACK李冰 2019-3-17 16:18
7
0
传奇私服反外挂GK,连驱动都没有,照样吊打各路外挂。
yy虫子yy 2019-3-17 16:19
8
0
不想太复杂的同学,直接在驱动入口返回unsuccess就卸载了,内存也不会泄露了
黑洛 1 2019-3-17 16:27
9
0
牛批牛批
crackJ 1 2019-3-18 15:01
10
0
表哥的标题已经说的很清楚了,大家没必要纠结,感谢表哥无私的分享精神,上面说风凉话的首先先看看自己分享了啥
Thead 2019-3-18 17:34
11
0
感谢表哥分享
天涯Q 2019-3-30 13:27
12
0
老哥,能加我QQ吗,想合作一下,,Q:5826840
天涯Q 2019-4-6 21:26
13
0
老哥,加我QQ好友,想合作5826840
wx_iBVLGARI 2019-4-9 11:24
14
0
大神,接活嘛,求合作,加我QQ:180249768
挂狗 2019-5-11 22:26
15
0
东西是好东西,就是差了点金坷垃
我爱小三 2019-5-12 22:58
16
0
大黄狗天下第一
编程小白 2019-5-15 20:20
17
0
为啥要free  AsmDriverUnloadSelf ?
紫梦寒 2019-5-15 23:54
18
0
表哥的标题已经说的很清楚了,大家没必要纠结,感谢表哥无私的分享精神,上面说风凉话的首先先看看自己分享了啥
游客
登录 | 注册 方可回帖
返回