11using System ;
2- using System . IO ;
32using System . Runtime . InteropServices ;
43using ReClassNET . Debugger ;
5- using ReClassNET . Memory ;
64using ReClassNET . Native ;
75using ReClassNET . Util ;
86
@@ -12,49 +10,8 @@ public class NativeCoreWrapper : ICoreProcessFunctions
1210 {
1311 #region Native Delegates
1412
15- [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Unicode , Pack = 1 ) ]
16- private struct EnumerateProcessData
17- {
18- public IntPtr Id ;
19-
20- [ MarshalAs ( UnmanagedType . ByValTStr , SizeConst = 260 ) ]
21- public string Path ;
22- } ;
23-
24- private delegate void EnumerateProcessCallback ( ref EnumerateProcessData data ) ;
2513 private delegate void EnumerateProcessesDelegate ( [ MarshalAs ( UnmanagedType . FunctionPtr ) ] EnumerateProcessCallback callbackProcess ) ;
2614
27- [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Unicode , Pack = 1 ) ]
28- private struct EnumerateRemoteSectionData
29- {
30- public IntPtr BaseAddress ;
31-
32- public IntPtr Size ;
33-
34- public SectionType Type ;
35-
36- public SectionProtection Protection ;
37-
38- [ MarshalAs ( UnmanagedType . ByValTStr , SizeConst = 16 ) ]
39- public string Name ;
40-
41- [ MarshalAs ( UnmanagedType . ByValTStr , SizeConst = 260 ) ]
42- public string ModulePath ;
43- }
44-
45- [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Unicode , Pack = 1 ) ]
46- private struct EnumerateRemoteModuleData
47- {
48- public IntPtr BaseAddress ;
49-
50- public IntPtr Size ;
51-
52- [ MarshalAs ( UnmanagedType . ByValTStr , SizeConst = 260 ) ]
53- public string Path ;
54- }
55-
56- private delegate void EnumerateRemoteSectionCallback ( ref EnumerateRemoteSectionData data ) ;
57- private delegate void EnumerateRemoteModuleCallback ( ref EnumerateRemoteModuleData data ) ;
5815 private delegate void EnumerateRemoteSectionsAndModulesDelegate ( IntPtr process , [ MarshalAs ( UnmanagedType . FunctionPtr ) ] EnumerateRemoteSectionCallback callbackSection , [ MarshalAs ( UnmanagedType . FunctionPtr ) ] EnumerateRemoteModuleCallback callbackModule ) ;
5916
6017 [ return : MarshalAs ( UnmanagedType . I1 ) ]
@@ -133,61 +90,14 @@ protected static TDelegate GetFunctionDelegate<TDelegate>(IntPtr handle, string
13390 return Marshal . GetDelegateForFunctionPointer < TDelegate > ( address ) ;
13491 }
13592
136- public void EnumerateProcesses ( Action < Tuple < IntPtr , string > > callbackProcess )
93+ public void EnumerateProcesses ( EnumerateProcessCallback callbackProcess )
13794 {
138- var c = callbackProcess == null ? null : ( EnumerateProcessCallback ) delegate ( ref EnumerateProcessData data )
139- {
140- callbackProcess ( Tuple . Create ( data . Id , data . Path ) ) ;
141- } ;
142-
143- enumerateProcessesDelegate ( c ) ;
95+ enumerateProcessesDelegate ( callbackProcess ) ;
14496 }
14597
146- public void EnumerateRemoteSectionsAndModules ( IntPtr process , Action < Section > callbackSection , Action < Module > callbackModule )
98+ public void EnumerateRemoteSectionsAndModules ( IntPtr process , EnumerateRemoteSectionCallback callbackSection , EnumerateRemoteModuleCallback callbackModule )
14799 {
148- var c1 = callbackSection == null ? null : ( EnumerateRemoteSectionCallback ) delegate ( ref EnumerateRemoteSectionData data )
149- {
150- var section = new Section
151- {
152- Start = data . BaseAddress ,
153- End = data . BaseAddress . Add ( data . Size ) ,
154- Size = data . Size ,
155- Name = data . Name ,
156- Protection = data . Protection ,
157- Type = data . Type ,
158- ModulePath = data . ModulePath ,
159- ModuleName = Path . GetFileName ( data . ModulePath ) ,
160- Category = data . Type == SectionType . Private ? SectionCategory . HEAP : SectionCategory . Unknown
161- } ;
162- switch ( section . Name )
163- {
164- case ".text" :
165- case "code" :
166- section . Category = SectionCategory . CODE ;
167- break ;
168- case ".data" :
169- case "data" :
170- case ".rdata" :
171- case ".idata" :
172- section . Category = SectionCategory . DATA ;
173- break ;
174- }
175- callbackSection ( section ) ;
176- } ;
177-
178- var c2 = callbackModule == null ? null : ( EnumerateRemoteModuleCallback ) delegate ( ref EnumerateRemoteModuleData data )
179- {
180- callbackModule ( new Module
181- {
182- Start = data . BaseAddress ,
183- End = data . BaseAddress . Add ( data . Size ) ,
184- Size = data . Size ,
185- Path = data . Path ,
186- Name = Path . GetFileName ( data . Path )
187- } ) ;
188- } ;
189-
190- enumerateRemoteSectionsAndModulesDelegate ( process , c1 , c2 ) ;
100+ enumerateRemoteSectionsAndModulesDelegate ( process , callbackSection , callbackModule ) ;
191101 }
192102
193103 public IntPtr OpenRemoteProcess ( IntPtr pid , ProcessAccess desiredAccess )
0 commit comments