龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课 9 [已完结] C++零基础开发DXF内存脚本辅助教程 32课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 5344|回复: 1

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

[复制链接]

15

主题

3

回帖

22

积分

编程入门

Rank: 1

龙马币
40
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使用

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

0

主题

23

回帖

35

积分

编程入门

Rank: 1

龙马币
123
代码爱好者 | 显示全部楼层
6666666666666666666666
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表