-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathinject.h
164 lines (122 loc) · 4.31 KB
/
inject.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#ifndef INJ
#define INJ
#define WIN32_LEAN_AND_MEAN
//#define _WIN32_WINNT 0x500
#include <windows.h>
#include <psapi.h>
//#include <cstdio>
#include <tlhelp32.h>
#include <shlwapi.h>
#include <ntsecapi.h>
#ifdef __x86_64__
#define MYWORD DWORD64
#else
#define MYWORD DWORD
#endif
#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
#define THREAD_ACCESS (THREAD_GET_CONTEXT | THREAD_QUERY_INFORMATION | THREAD_SET_CONTEXT | THREAD_SET_INFORMATION | THREAD_SUSPEND_RESUME )
//DWORD getThreadID(DWORD pid);
int thijack(int pid, char *dllname);
/*typedef struct _UNICODE_STRING { // UNICODE_STRING structure
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING;*/
typedef UNICODE_STRING *PUNICODE_STRING;
typedef VOID (WINAPI *fRtlInitUnicodeString) //RtlInitUnicodeString function prototype
(
PUNICODE_STRING DestinationString,
PCWSTR SourceString
);
typedef long (WINAPI *fLdrLoadDll) //LdrLoadDll function prototype
(
IN PWCHAR PathToFile OPTIONAL,
IN ULONG Flags OPTIONAL,
IN PUNICODE_STRING ModuleFileName,
OUT PHANDLE ModuleHandle
);
struct EnumData {
DWORD dwProcessId;
HWND hWnd;
};
struct pdata {
fLdrLoadDll p1;
UNICODE_STRING p2;
};
struct pvoids{
PVOID p1;
PVOID p2;
PVOID p3;
};
HWND FindWindowFromProcessId( DWORD dwProcessId );
HMODULE GetRemoteModuleHandle(unsigned long, char *);
//FARPROC GetRemoteProcAddress(unsigned long, char *, char *);
DWORD getThreadID(DWORD pid);
struct stubs
{
void *in ;
void *fin;
};
struct param
{
void *data;
unsigned int a;
};
int mytrick(int pid, stubs obj, param p, bool slub);
pvoids LoadMan(LPSTR file, HANDLE hProcess);
extern "C" void DC_stubend(void);
extern "C" void DllCall_stub(HMODULE hMod);
extern "C" MYWORD Pload(void);
extern "C" void Pload_stub(void);
#ifndef _WIN64
extern "C" MYWORD Pload2(void);
extern "C" void Pload_stub2(void);
#endif
HMODULE WINAPI LoadDll(pdata *points);
void LoadDLL_stub();
pdata Wap_LoadDll(LPSTR lpFileName);
extern char *MError;
int HideInList(HMODULE *hHideModule);
void Hide_end();
char * MMapError(const char * str);
extern HMODULE hijack;
typedef NTSTATUS (NTAPI * tLdrUnregisterDllNotification)( PVOID );
typedef HMODULE (WINAPI * tGetModuleHandle)(LPCTSTR);
typedef SIZE_T (WINAPI * tVirtualQuery)(LPCVOID ,
PMEMORY_BASIC_INFORMATION,SIZE_T dwLength);
void fix_undll( MYWORD []);
int find_undll(void *addr);
void find_end();
typedef HMODULE (WINAPI *pLoadLibraryA)(LPCSTR);
typedef FARPROC (WINAPI *pGetProcAddress)(HMODULE,LPCSTR);
typedef BOOL (WINAPI *PDLL_MAIN)(HMODULE,DWORD,PVOID);
typedef NTSTATUS (NTAPI *pZwWriteVirtualMemory)(IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
IN LPCVOID Buffer,
IN ULONG NumberOfBytesToWrite,
OUT SIZE_T * NumberOfBytesWritten);
/*
typedef NTSTATUS (*pZwProtectVirtualMemory)(
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
IN OUT PULONG NumberOfBytesToProtect,
IN ULONG NewAccessProtection,
OUT PULONG OldAccessProtection );*/
BOOL myWriteProcessMemory(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten);
typedef struct _MANUAL_INJECT
{
PVOID ImageBase;
PIMAGE_NT_HEADERS NtHeaders;
PIMAGE_BASE_RELOCATION BaseRelocation;
PIMAGE_IMPORT_DESCRIPTOR ImportDirectory;
pLoadLibraryA fnLoadLibraryA;
pGetProcAddress fnGetProcAddress;
}MANUAL_INJECT,*PMANUAL_INJECT;
MYWORD WINAPI LoadDll2(PVOID p);
void WINAPI LoadDllEnd();
int mmap( DWORD ProcessId,char* dll);
extern bool hijack_stub;
extern int hijack_stub_delay;
HANDLE NtCreateThreadEx(HANDLE hProcess,LPVOID lpBaseAddress,LPVOID lpSpace);
//void* getprocaddress(HMODULE module, const char *proc_name);
#endif