/[RomCheater]/trunk/RomCheater.CorePlugins/Config/PCSX2Config.cs
ViewVC logotype

Annotation of /trunk/RomCheater.CorePlugins/Config/PCSX2Config.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 390 - (hide annotations) (download)
Wed Jun 20 09:46:49 2012 UTC (8 years, 10 months ago) by william
File size: 9011 byte(s)

1 william 390 //#define DISALLOW_VERBOSE_LOGGING // when defined will disallow verbose logging for performance reasons
2     //using System;
3     //using System.Collections.Generic;
4     //using System.Linq;
5     //using System.Text;
6     //using RomCheater.PluginFramework.Core;
7     //using System.IO;
8     //using System.Diagnostics;
9     //using RomCheater.Logging;
10     //using Sojaner.MemoryScanner.MemoryProviers;
11     //using RomCheater.PluginFramework.Interfaces;
12 william 92
13 william 390 //namespace RomCheater.CorePlugins.Config
14     //{
15     // public sealed class PCSX2Config : ConfigPlugin
16     // {
17     // #region Configuration Memvers
18     // const string PCXS2_PROCESS_MAGIC = "pcsx2";
19     // const string PCXS2_LOOKUP_MAGIC_001 = "pcsx2";
20     // const string PCXS2_LOOKUP_MAGIC_002 = "compiled on";
21     // const uint VTLB_VADDR_OFFSET_DEBUG = 0x20000000;
22     // const uint VTLB_VADDR_SIZE = 0x02000000;
23     // #endregion
24     // public PCSX2Config() : base(false) { }
25     // public PCSX2Config(bool doinit) : base(doinit) { }
26     // protected override bool IsNotValidProcess(ProcContainer proc)
27     // {
28     // bool isDebug = false;
29     // uint VTLB_RELEASE_OFFSET = 0;
30     // bool notvalid = !IsValidPSX2Process(proc.ProcessInfo.Id, out isDebug, out VTLB_RELEASE_OFFSET, proc);
31 william 389
32 william 390 // this.MemoryRangeStart = VTLB_RELEASE_OFFSET;
33     // if (isDebug)
34     // this.MemoryRangeStart = VTLB_VADDR_OFFSET_DEBUG;
35 william 389
36 william 390 // this.MemoryRangeSize = VTLB_VADDR_SIZE;
37 william 389
38 william 390 // if (notvalid)
39     // {
40     //#if !DISALLOW_VERBOSE_LOGGING
41     // logger.VerboseDebug.WriteLine(" Not Allowing process {0} to be added because it was filterd out", proc.Name);
42     //#endif
43     // }
44     // else
45     // {
46     //#if !DISALLOW_VERBOSE_LOGGING
47     // logger.VerboseDebug.WriteLine(" Allowing process {0} to be added", proc.Name);
48     //#endif
49     // }
50     // return notvalid;
51     // }
52     // #region IPluginBase Members
53     // public override Guid ID
54     // {
55     // get
56     // {
57     // return new GuidGenerator(typeof(PCSX2Config).FullName).Guid;
58     // }
59     // }
60     // public override string Name
61     // {
62     // get { return "PCSX2 Configuration Plugin"; }
63     // }
64     // public override string Description
65     // {
66     // get { return "This plugin provides a configuration suitable for use with PCSX2"; }
67     // }
68     // #endregion
69     // private bool IsValidPSX2Process(int pid, out bool isDebug, out uint VTLB_RELEASE_OFFSET, ProcContainer proc)
70     // {
71     // bool isValid = false;
72     // isDebug = false;
73     // VTLB_RELEASE_OFFSET = 0;
74     // try
75     // {
76     // Process p = null;
77 william 389
78 william 390 // try
79     // {
80     // p = Process.GetProcessById(pid);
81     // }
82     // catch { return false; }
83 william 389
84 william 390 // string filename = p.MainModule.FileName;
85     // FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
86     //// BinaryReader r = new BinaryReader(fs);
87     //// byte[] exe_check = new byte[] {
88     //// 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
89     //// 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90     //// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91     //// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
92     //// 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68,
93     //// 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,
94     //// 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,
95     //// 0x6D, 0x6F, 0x64, 0x65, 0x2E
96     //// };
97     //// r.BaseStream.Seek(0, SeekOrigin.Begin);
98     //// byte[] data = r.ReadBytes(exe_check.Length);
99     //// bool isExe = false;
100     //// for (int i = 0; i < exe_check.Length; i++) { if (exe_check[i] == data[i]) { isExe = true; } else { isExe = false; } }
101     //// r.Close();
102     //// if (!isExe)
103     //// {
104     ////#if !DISALLOW_VERBOSE_LOGGING
105     //// logger.VerboseDebug.WriteLine(" Process: {0} is not a valid executable file", filename);
106     ////#endif
107     //// isValid = false;
108     //// }
109     //// else
110     //// {
111     // // check for valid pcsx2 exe
112     // fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
113     // StreamReader sr = new StreamReader(fs);
114     // string found_string = sr.ReadToEnd();
115     // if (found_string.ToLower().Contains(PCXS2_LOOKUP_MAGIC_001.ToLower()) && found_string.ToLower().Contains(PCXS2_LOOKUP_MAGIC_002.ToLower()))
116 william 389 // {
117 william 390 // isValid = true;
118 william 389 //#if !DISALLOW_VERBOSE_LOGGING
119 william 390 // logger.VerboseDebug.WriteLine(" Process: {0} found MAGIC LOOKUP {1} and {2}", filename, PCXS2_LOOKUP_MAGIC_001.ToLower(), PCXS2_LOOKUP_MAGIC_002.ToLower());
120 william 389 //#endif
121     // }
122 william 390 // sr.Close();
123     // // check for debug
124     // fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
125     // sr = new StreamReader(fs);
126     // found_string = sr.ReadToEnd();
127     // // DebugBreak should only be present in debug build version(s) of pcsx2
128     // if (found_string.ToLower().Contains("DebugBreak".ToLower()))
129 william 389 // {
130 william 390 // isDebug = true;
131     //#if !DISALLOW_VERBOSE_LOGGING
132     // logger.VerboseDebug.WriteLine(" Process: {0} found DebugBreak", filename);
133     //#endif
134 william 389 // }
135 william 390 // sr.Close();
136     //// }
137     // //this.IsDebugBuild = isDebug;
138     // // run check to see if we have a later version with offset fixed at: 0x20000000
139     // byte[] entrypoint_data = new byte[]{
140     // 0x01, 0x80, 0x1A, 0x3C, 0x78, 0x53, 0x59, 0xFF, 0x00, 0x68, 0x19, 0x40,
141     // 0x01, 0x80, 0x1A, 0x3C, 0x7C, 0x00, 0x39, 0x33, 0x21, 0xD0, 0x59, 0x03,
142     // 0x40, 0x53, 0x5A, 0x8F, 0x01, 0x80, 0x19, 0x3C, 0x08, 0x00, 0x40, 0x03,
143     // 0x78, 0x53, 0x39, 0xDF
144     // };
145     // //uint address = ramdumper.VTLB_VADDR_OFFSET_DEBUG;
146     // IAcceptsProcessAndConfig pconfig = new AcceptedProcessAndConfig(this, proc.ProcessInfo);
147     // GenericMemoryProvider provider = new GenericMemoryProvider(pconfig);
148     // provider.OpenProvider();
149     // int bytesReadSize;
150     // byte[] check_data = new byte[entrypoint_data.Length];
151     // provider.ReadProcessMemory(VTLB_VADDR_OFFSET_DEBUG, (uint)entrypoint_data.Length, out bytesReadSize, out check_data);
152     // isDebug = check_data.SequenceEqual(entrypoint_data);
153     //#if !DISALLOW_VERBOSE_LOGGING
154     // logger.VerboseDebug.WriteLine(" Process: {0} isDebug: {1}", filename, isDebug.ToString());
155     //#endif
156     // //List<uint> addresses = new List<uint>();
157     // if (!isDebug)
158     // {
159     // for (int i = 0x1000; i < 0x2000; i++)
160     // {
161     // try
162     // {
163     // uint t = ((uint)i << 16) | 0x5000;
164     // provider.ReadProcessMemory(t, (uint)entrypoint_data.Length, out bytesReadSize, out check_data);
165     // isValid = check_data.SequenceEqual(entrypoint_data);
166     // if (isValid)
167     // {
168     // //addresses.Add(t);
169     // VTLB_RELEASE_OFFSET = t;
170     //#if !DISALLOW_VERBOSE_LOGGING
171     // logger.VerboseDebug.WriteLine(" Process: {0} found release build entrypoint at 0x{1:x8}", filename, t);
172     //#endif
173     // break; //use only the first valid value
174     // }
175     // }
176     // catch { }
177     // }
178     // }
179     // provider.CloseProvider();
180     // return isValid;
181     // }
182     // catch (System.ComponentModel.Win32Exception) { }
183     // catch (Exception) { }
184     // return isValid;
185     // }
186     // }
187     //}

  ViewVC Help
Powered by ViewVC 1.1.22