root/Cheat Engine/DBKKernel/DBKFunc.h @ 309

Revision 309, 4.7 kB (checked in by dark_byte, 8 months ago)

bugfixes for the heaplist and memory dissect

Line 
1#ifndef DBKFUNC_H
2#define DBKFUNC_H
3
4#include "ntifs.h"
5#include <windef.h>
6
7#include "interruptHook.h"
8
9int _fltused;
10
11
12
13typedef struct _criticalSection
14{
15  int locked;
16  int cpunr; //unique id for a cpu
17  int lockcount;
18  int oldIFstate;
19} criticalSection, *PcriticalSection;
20
21
22struct PTEStruct
23{
24        unsigned P         :  1; // present (1 = present)
25        unsigned RW        :  1; // read/write
26        unsigned US        :  1; // user/supervisor
27        unsigned PWT       :  1; // page-level write-through
28        unsigned PCD       :  1; // page-level cache disabled
29        unsigned A         :  1; // accessed
30        unsigned Reserved  :  1; // dirty
31        unsigned PS        :  1; // page size (0 = 4-KB page)
32        unsigned G         :  1; // global page
33        unsigned A1                :  1; // available 1 aka copy-on-write
34        unsigned A2                :  1; // available 2/ is 1 when paged to disk
35        unsigned A3                :  1; // available 3
36        unsigned PFN       : 20; // page-frame number
37};
38
39typedef struct tagDebugregs
40{
41        ULONG DR0;
42        ULONG DR1;
43        ULONG DR2;
44        ULONG DR3;
45        ULONG DR5;
46        ULONG DR6;
47        ULONG DR7;
48} Debugregs;
49
50
51
52typedef struct 
53{
54        unsigned CF                     :1; // 0
55        unsigned reserved1      :1; // 1
56        unsigned PF                     :1; // 2
57        unsigned reserved2      :1; // 3
58        unsigned AF                     :1; // 4
59        unsigned reserved3      :1; // 5
60        unsigned ZF                     :1; // 6
61        unsigned SF                     :1; // 7
62        unsigned TF                     :1; // 8
63        unsigned IF                     :1; // 9
64        unsigned DF                     :1; // 10
65        unsigned OF                     :1; // 11
66        unsigned IOPL           :2; // 12+13
67        unsigned NT                     :1; // 14
68        unsigned reserved4      :1; // 15
69        unsigned RF                     :1; // 16
70        unsigned VM                     :1; // 17
71        unsigned AC                     :1; // 18
72        unsigned VIF            :1; // 19
73        unsigned VIP            :1; // 20
74        unsigned ID                     :1; // 21
75        unsigned reserved5      :10; // 22-31
76#ifdef AMD64
77        unsigned reserved6      :8;
78        unsigned reserved7      :8;
79        unsigned reserved8      :8;
80        unsigned reserved9      :8;
81#endif
82
83} EFLAGS,*PEFLAGS;
84
85typedef struct tagDebugReg7
86{
87        unsigned L0                     :1; //                  0
88        unsigned G0                     :1; //                  1
89        unsigned L1                     :1; //                  2
90        unsigned G1                     :1; //                  3
91        unsigned L2                     :1; //                  4
92        unsigned G2                     :1; //                  5
93        unsigned L3                     :1; //                  6
94        unsigned G3                     :1; //                  7
95        unsigned GL                     :1; //                  8
96        unsigned GE                     :1; //                  9
97        unsigned undefined1     :3; // 001              10
98        unsigned GD                     :1; //                  11
99        unsigned undefined2     :2; // 00
100        unsigned RW0            :2;
101        unsigned LEN0           :2;
102        unsigned RW1            :2;
103        unsigned LEN1           :2;
104        unsigned RW2            :2;
105        unsigned LEN2           :2;
106        unsigned RW3            :2;
107        unsigned LEN3           :2;
108#ifdef AMD64
109        unsigned undefined3     :8;
110        unsigned undefined4     :8;
111        unsigned undefined5     :8;
112        unsigned undefined6     :8;
113#endif
114
115} DebugReg7;
116
117typedef struct DebugReg6
118{
119        unsigned B0                     :1;
120        unsigned B1                     :1;
121        unsigned B2                     :1;
122        unsigned B3                     :1;
123        unsigned undefined1     :9; // 011111111
124        unsigned BD                     :1;
125        unsigned BS                     :1;
126        unsigned BT                     :1;
127        unsigned undefined2     :16; // 1111111111111111
128#ifdef AMD64
129        unsigned undefined3     :8;
130        unsigned undefined4     :8;
131        unsigned undefined5     :8;
132        unsigned undefined6     :8;
133#endif
134
135} DebugReg6;
136
137
138
139
140#pragma pack(2) //allignment of 2 bytes
141typedef struct tagGDT
142{   
143    WORD wLimit;
144        PVOID vector;
145} GDT, *PGDT;
146#pragma pack()
147
148UCHAR BufferSize;
149
150void GetIDT(PIDT pIdt);
151
152#ifdef AMD64
153extern void GetGDT(PGDT pGdt);
154extern WORD GetLDT();
155extern WORD GetTR(void);
156#else
157
158void GetGDT(PGDT pGdt);
159WORD GetLDT();
160WORD GetTR(void);
161#endif
162
163
164
165
166UINT64 readMSR(DWORD msr);
167UINT64 getDR7(void);
168void setCR0(UINT64 newCR0);
169UINT64 getCR0(void);
170UINT64 getCR2(void);
171void setCR3(UINT64 newCR3);
172UINT64 getCR3(void);
173UINT64 getCR4(void);
174void setCR4(UINT64 newcr4);
175UINT64 getTSC(void);
176
177#ifdef AMD64
178extern WORD getCS(void);
179extern WORD getSS(void);
180extern WORD getDS(void);
181extern WORD getES(void);
182extern WORD getFS(void);
183extern WORD getGS(void);
184extern UINT64 getRSP(void);
185extern UINT64 getRBP(void);
186extern UINT64 getRAX(void);
187extern UINT64 getRBX(void);
188extern UINT64 getRCX(void);
189extern UINT64 getRDX(void);
190extern UINT64 getRSI(void);
191extern UINT64 getRDI(void);
192#else
193
194WORD getCS(void);
195WORD getSS(void);
196WORD getDS(void);
197WORD getES(void);
198WORD getFS(void);
199WORD getGS(void);
200ULONG getRSP(void);
201ULONG getRBP(void);
202ULONG getRAX(void);
203ULONG getRBX(void);
204ULONG getRCX(void);
205ULONG getRDX(void);
206ULONG getRSI(void);
207ULONG getRDI(void);
208#endif
209
210
211extern UINT64 getR8(void);
212extern UINT64 getR9(void);
213extern UINT64 getR10(void);
214extern UINT64 getR11(void);
215extern UINT64 getR12(void);
216extern UINT64 getR13(void);
217extern UINT64 getR14(void);
218extern UINT64 getR15(void);
219
220
221int getCpuCount(void);
222
223int PTESize;
224UINT_PTR PAGE_SIZE_LARGE;
225UINT_PTR MAX_PDE_POS;
226
227int isPrefix(unsigned char b);
228EFLAGS getEflags(void);
229int cpunr(void);
230void disableInterrupts(void);
231void enableInterrupts(void);
232
233
234void csEnter(PcriticalSection CS);
235void csLeave(PcriticalSection CS);
236
237
238#endif;
Note: See TracBrowser for help on using the browser.