/[RomCheater]/trunk/Win32/Sojaner.MemoryScanner/MemoryScanner.cs
ViewVC logotype

Diff of /trunk/Win32/Sojaner.MemoryScanner/MemoryScanner.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 164 by william, Mon May 28 07:49:48 2012 UTC revision 167 by william, Mon May 28 08:31:56 2012 UTC
# Line 72  namespace Sojaner.MemoryScanner Line 72  namespace Sojaner.MemoryScanner
72          public bool DumpMemory(string filename, uint MemoryAddress, uint bytesToRead, out int bytesRead)          public bool DumpMemory(string filename, uint MemoryAddress, uint bytesToRead, out int bytesRead)
73          {          {
74              bytesRead = 0;              bytesRead = 0;
75              uint byte_alignment = 16; // 16 byte alignment              uint byte_alignment = 102400; // write to file in 100mb chunks
76              uint address = MemoryAddress;              uint address = MemoryAddress;
77                uint _bytesToRead = bytesToRead;
78                byte[] buffer = new byte[] { };
79              try              try
80              {              {
81                  using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))                  FileInfo fi = new FileInfo(filename);
82                    if (fi.Exists)
83                        fi.Delete();
84                    using (FileStream fs = new FileStream(filename, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.ReadWrite))
85                  {                  {
86                      BinaryWriter bw = new BinaryWriter(fs);                      BinaryWriter bw = new BinaryWriter(fs);
87                      //foreach (byte b in data) { bw.Write(b); }                      //foreach (byte b in data) { bw.Write(b); }
88    
89                      for (uint i = 0; i <= bytesToRead; i += byte_alignment)                      for (uint i = 0; i <= bytesToRead;)
90                      {                      {
91                          byte[] buffer = new byte[byte_alignment];                          if (_bytesToRead < byte_alignment)
92                          uint bytes_to_read = byte_alignment;                          {
93                                _bytesToRead = bytesToRead;
94                                buffer = new byte[_bytesToRead];
95                            }
96                            else
97                            {
98                                _bytesToRead = byte_alignment;
99                                buffer = new byte[byte_alignment];
100                            }
101                          IntPtr ptrBytesRead;                          IntPtr ptrBytesRead;
102                          ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, (UIntPtr)address, buffer, bytes_to_read, out ptrBytesRead);                          ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, (UIntPtr)address, buffer, _bytesToRead, out ptrBytesRead);
103                          bytesRead = ptrBytesRead.ToInt32();                          bytesRead = ptrBytesRead.ToInt32();
104                          bw.Write(buffer);                          bw.Write(buffer);
105                          bw.Flush();                          bw.Flush();
106                          address += byte_alignment;                          
107                            if (_bytesToRead < byte_alignment)
108                            {
109                                i += _bytesToRead;
110                                address += _bytesToRead;
111                            }
112                            else
113                            {
114                                i += byte_alignment;
115                                address += byte_alignment;
116                            }
117    
118                            
119                      }                      }
120                      bw.Close();                      bw.Close();
121                  }                  }

Legend:
Removed from v.164  
changed lines
  Added in v.167

  ViewVC Help
Powered by ViewVC 1.1.22