From 3b8ee025edd045b962c21d09dd1ef86e1e48aae4 Mon Sep 17 00:00:00 2001
From: Toni Uhlig <matzeton@googlemail.com>
Date: Tue, 7 May 2019 22:23:34 +0200
Subject: initial commit

---
 include/Driver.h | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 131 insertions(+)
 create mode 100644 include/Driver.h

(limited to 'include')

diff --git a/include/Driver.h b/include/Driver.h
new file mode 100644
index 0000000..6a41fe2
--- /dev/null
+++ b/include/Driver.h
@@ -0,0 +1,131 @@
+#pragma once
+
+#ifdef KERNEL_MODULE
+#include "Native.h"
+#else
+#include <windows.h>
+#endif
+
+#define HDR_MAGIC				0xDEADC0DE
+#define SHMEM_ADDR				0x60000000
+#define SHMEM_SIZE				8192*8*2
+#define INVALID_REQUEST			(UINT32)-1
+
+#define MEM_HANDSHAKE			0x800
+#define MEM_PING				0x801
+#define MEM_MODULES				0x802
+#define MEM_PAGES				0x803
+#define MEM_RPM					0x804
+#define MEM_WPM					0x805
+#define MEM_EXIT				0x806
+
+typedef struct _KERNEL_HEADER
+{
+	UINT32 magic;
+	UINT32 type;
+} KERNEL_HEADER, *PKERNEL_HEADER;
+
+typedef struct _KERNEL_HANDSHAKE
+{
+	KERNEL_HEADER hdr;
+	HANDLE kevent;
+	HANDLE uevent;
+} KERNEL_HANDSHAKE, *PKERNEL_HANDSHAKE;
+
+typedef struct _KERNEL_PING
+{
+	KERNEL_HEADER hdr;
+	UINT32 rnd_user;
+	UINT32 rnd_kern;
+} KERNEL_PING, *PKERNEL_PING;
+
+typedef struct _KERNEL_PAGE
+{
+	KERNEL_HEADER hdr;
+	HANDLE ProcessId;
+	PVOID StartAddress;
+
+	NTSTATUS StatusRes;
+	SIZE_T pages;
+	MEMORY_BASIC_INFORMATION pages_start;
+} KERNEL_PAGE, *PKERNEL_PAGE;
+
+typedef struct _MODULE_DATA
+{
+	PVOID DllBase;
+	ULONG SizeOfImage;
+	CHAR BaseDllName[64];
+} MODULE_DATA, *PMODULE_DATA;
+
+typedef struct _KERNEL_MODULES
+{
+	KERNEL_HEADER hdr;
+	HANDLE ProcessId;
+	SIZE_T StartIndex;
+
+	NTSTATUS StatusRes;
+	SIZE_T modules;
+	MODULE_DATA modules_start;
+} KERNEL_MODULES, *PKERNEL_MODULES;
+
+typedef struct _KERNEL_EXIT
+{
+	KERNEL_HEADER hdr;
+} KERNEL_EXIT, *PKERNEL_EXIT;
+
+typedef struct _KERNEL_READ_REQUEST
+{
+	KERNEL_HEADER hdr;
+	HANDLE ProcessId;
+	PVOID Address;
+	SIZE_T SizeReq;
+
+	NTSTATUS StatusRes;
+	SIZE_T SizeRes;
+} KERNEL_READ_REQUEST, *PKERNEL_READ_REQUEST;
+
+typedef struct _KERNEL_WRITE_REQUEST
+{
+	KERNEL_HEADER hdr;
+	HANDLE ProcessId;
+	PVOID Address;
+	SIZE_T SizeReq;
+
+	NTSTATUS StatusRes;
+	SIZE_T SizeRes;
+} KERNEL_WRITE_REQUEST, *PKERNEL_WRITE_REQUEST;
+
+
+#ifndef KERNEL_MODULE
+static inline VOID prepareRequest(PVOID buf, UINT32 type)
+{
+	PKERNEL_HEADER hdr = (PKERNEL_HEADER)buf;
+	hdr->magic = HDR_MAGIC;
+	hdr->type = type;
+}
+#endif
+
+static inline UINT32
+#ifndef KERNEL_MODULE
+validateRespone
+#else
+validateRequest
+#endif
+(PVOID buf)
+{
+	PKERNEL_HEADER hdr = (PKERNEL_HEADER)buf;
+	if (hdr->magic != HDR_MAGIC)
+		return INVALID_REQUEST;
+	switch (hdr->type) {
+	case MEM_HANDSHAKE:
+	case MEM_PING:
+	case MEM_PAGES:
+	case MEM_MODULES:
+	case MEM_RPM:
+	case MEM_WPM:
+	case MEM_EXIT:
+		return hdr->type;
+	default:
+		return INVALID_REQUEST;
+	}
+}
\ No newline at end of file
-- 
cgit v1.2.3