Ejemplo n.º 1
0
        public static List <Tuple <long, long> > GetVirtualMemoryAddresses(this Process process)
        {
            var         result  = new List <Tuple <long, long> >();
            SYSTEM_INFO sysinfo = new SYSTEM_INFO();

            GetSystemInfo(out sysinfo);

            long address = 0;
            MEMORY_BASIC_INFORMATION m = new MEMORY_BASIC_INFORMATION();
            IntPtr openedProcess       = IntPtr.Zero;

            try {
                openedProcess = OpenProcess(ProcessAccessFlags.All, false, (int)process.Id);

                while (address < sysinfo.lpMaximumApplicationAddress.ToInt64())
                {
                    try {
                        if (!VirtualQueryEx(openedProcess, new IntPtr(address), out m, (uint)Marshal.SizeOf(m)))
                        {
                            continue;
                        }
                    } finally {
                        // next address
                        address = m.BaseAddress.ToInt64() + m.RegionSize.ToInt64();
                    }

                    result.Add(new Tuple <long, long>(m.BaseAddress.ToInt64(), m.RegionSize.ToInt64()));
                }
            } finally {
                if (openedProcess != IntPtr.Zero)
                {
                    CloseHandle(openedProcess);
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
		public static List<Tuple<long, long>> GetVirtualMemoryAddresses(this Process process)
		{
			var result = new List<Tuple<long, long>>();
			SYSTEM_INFO sysinfo = new SYSTEM_INFO();
			GetSystemInfo(out sysinfo);
			
			long address = 0;
			MEMORY_BASIC_INFORMATION m = new MEMORY_BASIC_INFORMATION();
			IntPtr openedProcess = IntPtr.Zero;
			try {
				openedProcess = OpenProcess(ProcessAccessFlags.All, false, (int)process.Id);
				
				while (address < sysinfo.lpMaximumApplicationAddress.ToInt64())
				{
					try {
						if (!VirtualQueryEx(openedProcess, new IntPtr(address), out m, (uint)Marshal.SizeOf(m)))
							continue;
					} finally {
						// next address
						address = m.BaseAddress.ToInt64() + m.RegionSize.ToInt64();
					}
					
					result.Add(new Tuple<long, long>(m.BaseAddress.ToInt64(), m.RegionSize.ToInt64()));
				}
			} finally {
				if (openedProcess != IntPtr.Zero)
					CloseHandle(openedProcess);
			}
			
			return result;
		}
Ejemplo n.º 3
0
 public static extern bool VirtualQueryEx(IntPtr hProcess,
                                          IntPtr lpAddress,
                                          out MEMORY_BASIC_INFORMATION lpBuffer,
                                          uint dwLength);
Ejemplo n.º 4
0
		public static extern bool VirtualQueryEx(IntPtr hProcess,
		                                         IntPtr lpAddress,
		                                         out MEMORY_BASIC_INFORMATION lpBuffer,
		                                         uint dwLength);