紫水晶编程技术论坛 - 努力打造成全国最好的编程论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 9232|回复: 102

无硬编码动态关闭驱动签名强制(DSE),支持Win7~Win10

  [复制链接]

2

主题

80

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
245
发表于 2019-1-1 21:42:51 | 显示全部楼层 |阅读模式
ci.dll中g_CiOptions全局变量的值决定系统在加载驱动的时候是否会检测数字签名
通过IDA发现在CipInitialize函数中可以定位到g_CiOptions这个全局变量

//win7 windbg
CI!CipInitialize:
fffff880`00ce5308 488bc4          mov     rax,rsp
fffff880`00ce530b 48895808        mov     qword ptr [rax+8],rbx
fffff880`00ce530f 48896810        mov     qword ptr [rax+10h],rbp
fffff880`00ce5313 48897020        mov     qword ptr [rax+20h],rsi
fffff880`00ce5317 4c894018        mov     qword ptr [rax+18h],r8
fffff880`00ce531b 57              push    rdi
fffff880`00ce531c 4154            push    r12
fffff880`00ce531e 4155            push    r13
fffff880`00ce5320 4156            push    r14
fffff880`00ce5322 4157            push    r15
fffff880`00ce5324 4883ec20        sub     rsp,20h
fffff880`00ce5328 498be8          mov     rbp,r8
fffff880`00ce532b 488bf2          mov     rsi,rdx
fffff880`00ce532e 890dbcaaffff    mov     dword ptr [CI!g_CiOptions (fffff880`00cdfdf0)],ecx
fffff880`00ce5334 ff15165dffff    call    qword ptr [CI!_imp_PsGetCurrentProcess (fffff880`00cdb050)]

//win7 IDA
地址        Function        指令
INIT:000000000006E406                                db 'PsGetCurrentProcess',0
INIT:000000000006E49C                                db 'PsGetCurrentProcessId',0
PAGE:000000000000D334        CipInitialize                        call    cs:__imp_PsGetCurrentProcess
PAGE:000000000000E96C        CipCallPeauth                        call    cs:__imp_PsGetCurrentProcess
PAGE:000000000000F08A        CipFixImageType                        call    cs:__imp_PsGetCurrentProcess
PAGE:00000000000198A6        PEReturnState                        call    cs:__imp_PsGetCurrentProcessId
PAGE:000000000001B507        I_PEUpdateHashCache                        call    cs:__imp_PsGetCurrentProcessId
.idata:0000000000003050                                extrn __imp_PsGetCurrentProcess:qword
.idata:0000000000003090                                extrn __imp_PsGetCurrentProcessId:qword


//win10 windbg
CI!CipInitialize:
fffff804`6dab68f4 48895c2408      mov     qword ptr [rsp+8],rbx
fffff804`6dab68f9 48896c2410      mov     qword ptr [rsp+10h],rbp
fffff804`6dab68fe 4889742418      mov     qword ptr [rsp+18h],rsi
fffff804`6dab6903 57              push    rdi
fffff804`6dab6904 4154            push    r12
fffff804`6dab6906 4156            push    r14
fffff804`6dab6908 4883ec40        sub     rsp,40h
fffff804`6dab690c 498be9          mov     rbp,r9
fffff804`6dab690f 890dfb63ffff    mov     dword ptr [CI!g_CiOptions (fffff804`6daacd10)],ecx
fffff804`6dab6915 498bf8          mov     rdi,r8
fffff804`6dab6918 488bf2          mov     rsi,rdx
fffff804`6dab691b 448bf1          mov     r14d,ecx
fffff804`6dab691e ff15bcc7ffff    call    qword ptr [CI!_imp_PsGetCurrentProcess (fffff804`6dab30e0)]

//win10 IDA
地址        Function        指令
PAGE:000000000002691E        CipInitialize                        call    cs:__imp_PsGetCurrentProcess
PAGE:0000000000034EC8        CipValidateDataMappedFileWithContext                        call    cs:__imp_PsGetCurrentProcess
PAGE:000000000003EA60        CiSetUnlockInformation                        call    cs:__imp_PsGetCurrentProcess
PAGE:000000000004E494        PEReturnState                        call    cs:__imp_PsGetCurrentProcessId
PAGE:000000000005069A        I_PEUpdateHashCache                        call    cs:__imp_PsGetCurrentProcessId
.idata:00000000000230C0                __imp_PsGetCurrentProcessId dq ?        ; DATA XREF: PEReturnState+64↓r
.idata:00000000000230E0                ; __int64 (*PsGetCurrentProcess)(void)

通过汇编代码可以发现g_CiOptions的后面100%会调用PsGetCurrentProcess函数
于是通过IDA搜索PsGetCurrentProcess,发现最先调用PsGetCurrentProcess的函数就是CipInitialize
于是写了以下代码来定位g_CiOptions的地址,然后修改g_CiOptions地址的值实现关闭DSE,可以同时在Win7~Win10使用

核心代码:
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1水晶币 +20 收起 理由
Tesla.Angela + 20 赞一个!

查看全部评分

824

主题

3388

帖子

2

精华

管理员

身居欧盟,心系中华。

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
36201
发表于 2019-1-2 01:14:51 | 显示全部楼层
楼主厉害,C语言的代码写出易语言的效果。。。哈哈。。。

0

主题

8

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
32
发表于 2019-1-4 12:53:09 | 显示全部楼层
xuexixuexi

0

主题

31

帖子

0

精华

金牌会员

Rank: 4Rank: 4Rank: 4Rank: 4

积分
737
发表于 2019-1-5 09:31:30 | 显示全部楼层
厉害,比静态重启过签名验证好多了,就是不知道稳定不稳定

0

主题

63

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
169
发表于 2019-1-7 22:45:17 | 显示全部楼层
学习了,动手看看取

2

主题

165

帖子

0

精华

贵宾会员

Rank: 2Rank: 2

积分
943
发表于 2019-1-7 22:59:32 | 显示全部楼层
来看看是不是真的

2

主题

165

帖子

0

精华

贵宾会员

Rank: 2Rank: 2

积分
943
发表于 2019-1-7 23:07:32 | 显示全部楼层
楼主 ci基址 是怎么得到的?  不是说无硬编码吗  0x15ff和0x0d89 算吗?

8

主题

48

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
353
发表于 2019-1-8 23:36:55 | 显示全部楼层
膜拜学习

0

主题

45

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
55
发表于 2019-1-9 00:56:07 | 显示全部楼层
感谢无私的分享!!

0

主题

107

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
336
发表于 2019-1-9 10:19:17 | 显示全部楼层
谢谢分享,学习一波
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|Archiver|紫水晶工作室 ( 粤ICP备05020336号 )

GMT+8, 2021-1-17 16:54 , Processed in 0.075033 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表