ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/Win32/Sojaner.MemoryScanner/MemoryScanner.cs
(Generate patch)

Comparing trunk/Win32/Sojaner.MemoryScanner/MemoryScanner.cs (file contents):
Revision 246 by william, Sun Jun 3 14:50:09 2012 UTC vs.
Revision 247 by william, Sun Jun 3 15:27:23 2012 UTC

--- trunk/Win32/Sojaner.MemoryScanner/MemoryScanner.cs	2012/06/03 15:15:51	246
+++ trunk/Win32/Sojaner.MemoryScanner/MemoryScanner.cs	2012/06/03 15:27:23	247
@@ -42,12 +42,26 @@ namespace Sojaner.MemoryScanner
 
         public void OpenProcess()
         {
-            //			m_hProcess = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ, 1, (uint)m_ReadProcess.Id);
-            ProcessMemoryReaderApi.ProcessAccessType access;
-            access = ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_READ
-                | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_WRITE
-                | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_OPERATION;
-            m_hProcess = ProcessMemoryReaderApi.OpenProcess((uint)access, 1, (uint)m_ReadProcess.Id);
+            try
+            {
+                //			m_hProcess = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ, 1, (uint)m_ReadProcess.Id);
+                ProcessMemoryReaderApi.ProcessAccessType access;
+                access = ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_READ
+                    | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_WRITE
+                    | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_OPERATION;
+                m_hProcess = ProcessMemoryReaderApi.OpenProcess((uint)access, 1, (uint)m_ReadProcess.Id);
+            }
+            catch (SEHException ex)
+            {
+                logger.Error.WriteLine("WriteProcessMemoryToFile() SEHException was thrown: (0x{0:x8}) - {1}", ex.ErrorCode, ex.Message);
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
+            catch (Exception ex)
+            {
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
         }
 
         public void CloseHandle()
@@ -63,11 +77,13 @@ namespace Sojaner.MemoryScanner
             }
             catch (SEHException ex)
             {
+                logger.Error.WriteLine("WriteProcessMemoryToFile() SEHException was thrown: (0x{0:x8}) - {1}", ex.ErrorCode, ex.Message);
+                logger.Error.WriteLine(ex.ToString());
                 throw ex;
             }
             catch (Exception ex)
             {
-                //System.Windows.Forms.MessageBox.Show(ex.Message, "error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
+                logger.Error.WriteLine(ex.ToString());
                 throw ex;
             }
         }
@@ -195,27 +211,47 @@ namespace Sojaner.MemoryScanner
                 //logger.Info.WriteLine("Succefully dumped memory (0x{0:x8}-0x{1:x8}) from pid=({2})", MemoryAddress, MemoryAddress + bytesToRead, string.Format("0x{0:x4} {1}.exe", ppid.Id, ppid.ProcessName));
                 return true;
             }
