Walkthrough the stack. 
   29{
   34 
   35    if (Size == 0)
   36    {
   38    }
   39 
   40    if (Is32Bit)
   41    {
   42        
   43        
   44        
   45        AddressMode = 
sizeof(
UINT32);
 
   46        FrameIndex  = Size / AddressMode;
   47    }
   48    else
   49    {
   50        
   51        
   52        
   53        AddressMode = 
sizeof(
UINT64);
 
   54        FrameIndex  = Size / AddressMode;
   55    }
   56 
   57    
   58    
   59    
   60    for (size_t i = 0; i < FrameIndex; i++)
   61    {
   62        
   63        
   64        
   65        CurrentStackAddress = StackBaseAddress + (i * AddressMode);
   66 
   68        {
   70 
   71            
   72            
   73            
   75        }
   76 
   77        
   78        
   79        
   81 
   82        
   83        
   84        
   86 
   87        
   88        
   89        
   91 
   92        
   93        
   94        
   95        
   96        
   97        
   98        
   99        
  101        {
  102            
  103            
  104            
  106 
  107            
  108            
  109            
  111 
  112            
  113            
  114            
  116                                                      AddressToSaveFrames[i].InstructionBytesOnRip,
  118        }
  119    }
  120 
  121    
  122    
  123    
  125}
BOOLEAN CheckAccessValidityAndSafety(UINT64 TargetAddress, UINT32 Size)
Check the safety to access the memory.
Definition AddressCheck.c:156
unsigned short UINT16
Definition BasicTypes.h:47
#define TRUE
Definition BasicTypes.h:55
#define FALSE
Definition BasicTypes.h:54
unsigned __int64 UINT64
Definition BasicTypes.h:21
unsigned int UINT32
Definition BasicTypes.h:48
#define MAXIMUM_CALL_INSTR_SIZE
maximum size for call instruction in Intel
Definition Constants.h:473
_Use_decl_annotations_ BOOLEAN MemoryMapperReadMemorySafeOnTargetProcess(UINT64 VaAddressToRead, PVOID BufferToSaveMemory, SIZE_T SizeToRead)
Read memory safely by mapping the buffer on the target process memory (It's a wrapper)
Definition MemoryMapper.c:1120
_Use_decl_annotations_ BOOLEAN MemoryMapperCheckIfPageIsNxBitSetOnTargetProcess(PVOID Va)
This function checks target process to see if the page has NX bit or not.
Definition MemoryMapper.c:475
RequestedActionOfThePacket Value(0x1) 00000000
BOOLEAN IsExecutable
Definition RequestStructures.h:764
BOOLEAN IsStackAddressValid
Definition RequestStructures.h:762
UINT64 Value
Definition RequestStructures.h:765
BOOLEAN IsValidAddress
Definition RequestStructures.h:763