首页
社区
课程
招聘
[原创]病毒专杀编写攻略之ring3篇
发表于: 2010-11-3 11:20 31389

[原创]病毒专杀编写攻略之ring3篇

2010-11-3 11:20
31389
收藏
免费 7
支持
分享
最新回复 (37)
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
感谢,学习学习!
2010-11-8 14:34
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
标记  虽然是C代码  也是好东东
2010-11-9 06:48
0
雪    币: 1335
活跃值: (5190)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
28
谢谢, 收藏!!!!!!
2010-11-10 01:26
0
雪    币: 585
活跃值: (578)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
29
很好,不错, 标记
2010-12-22 17:04
0
雪    币: 585
活跃值: (578)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
30
typedef LONG NTSTATUS ;

typedef struct _UNICODE_STRING {
        USHORT  Length;
        USHORT  MaximumLength;
        PWSTR  Buffer;
} UNICODE_STRING;
typedef UNICODE_STRING *PUNICODE_STRING;
typedef const UNICODE_STRING *PCUNICODE_STRING;

typedef struct _OBJECT_ATTRIBUTES {
    ULONG  Length;
    HANDLE  RootDirectory;
    PUNICODE_STRING  ObjectName;
    ULONG  Attributes;
    PVOID  SecurityDescriptor;
    PVOID  SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES;

typedef struct _IO_STATUS_BLOCK {
    union {
        NTSTATUS Status;
        PVOID Pointer;
    };
    ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;

typedef NTSTATUS (*ZWDELETEFILE)( IN LPVOID  );
typedef VOID (*RTLINITUNICODESTRING)( LPVOID, LPVOID  );

typedef NTSTATUS (*ZWCREATEFILE)(
                         OUT PHANDLE   ,
                         IN ACCESS_MASK   ,
                         IN LPVOID   ,
                         OUT LPVOID   ,
                         IN PLARGE_INTEGER      ,
                         IN ULONG   ,
                         IN ULONG   ,
                         IN ULONG   ,
                         IN ULONG   ,
                         IN PVOID      ,
                         IN ULONG   
    );

typedef NTSTATUS (*ZWWRITEFILE)(
                        IN HANDLE   ,
                        IN HANDLE     OPTIONAL,
                        IN LPVOID     OPTIONAL,
                        IN PVOID     OPTIONAL,
                        OUT LPVOID   ,
                        IN PVOID   ,
                        IN ULONG   ,
                        IN PLARGE_INTEGER     OPTIONAL,
                        IN PULONG     OPTIONAL
    );
  
typedef NTSTATUS (*ZWCLOSE)(
                                                  IN HANDLE   
    );

void CTestDlg::OnButton1()
{
    HINSTANCE hNtDll;
    ZWDELETEFILE ZwDeleteFile;
    RTLINITUNICODESTRING RtlInitUnicodeString;
    ZWCREATEFILE ZwCreateFile;
    ZWWRITEFILE ZwWriteFile;
    ZWCLOSE ZwClose;
       
    hNtDll = LoadLibrary ("NTDLL");
    if (!hNtDll)
                return ;
       
    ZwDeleteFile = (ZWDELETEFILE)GetProcAddress (hNtDll,"ZwDeleteFile");
    RtlInitUnicodeString = (RTLINITUNICODESTRING)GetProcAddress (hNtDll,"RtlInitUnicodeString");
    ZwCreateFile = (ZWCREATEFILE)GetProcAddress (hNtDll,"ZwCreateFile");
    ZwWriteFile = (ZWWRITEFILE)GetProcAddress (hNtDll,"ZwWriteFile");
    ZwClose = (ZWCLOSE)GetProcAddress (hNtDll,"ZwClose");

        UNICODE_STRING ObjectName;
    RtlInitUnicodeString(&ObjectName,L"\\??\\E:\\123.exe");//记得这里要有\\??\\在前面的,文件名必须是符号链接或者设备名

        _asm        sub         esp,8

    OBJECT_ATTRIBUTES ObjectAttributes = {
        sizeof(OBJECT_ATTRIBUTES),          // Length
                        NULL,                               // RootDirectory
                        &ObjectName,                        // ObjectName
                        0x00000040/*OBJ_CASE_INSENSITIVE*/,               // Attributes
                        0,                                  // SecurityDescriptor
                        NULL,                               // SecurityQualityOfService
    };
       
    HANDLE hFile;
    PVOID content = "ForZwFileTest";
    IO_STATUS_BLOCK IoStatusBlock;
       
    ZwCreateFile(&hFile,
        GENERIC_WRITE|SYNCHRONIZE|GENERIC_READ,
        &ObjectAttributes,
        &IoStatusBlock,
        0,
        FILE_ATTRIBUTE_NORMAL,
        FILE_SHARE_DELETE,
        0x00000003/*FILE_OPEN_IF*/,
        0x00000020/*FILE_SYNCHRONOUS_IO_NONALERT*/,
        NULL,
        0);

        _asm        sub         esp,0x2c

    ZwWriteFile(hFile, 0, 0, 0, &IoStatusBlock, content, 12, NULL, NULL);

                _asm        sub         esp,0x24

    ZwClose(hFile);

                _asm        sub         esp,0x4
       
    ZwDeleteFile(&ObjectAttributes);

                        _asm        sub         esp,0x4
       
    FreeLibrary (hNtDll);

}
2010-12-22 17:19
0
雪    币: 585
活跃值: (578)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
31
帮贴下删文件的代码,哈哈,,,,
2010-12-22 17:20
0
雪    币: 507
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
先call TerminateThread再 free dll
2012-4-24 17:14
0
雪    币: 272
活跃值: (3263)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
33
注入下.....00
2012-6-20 10:34
0
雪    币: 1737
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
多谢分享,谢谢了,辛苦了~
2012-6-20 10:46
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
收藏,学习咯
2012-7-17 08:57
0
雪    币: 31
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
36
guxinyi,这里调整栈顶的内联汇编可有意义 ?
2012-7-21 21:20
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
温故知新,被顶上来了
2012-7-21 21:41
0
雪    币: 31
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
很实用,支持
2012-8-27 10:50
0
游客
登录 | 注册 方可回帖
返回
//