Pass all use tessafe.sys protect game

本文介绍了一种内核级驱动程序注入技术的具体实现细节,包括如何利用系统调用表来重定向内核API调用,以及如何通过修改特定内核函数地址来实现对系统行为的定制。此技术涉及对内核态代码的直接操作。

;write by y3y3y3 from www.unpack.cn
.386
.model flat, stdcall
option casemap:none

include C:/RadASM/masm32/include/w2k/ntstatus.inc
include C:/RadASM/masm32/include/w2k/ntddk.inc
include C:/RadASM/masm32/include/w2k/ntoskrnl.inc
include C:/RadASM/masm32/include/w2k/w2kundoc.inc
includelib C:/RadASM/masm32/lib/w2k/ntoskrnl.lib
include C:/RadASM//masm32/Macros/Strings.mac

   
.data
CCOUNTED_UNICODE_STRING "KeAttachProcess",KeAttachProcess_String, 4
CCOUNTED_UNICODE_STRING "PsCreateSystemThread", PsCreateSystemThread_String, 4
CCOUNTED_UNICODE_STRING "ObOpenObjectByPointer",ObOpenObjectByPointer_String,4
CCOUNTED_UNICODE_STRING "NtOpenProcess",NtOpenProcess_String,4
CCOUNTED_UNICODE_STRING "NtOpenThread", NtOpenThread_String,4
PsCreateSystemThread_addr dd ?
NtWriteVirtualMemory_addr dd ?
NtReadVirtualMemory_addr dd ?
ObOpenObjectByPointer_addr dd ?
NtOpenThread_addr dd ?
NtOpenProcess_addr dd ?
KiAttachProcess_addr dd ?
NtWriteVirtualMemory_oldbyte db 10 dup (0)
PsCreateSystemThread_oldbyte db 10 dup (0)
NtReadVirtualMemory_oldbyte db 10 dup (0)
KiAttachProcess_oldbyte db 10 dup (0)
threadproc dd ?
sysbase dd ?
hook    dd ?
.code

Getaddr proc apiString:dword
invoke MmGetSystemRoutineAddress,apiString
ret
Getaddr endp
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING
local pDeviceObject:PVOID
    pushad

   
    cli
    mov eax, cr0
    and eax,0fffeffffh
    mov cr0, eax
   
    mov edi, dword ptr [KeServiceDescriptorTable]
    mov ebx, [edi]
    mov esi, [ebx+(115h*4)]
   
    mov ecx,9
    mov NtWriteVirtualMemory_addr ,esi
    mov edi,offset NtWriteVirtualMemory_oldbyte
    rep movsb
   
    mov ecx,9
    mov esi, [ebx+(0bah*4)]
    mov NtReadVirtualMemory_addr,esi
    mov edi,offset NtReadVirtualMemory_oldbyte
    rep movsb
   
    invoke Getaddr,offset KeAttachProcess_String
    add eax,47h
    mov edx,dword ptr [eax+1]
    lea eax,dword ptr [edx+eax+5]
    mov KiAttachProcess_addr,eax
    mov ecx,9
    mov esi,eax
    mov edi,offset KiAttachProcess_oldbyte
    rep movsb
   
    invoke Getaddr,offset ObOpenObjectByPointer_String
    mov ObOpenObjectByPointer_addr,eax
   
    invoke Getaddr,offset NtOpenProcess_String
    mov NtOpenProcess_addr,eax
   
    invoke Getaddr,offset NtOpenThread_String
    mov NtOpenThread_addr,eax
   

    invoke Getaddr,offset PsCreateSystemThread_String
    mov PsCreateSystemThread_addr,eax
    mov ecx,9
    mov esi,eax
    mov edi,offset PsCreateSystemThread_oldbyte
    rep movsb
   
    mov edx,offset ThreadHook
    sub edx,eax
    sub edx,5
    mov dword ptr [hook],edx
   

    mov eax,PsCreateSystemThread_addr
    mov byte ptr [eax],0e9h
    push dword ptr [hook]
    pop dword ptr [eax+1]
   
    mov eax, cr0
    or eax,10000h
    mov cr0, eax
    sti
   
    mov eax, pDriverObject
    assume eax:PTR DRIVER_OBJECT
    mov [eax].DriverUnload, offset DriverUnload
    assume eax:nothing

    popad
    mov eax, STATUS_SUCCESS
    ret
   
DriverEntry endp
ThreadHook proc
     pushad
     mov eax,dword ptr [esp+18h+20h]
     cmp byte ptr [eax-4],65h ;tessafe 'e'== 65h
