mirror of
https://github.com/ChengChengCC/Ark-tools.git
synced 2026-10-26 11:10:36 +08:00
184 lines
3.9 KiB
C
184 lines
3.9 KiB
C
|
|
|
|
#ifndef CXX_KEINJECTAPC_H
|
|
#define CXX_KEINJECTAPC_H
|
|
|
|
|
|
|
|
#include <ntifs.h>
|
|
#include <devioctl.h>
|
|
#include <ntimage.h>
|
|
|
|
#endif
|
|
|
|
|
|
#define DEVICE_NAME L"\\Device\\DriverDevice"
|
|
#define LINK_NAME L"\\DosDevices\\DriverLink"
|
|
|
|
#define CTL_KEINJECTAPC \
|
|
CTL_CODE(FILE_DEVICE_UNKNOWN,0x830,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
|
|
typedef struct _SYSTEM_THREAD_INFORMATION
|
|
{
|
|
LARGE_INTEGER KernelTime;
|
|
LARGE_INTEGER UserTime;
|
|
LARGE_INTEGER CreateTime;
|
|
ULONG WaitTime;
|
|
PVOID StartAddress;
|
|
CLIENT_ID ClientId;
|
|
KPRIORITY Priority;
|
|
LONG BasePriority;
|
|
ULONG ContextSwitches;
|
|
ULONG ThreadState;
|
|
KWAIT_REASON WaitReason;
|
|
}SYSTEM_THREAD_INFORMATION,*PSYSTEM_THREAD_INFORMATION;
|
|
|
|
typedef struct _SYSTEM_PROCESS_INFO
|
|
{
|
|
ULONG NextEntryOffset;
|
|
ULONG NumberOfThreads;
|
|
LARGE_INTEGER WorkingSetPrivateSize;
|
|
ULONG HardFaultCount;
|
|
ULONG NumberOfThreadsHighWatermark;
|
|
ULONGLONG CycleTime;
|
|
LARGE_INTEGER CreateTime;
|
|
LARGE_INTEGER UserTime;
|
|
LARGE_INTEGER KernelTime;
|
|
UNICODE_STRING ImageName;
|
|
KPRIORITY BasePriority;
|
|
HANDLE UniqueProcessId;
|
|
HANDLE InheritedFromUniqueProcessId;
|
|
ULONG HandleCount;
|
|
ULONG SessionId;
|
|
ULONG_PTR UniqueProcessKey;
|
|
SIZE_T PeakVirtualSize;
|
|
SIZE_T VirtualSize;
|
|
ULONG PageFaultCount;
|
|
SIZE_T PeakWorkingSetSize;
|
|
SIZE_T WorkingSetSize;
|
|
SIZE_T QuotaPeakPagedPoolUsage;
|
|
SIZE_T QuotaPagedPoolUsage;
|
|
SIZE_T QuotaPeakNonPagedPoolUsage;
|
|
SIZE_T QuotaNonPagedPoolUsage;
|
|
SIZE_T PagefileUsage;
|
|
SIZE_T PeakPagefileUsage;
|
|
SIZE_T PrivatePageCount;
|
|
LARGE_INTEGER ReadOperationCount;
|
|
LARGE_INTEGER WriteOperationCount;
|
|
LARGE_INTEGER OtherOperationCount;
|
|
LARGE_INTEGER ReadTransferCount;
|
|
LARGE_INTEGER WriteTransferCount;
|
|
LARGE_INTEGER OtherTransferCount;
|
|
SYSTEM_THREAD_INFORMATION Threads[1];
|
|
}SYSTEM_PROCESS_INFO,*PSYSTEM_PROCESS_INFO;
|
|
|
|
typedef struct _LDR_DATA_TABLE_ENTRY
|
|
{
|
|
LIST_ENTRY InLoadOrderLinks;
|
|
LIST_ENTRY InMemoryOrderLinks;
|
|
LIST_ENTRY InInitializationOrderLinks;
|
|
PVOID DllBase;
|
|
PVOID EntryPoint;
|
|
ULONG SizeOfImage;
|
|
UNICODE_STRING FullDllName;
|
|
UNICODE_STRING BaseDllName;
|
|
ULONG Flags;
|
|
USHORT LoadCount;
|
|
USHORT TlsIndex;
|
|
|
|
union
|
|
{
|
|
LIST_ENTRY HashLinks;
|
|
|
|
struct
|
|
{
|
|
PVOID SectionPointer;
|
|
ULONG CheckSum;
|
|
};
|
|
};
|
|
|
|
union
|
|
{
|
|
ULONG TimeDateStamp;
|
|
PVOID LoadedImports;
|
|
};
|
|
|
|
struct _ACTIVATION_CONTEXT * EntryPointActivationContext;
|
|
PVOID PatchInformation;
|
|
LIST_ENTRY ForwarderLinks;
|
|
LIST_ENTRY ServiceTagLinks;
|
|
LIST_ENTRY StaticLinks;
|
|
}LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY;
|
|
|
|
|
|
typedef struct _INJECT_INFO
|
|
{
|
|
ULONG ProcessId;
|
|
wchar_t DllName[1024];
|
|
}INJECT_INFO,*PINJECT_INFO;
|
|
|
|
typedef NTSTATUS (*PLDR_LOAD_DLL)(PWSTR,PULONG,PUNICODE_STRING,PVOID*);
|
|
|
|
typedef struct _KINJECT
|
|
{
|
|
UNICODE_STRING DllName;
|
|
wchar_t Buffer[1024];
|
|
PLDR_LOAD_DLL LdrLoadDll;
|
|
PVOID DllBase;
|
|
ULONG Executed;
|
|
}KINJECT,*PKINJECT;
|
|
|
|
typedef enum _KAPC_ENVIRONMENT
|
|
{
|
|
OriginalApcEnvironment,
|
|
AttachedApcEnvironment,
|
|
CurrentApcEnvironment,
|
|
InsertApcEnvironment
|
|
}KAPC_ENVIRONMENT,*PKAPC_ENVIRONMENT;
|
|
|
|
typedef VOID (NTAPI *PKNORMAL_ROUTINE)(
|
|
PVOID NormalContext,
|
|
PVOID SystemArgument1,
|
|
PVOID SystemArgument2
|
|
);
|
|
|
|
typedef VOID KKERNEL_ROUTINE(
|
|
PRKAPC Apc,
|
|
PKNORMAL_ROUTINE *NormalRoutine,
|
|
PVOID *NormalContext,
|
|
PVOID *SystemArgument1,
|
|
PVOID *SystemArgument2
|
|
);
|
|
|
|
typedef KKERNEL_ROUTINE (NTAPI *PKKERNEL_ROUTINE);
|
|
|
|
typedef VOID (NTAPI *PKRUNDOWN_ROUTINE)(
|
|
PRKAPC Apc
|
|
);
|
|
|
|
void KeInitializeApc(
|
|
PRKAPC Apc,
|
|
PRKTHREAD Thread,
|
|
KAPC_ENVIRONMENT Environment,
|
|
PKKERNEL_ROUTINE KernelRoutine,
|
|
PKRUNDOWN_ROUTINE RundownRoutine,
|
|
PKNORMAL_ROUTINE NormalRoutine,
|
|
KPROCESSOR_MODE ProcessorMode,
|
|
PVOID NormalContext
|
|
);
|
|
|
|
BOOLEAN KeInsertQueueApc(
|
|
PRKAPC Apc,
|
|
PVOID SystemArgument1,
|
|
PVOID SystemArgument2,
|
|
KPRIORITY Increment
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS ZwQuerySystemInformation(ULONG InfoClass,PVOID Buffer,ULONG Length,PULONG ReturnLength);
|
|
LPSTR PsGetProcessImageFileName(PEPROCESS Process);
|
|
|
|
NTSTATUS DefaultPassThrough(PDEVICE_OBJECT DeviceObject,PIRP Irp);
|
|
void UnloadDriver(PDRIVER_OBJECT DriverObject);
|
|
NTSTATUS DriverDispatch(PDEVICE_OBJECT DeviceObject,PIRP Irp); |