注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

asm版antiXX驱动代码  

2012-03-10 18:54:35|  分类: Win32汇编学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转自UPK论坛

.386 
.model flat, stdcall 
option casemap:none 

include \masm32\include\w2k\ntstatus.inc 
include \masm32\include\w2k\ntddk.inc 
include \masm32\include\w2k\ntoskrnl.inc 
include \masm32\include\w2k\w2kundoc.inc 
includelib \masm32\lib\w2k\ntoskrnl.lib 
include \masm32\Macros\Strings.mac 

;write by y3y3y3 
    
.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)
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 


  评论这张
 
阅读(101)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017