+            catch (SEHException ex)
+            {
+                logger.Error.WriteLine("ReadFirstNonZeroByte() SEHException was thrown: (0x{0:x8}) - {1}", ex.ErrorCode, ex.Message);
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
             catch (OutOfMemoryException ex)
             {
-                logger.Error.WriteLine("Failed to dump memory (0x{0:x8}-0x{1:x8}) from pid=({2})", MemoryAddress, MemoryAddress + bytesToRead, string.Format("0x{0:x4} {1}.exe", ReadProcess.Id, ReadProcess.ProcessName));
-                logger.Error.WriteLine("DumpMemory(): OutOfMemoryException");
+                logger.Error.WriteLine("ReadFirstNonZeroByte(): OutOfMemoryException");
                 logger.Error.WriteLine(ex.ToString());
             }
             catch (Exception ex)
             {
-                logger.Error.WriteLine("Failed to dump memory (0x{0:x8}-0x{1:x8}) from pid=({2})", MemoryAddress, MemoryAddress + bytesToRead, string.Format("0x{0:x4} {1}.exe", ReadProcess.Id, ReadProcess.ProcessName));
-                logger.Error.WriteLine("DumpMemory(): Exception");
+                logger.Error.WriteLine("ReadFirstNonZeroByte(): Exception");
                 logger.Error.WriteLine(ex.ToString());
+                throw ex;
             }
             return false;
         }
         public void ReadProcessMemory(uint MemoryAddress, uint bytesToRead, out int bytesRead, out byte[] data)
         {
-            byte[] buffer = new byte[] { };
-            IntPtr ptrBytesRead;
-            ProcessMemoryReader.ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, (IntPtr)MemoryAddress, buffer, bytesToRead, out ptrBytesRead);
-            bytesRead = ptrBytesRead.ToInt32();
-            data = buffer;
+            try
+            {
+                byte[] buffer = new byte[] { };
+                IntPtr ptrBytesRead;
+                ProcessMemoryReader.ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, (IntPtr)MemoryAddress, buffer, bytesToRead, out ptrBytesRead);
+                bytesRead = ptrBytesRead.ToInt32();
+                data = buffer;
+            }
+            catch (SEHException ex)
+            {
+                logger.Error.WriteLine("ReadProcessMemory() SEHException was thrown: (0x{0:x8}) - {1}", ex.ErrorCode, ex.Message);
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
+            catch (Exception ex)
+            {
+                logger.Error.WriteLine("ReadProcessMemory(): Exception");
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
         }
         #endregion
 
@@ -226,9 +262,26 @@ namespace Sojaner.MemoryScanner
         }
         public void WriteProcessMemory(uint MemoryAddress, byte[] bytesToWrite, out int bytesWritten)
         {
-            IntPtr ptrBytesWritten;
-            ProcessMemoryReaderApi.WriteProcessMemory(m_hProcess, (IntPtr)MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten);
-            bytesWritten = ptrBytesWritten.ToInt32();
+            try
+            {
+                IntPtr ptrBytesWritten;
+                ProcessMemoryReaderApi.WriteProcessMemory(m_hProcess, (IntPtr)MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten);
+                bytesWritten = ptrBytesWritten.ToInt32();
+            }
+            catch (SEHException ex)
+            {
+                logger.Error.WriteLine("WriteProcessMemory() SEHException was thrown: (0x{0:x8}) - {1}", ex.ErrorCode, ex.Message);
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
+            catch (Exception ex)
+            {
+
+                logger.Error.WriteLine("WriteProcessMemory() Exception");
+                logger.Error.WriteLine(ex.ToString());
+                bytesWritten = 0;
+                throw ex;
+            }
         }
         #endregion
 
@@ -286,17 +339,22 @@ namespace Sojaner.MemoryScanner
                 logger.Info.WriteLine("Succefully dumped memory (0x{0:x8}-0x{1:x8}) from pid=({3}) to file {2}", MemoryAddress, MemoryAddress + bytesToRead, filename, string.Format("0x{0:x4} {1}.exe", ReadProcess.Id, ReadProcess.ProcessName));
                 return true;
             }
+            catch (SEHException ex)
+            {
+                logger.Error.WriteLine("WriteProcessMemoryToFile() SEHException was thrown: (0x{0:x8}) - {1}", ex.ErrorCode, ex.Message);
+                logger.Error.WriteLine(ex.ToString());
+                throw ex;
+            }
             catch (OutOfMemoryException ex)
             {
-                logger.Error.WriteLine("Failed to dump memory (0x{0:x8}-0x{1:x8}) from pid=({3}) to file {2}", MemoryAddress, MemoryAddress + bytesToRead, filename, string.Format("0x{0:x4} {1}.exe", ReadProcess.Id, ReadProcess.ProcessName));
-                logger.Error.WriteLine("DumpMemory(): OutOfMemoryException");
+                logger.Error.WriteLine("WriteProcessMemoryToFile(): Exception");
                 logger.Error.WriteLine(ex.ToString());
             }
             catch (Exception ex)
             {
-                logger.Error.WriteLine("Failed to dump memory (0x{0:x8}-0x{1:x8}) from pid=({3}) to file {2}", MemoryAddress, MemoryAddress + bytesToRead, filename, string.Format("0x{0:x4} {1}.exe", ReadProcess.Id, ReadProcess.ProcessName));
-                logger.Error.WriteLine("DumpMemory(): Exception");
+                logger.Error.WriteLine("WriteProcessMemoryToFile(): Exception");
                 logger.Error.WriteLine(ex.ToString());
+                throw ex;
             }
             return false;
         }