jne @F

     cli
        mov eax, cr0
        and eax,0fffeffffh
        mov cr0, eax
        mov eax,dword ptr [esp+18h+20h]
        mov threadproc,eax
        mov ecx,eax
        and ecx,0ffh;取TX驱动地址最后一个byte
        add ecx,2f00h
        sub eax,ecx
        mov sysbase,eax;base+2f00h+last byte == threadproc addr
        mov dword ptr [esp+18h+20h],offset Thread
        mov eax, cr0
        or eax,10000h
        mov cr0, eax
        sti

@@:     popad
        mov edi,edi
     push ebp
     mov ebp,esp
     push PsCreateSystemThread_addr
     add dword ptr [esp],5
     ret
ThreadHook endp

Thread proc
   
     pushad
     cli
        mov eax, cr0
        and eax,0fffeffffh
        mov cr0, eax

     mov eax,sysbase
     add eax,1000h;缩小范围,开始搜索特征码
@@: cmp dword ptr [eax],8b005587h
     je @F
     add eax,1
     jmp @B
@@: mov edx,dword ptr [eax-6]
     mov byte ptr [edx],70h;patch debugproc clear 0
@@: cmp byte ptr [eax],0C3h
     je @F
     add eax,1
     jmp @B
@@: mov edx,dword ptr [eax+6]
     mov byte ptr [edx],0 ;patch mon Ntopenprocess
       
        mov ecx,9
     mov edi,NtReadVirtualMemory_addr
        mov esi,offset NtReadVirtualMemory_oldbyte
        rep movsb

     mov ecx,9
     mov edi,NtWriteVirtualMemory_addr
        mov esi,offset NtWriteVirtualMemory_oldbyte
        rep movsb
       
        mov ecx,9
        mov edi,KiAttachProcess_addr
        mov esi,offset KiAttachProcess_oldbyte
        rep movsb
       
        ;mov ecx,9
        ;mov edi,PsCreateSystemThread_addr
        ;mov esi,offset PsCreateSystemThread_oldbyte
        ;rep movsb

     mov eax,NtOpenProcess_addr
     add eax,13bh
     mov edx,ObOpenObjectByPointer_addr
     sub edx,eax
     sub edx,5
     mov dword ptr [eax+1],edx

     mov eax,NtOpenThread_addr
     add eax,151h
     mov edx,ObOpenObjectByPointer_addr
     sub edx,eax
     sub edx,5
     mov dword ptr [eax+1],edx

        mov eax, cr0
        or eax,10000h
        mov cr0, eax
        sti
    
     popad
     push threadproc
     ret

Thread endp

DriverUnload proc pDriverObject:PDRIVER_OBJECT

     pushad
     cli
        mov eax, cr0
        and eax,0fffeffffh
        mov cr0, eax
       
        mov ecx,9
        mov edi,PsCreateSystemThread_addr
        mov esi,offset PsCreateSystemThread_oldbyte
        rep movsb
       
        mov eax, cr0
        or eax,10000h
        mov cr0, eax
        sti
        popad
        ret

DriverUnload endp
end DriverEntry

内容概要:本文提出了一种针对大规模电动汽车接入电网的双层优化调度策略,并基于IEEE33节点系统进行了建模与仿真分析,配套提供了完整的Matlab代码实现。该策略构建了上层电网运行优化与下层电动汽车充电调度的双层协同模型,综合考虑电网负荷削峰填谷、电压稳定性维持以及电动汽车用户充电需求满足等多重目标,采用先进的优化算法实现对电动汽车集群的智能有序调度。研究详细阐述了双层模型的构建逻辑、目标函数设计、约束条件设定及迭代求解流程,有效降低了电网峰谷差,提升了配电系统对可再生能源的消纳能力,兼具扎实的理论深度与明确的工程应用前景。; 适合人群:电气工程、电力系统及其自动化、能源系统优化等相关专业的研究生、科研人员以及从事智能电网、电动汽车调度、分布式能源管理等领域工作的工程师和技术人员。; 使用场景及目标:①深入研究高比例电动汽车接入对配电网运行特性的影响机制;②掌握电力系统双层优化建模方法及其在实际系统中的求解技巧;③实现电动汽车集群的协同调度与车网互动(V2G)优化控制;④作为撰写学术论文、开展课题研究或复现高水平期刊成果的技术参考与代码基础。; 阅读建议:建议读者结合所提供的Matlab代码逐行理解双层优化模型的数学表达与程序实现细节,重点剖析上下层模型之间的信息交互机制与收敛判据,可通过调整电动汽车渗透率、充电行为参数或引入分布式电源等场景进行拓展性仿真,以深化对智能调度策略适应性的认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值