RSSAmplifier

Blog

RCE Endeavors

😅

codereversing.comRSS feed ↗10 posts

Latest posts

DLL Injection: Manual Mapping (5/5)

Table of Contents: Manual mapping is an even stealthier technique to perform DLL injection. This technique involves writing a DLL into a process’s memory, fixing up its relocations, and starting a thread at its entry point. You can think of manual mapping as basically implementing your own lightweight version of LoadLibraryA. This lightweight implementation is [ ]

DLL Injection: Thread Context Hijacking (4/5)

Table of Contents: Thread context hijacking is a lesser used technique that makes a tradeoff: a stealthier way to perform DLL injection, but at the cost of a more complex loader implementation. Instead of creating a new thread to load the DLL, thread context hijacking involves changing the state of an existing thread to perform [ ]

DLL Injection: Remote Threads (3/5)

Table of Contents: Another common technique to perform DLL injection is to use the CreateRemoteThreadEx function. As its name suggests, this function creates a thread that begins execution in the address space of another process. The CreateRemoteThreadEx function has the following prototype: This function looks daunting at first, but most of the parameters are optional. [ ]

DLL Injection: Windows Hooks (2/5)

Table of Contents: One of the most straightforward ways to perform DLL injection is with the use of the SetWindowsHookEx API. Hooks, in Windows terminology, are mechanisms that allow applications to intercept particular system events. Installing a hook is a two-part process. First, you must define and implement a hook procedure* for the hook type [ ]

DLL Injection: Background & DLL Proxying (1/5)

Table of Contents: Dynamic-link libraries (DLLs) are code modules that contain sets of functions that other executables can call. Unlike statically linked libraries, which become part of an executable during the compilation process, DLLs can live on their own outside of the application that uses them. There are two ways to perform linking with DLLs: [ ]

Function Hooking: Export Address Table Hooks (7/7)

Table of Contents: The export address table (EAT) is also another interesting candidate for installing function hooks. Similar to the import address table, the export address table contains tables with information about functions that a dynamic link library exports to callers. Specifically, there are three tables of interest: the export name table, export ordinal table, [ ]

Function Hooking: Import Address Table Hooks (6/7)

Table of Contents: The import address table (IAT) is a table that holds pointers to functions imported from other dynamic link libraries (DLLs). When the Windows loader is loading an executable (image), this table will be filled with absolute addresses to imported functions that the image will use. This address table provides another good opportunity [ ]

Function Hooking: Virtual Table Hooks (5/7)

Table of Contents: A special case of function hooking is virtual table hooking. This technique involves overwriting an address in the virtual table of an instance of a C++ class. Recall that when you have a class hierarchy, deriving classes can overwrite virtual functions of the base class with a different implementation. For example, take [ ]

Function Hooking: Software Breakpoints (4/7)

Table of Contents: Software breakpoints are another technique to perform non-invasive function hooking. Unlike hardware breakpoints, there is no limit on the amount of software breakpoints that you can set. The downside, however, is that using software breakpoints can greatly reduce the performance of the application that is being monitored. As their name implies, these [ ]

Function Hooking: Hardware Breakpoints (3/7)

Table of Contents: Inline hooking is nice, but it has one noticeable drawback: you need to overwrite instructions in the program’s memory. While this is typically not an issue, you may run into an application that performs integrity checks on its executable code. Bypassing integrity checks can be a tedious process, but there may be [ ]