Example #1
0
 public static void GetStackExtents(out byte *stackBase, out long stackSize)
 {
     WinApi.MEMORY_BASIC_INFORMATION info = new WinApi.MEMORY_BASIC_INFORMATION();
     WinApi.VirtualQuery(&info, ref info, new IntPtr(sizeof(WinApi.MEMORY_BASIC_INFORMATION)));
     stackBase = info.AllocationBase;
     stackSize = (info.BaseAddress - info.AllocationBase) + info.RegionSize.ToInt64();
 }
Example #2
0
        public static List <WinApi.MEMORY_BASIC_INFORMATION> GetRegionsOfStack()
        {
            byte *stackBase;
            long  stackSize;

            GetStackExtents(out stackBase, out stackSize);

            List <WinApi.MEMORY_BASIC_INFORMATION> result = new List <WinApi.MEMORY_BASIC_INFORMATION>();

            byte *current = stackBase;

            while (current < stackBase + stackSize)
            {
                WinApi.MEMORY_BASIC_INFORMATION info = new WinApi.MEMORY_BASIC_INFORMATION();
                WinApi.VirtualQuery(current, ref info, new IntPtr(sizeof(WinApi.MEMORY_BASIC_INFORMATION)));
                result.Add(info);
                current = info.BaseAddress + info.RegionSize.ToInt64();
            }

            result.Reverse();
            return(result);
        }
Example #3
0
        public static List<WinApi.MEMORY_BASIC_INFORMATION> GetRegionsOfStack()
        {
            byte* stackBase;
            long stackSize;
            GetStackExtents(out stackBase, out stackSize);

            List<WinApi.MEMORY_BASIC_INFORMATION> result = new List<WinApi.MEMORY_BASIC_INFORMATION>();

            byte* current = stackBase;
            while (current < stackBase + stackSize)
            {
                WinApi.MEMORY_BASIC_INFORMATION info = new WinApi.MEMORY_BASIC_INFORMATION();
                WinApi.VirtualQuery(current, ref info, new IntPtr(sizeof(WinApi.MEMORY_BASIC_INFORMATION)));
                result.Add(info);
                current = info.BaseAddress + info.RegionSize.ToInt64();
            }

            result.Reverse();
            return result;
        }
Example #4
0
 public static void GetStackExtents(out byte* stackBase, out long stackSize)
 {
     WinApi.MEMORY_BASIC_INFORMATION info = new WinApi.MEMORY_BASIC_INFORMATION();
     WinApi.VirtualQuery(&info, ref info, new IntPtr(sizeof(WinApi.MEMORY_BASIC_INFORMATION)));
     stackBase = info.AllocationBase;
     stackSize = (info.BaseAddress - info.AllocationBase) + info.RegionSize.ToInt64();
 }