RAMvader  1.4
A .NET library which provides access to other processes' memory space.
RAMvader Namespace Reference

Namespaces

Classes

class  AbsoluteMemoryAddress
 A specialization for the MemoryAddress class, used to represent absolute/static/constant addresses. More...
 
class  InjectedCodeCaveMemoryAddress
 A specialization for the MemoryAddress class, used to represent addresses of code caves that get injected by the Injector<TMemoryAlterationSetID, TCodeCave, TVariable> into a target process' memory space. More...
 
class  InjectedVariableMemoryAddress
 A specialization for the MemoryAddress class, used to represent addresses of variables that get injected by the Injector<TMemoryAlterationSetID, TCodeCave, TVariable> into a target process' memory space. More...
 
class  InstanceAlreadyAttachedException
 Exception thrown when the user tries to attach a Target instance to a process, but the instance is already attached to another process. Before attaching to a process, the Target instance must be detached from any other process. More...
 
class  InstanceNotAttachedException
 Exception thrown when a method that requires the Target instance to be attached is called, while the Target is in a "not attached" state (i.e., the Target hasn't been attached to any target process yet). More...
 
class  MemoryAddress
 
class  ModuleNotFoundException
 Exception thrown when the RAMvader library fails to find a module in the target process' modules list. More...
 
class  ModuleOffsetMemoryAddress
 A specialization for the MemoryAddress class, used to represent addresses that are calculated as offsets from a given module of the process to which the Target is attached. More...
 
class  NotifyPropertyChangedAdapter
 An adapter class to make the implementation of the INotifyPropertyChanged interface easier for any class willing to provide that implementation. More...
 
class  NotImplementedException
 Exception thrown whenever there is a given feature has not been implemented in the library's code. More...
 
class  PointerDataLostException
 An exception which is thrown when trying to perform an I/O operation with pointers between two processes with different pointer sizes. More...
 
class  RAMvaderException
 The base class for all exceptions from the RAMvader library. More...
 
class  RequiredIOException
 Exception that is thrown when an I/O operation that was required to succeed returns a fail state. More...
 
class  RequiredReadException
 Exception that is thrown when an input/read operation that was required to succeed returns a fail state. More...
 
class  RequiredWriteException
 Exception that is thrown when an output/write operation that was required to succeed returns a fail state. More...
 
class  Target
 RAMvader library's core class. Instances of this class are able to "attach" to processes and execute reading and writing operations in their memory spaces. More...
 
class  UnexpectedDataTypeSizeException
 Exception thrown when the compiler reports an unexpected size for a basic type handled by the RAMvader library. This exception exists for safety purposes only, and should never be thrown on standard development environments. More...
 
class  UnmatchedCodeCaveIdentifierException
 Exception thrown when the identifier given for a code cave does not match the expected enumeration type of identifiers for code caves of an CodeInjection.Injector<TMemoryAlterationSetID, TCodeCave, TVariable>. More...
 
class  UnsupportedDataTypeException
 An exception which is thrown when the user tries to perform a read or write operation using a data type that is not supported by the library. More...
 
class  UnsupportedPointerSizeException
 An exception which is thrown when the user tries to attach a 32-bits process to a 64-bits target process. More...
 
class  WinAPI
 This class is an interface that provides access to the Windows API.
 

Enumerations

enum  EDifferentPointerSizeError { EDifferentPointerSizeError.evThrowException, EDifferentPointerSizeError.evSafeTruncation, EDifferentPointerSizeError.evUnsafeTruncation }
 Defines how errors with different pointer sizes are handled by the library. More...
 
enum  EEndianness { EEndianness.evEndiannessDefault, EEndianness.evEndiannessLittle, EEndianness.evEndiannessBig }
 Defines the possible endianness options which RAMvader can operate on. More...
 
enum  EPointerSize { EPointerSize.evPointerSizeDefault, EPointerSize.evPointerSize32, EPointerSize.evPointerSize64 }
 Defines the supported pointer sizes for the target process. More...
 
enum  EX86BranchInstructionType {
  EX86BranchInstructionType.evJmpShortRelative8, EX86BranchInstructionType.evJaShortRelative8, EX86BranchInstructionType.evJaeShortRelative8, EX86BranchInstructionType.evJbShortRelative8,
  EX86BranchInstructionType.evJbeShortRelative8, EX86BranchInstructionType.evJgShortRelative8, EX86BranchInstructionType.evJgeShortRelative8, EX86BranchInstructionType.evJlShortRelative8,
  EX86BranchInstructionType.evJleShortRelative8, EX86BranchInstructionType.evJeShortRelative8, EX86BranchInstructionType.evJneShortRelative8, EX86BranchInstructionType.evJaNearRelative32,
  EX86BranchInstructionType.evJaeNearRelative32, EX86BranchInstructionType.evJbNearRelative32, EX86BranchInstructionType.evJbeNearRelative32, EX86BranchInstructionType.evJgNearRelative32,
  EX86BranchInstructionType.evJgeNearRelative32, EX86BranchInstructionType.evJlNearRelative32, EX86BranchInstructionType.evJleNearRelative32, EX86BranchInstructionType.evJeNearRelative32,
  EX86BranchInstructionType.evJneNearRelative32, EX86BranchInstructionType.evJmpNearRelative32, EX86BranchInstructionType.evCallNearRelative32
}
 Enumeration providing the x86 branch instruction types, used for changing the flow of execution of a target application's code. Branching can be used, for example, to make the target application execute code that you have injected in the target process' memory space. Corresponding instruction names and opcodes are listed for each enumerator, following the same conventions as seen in the Instruction Set Reference section of the document: “Intel® 64 and IA-32 Architectures Software Developer’s Manual V2” (available online free of charges code is being published). More...
 

Enumeration Type Documentation

◆ EDifferentPointerSizeError

Defines how errors with different pointer sizes are handled by the library.

Enumerator
evThrowException 

Throws an exception if the target process and the process which runs RAMvader have different pointer sizes. This is the default behaviour, for safety reasons.

evSafeTruncation 

If the target process and the process which uses RAMvader have different pointer sizes, operations with pointers truncate the pointers to 32-bits when necessary. If any data is lost during the truncation process, a PointerDataLostException is thrown.

evUnsafeTruncation 

If the target process and the process which uses RAMvader have different pointer sizes, operations with pointers truncate the pointers to 32-bits when necessary. If any data is lost during the truncation process, nothing happens. Thus, this is the less recommended option and should be used with caution.

◆ EEndianness

enum RAMvader.EEndianness
strong

Defines the possible endianness options which RAMvader can operate on.

Enumerator
evEndiannessDefault 

A value indicating that RAMvader should operate in the same endianness as the process that RAMvader is running on.

evEndiannessLittle 

A value indicating that RAMvader should operate in Little-Endian byte order.

evEndiannessBig 

A value indicating that RAMvader should operate in Big-Endian byte order.

◆ EPointerSize

enum RAMvader.EPointerSize
strong

Defines the supported pointer sizes for the target process.

Enumerator
evPointerSizeDefault 

The default pointer size configuration, where the target process' pointer size is assumed to be the same as the pointer size of the process which runs RAMvader. The pointer size can be retrieved through IntPtr.Size.

evPointerSize32 

Explicitly identifies a 32-bit pointer.

evPointerSize64 

Explicitly identifies a 64-bit pointer.

◆ EX86BranchInstructionType

Enumeration providing the x86 branch instruction types, used for changing the flow of execution of a target application's code. Branching can be used, for example, to make the target application execute code that you have injected in the target process' memory space. Corresponding instruction names and opcodes are listed for each enumerator, following the same conventions as seen in the Instruction Set Reference section of the document: “Intel® 64 and IA-32 Architectures Software Developer’s Manual V2” (available online free of charges code is being published).

Enumerator
evJmpShortRelative8 

Identifies the branch instruction "JMP rel8" (opcodes: EB cb).

evJaShortRelative8 

Identifies the branch instruction "JA rel8" (opcodes: 77 cb).

evJaeShortRelative8 

Identifies the branch instruction "JAE rel8" (opcodes: 73 cb).

evJbShortRelative8 

Identifies the branch instruction "JB rel8" (opcodes: 72 cb).

evJbeShortRelative8 

Identifies the branch instruction "JBE rel8" (opcodes: 76 cb).

evJgShortRelative8 

Identifies the branch instruction "JG rel8" (opcodes: 7F cb).

evJgeShortRelative8 

Identifies the branch instruction "JGE rel8" (opcodes: 7D cb).

evJlShortRelative8 

Identifies the branch instruction "JL rel8" (opcodes: 7C cb).

evJleShortRelative8 

Identifies the branch instruction "JLE rel8" (opcodes: 7E cb).

evJeShortRelative8 

Identifies the branch instruction "JE rel8" (opcodes: 74 cb).

evJneShortRelative8 

Identifies the branch instruction "JNE rel8" (opcodes: 75 cb).

evJaNearRelative32 

Identifies the branch instruction "JA rel32" (opcodes: 0F 87 cd).

evJaeNearRelative32 

Identifies the branch instruction "JAE rel32" (opcodes: 0F 83 cd).

evJbNearRelative32 

Identifies the branch instruction "JB rel32" (opcodes: 0F 82 cd).

evJbeNearRelative32 

Identifies the branch instruction "JBE rel32" (opcodes: 0F 86 cd).

evJgNearRelative32 

Identifies the branch instruction "JG rel32" (opcodes: 0F 8F cd).

evJgeNearRelative32 

Identifies the branch instruction "JGE rel32" (opcodes: 0F 8D cd).

evJlNearRelative32 

Identifies the branch instruction "JL rel32" (opcodes: 0F 8C cd).

evJleNearRelative32 

Identifies the branch instruction "JLE rel32" (opcodes: 0F 8E cd).

evJeNearRelative32 

Identifies the branch instruction "JE rel32" (opcodes: 0F 84 cd).

evJneNearRelative32 

Identifies the branch instruction "JNE rel32" (opcodes: 0F 85 cd).

evJmpNearRelative32 

Identifies the branch instruction "JMP rel32" (opcodes: E9 cd).

evCallNearRelative32 

Identifies the branch instruction "CALL rel32" (opcodes: E8 cd).