private void RemoveDoublyLinkedListEntry(ListEntry32 entry) { // Change the front link of the previous entry to the front link of the entry var previousEntry = _process.MemoryManager.ReadVirtualMemory <ListEntry32>((IntPtr)entry.Blink); previousEntry.Flink = entry.Flink; _process.MemoryManager.WriteVirtualMemory((IntPtr)entry.Blink, previousEntry); // Change the back link of the next entry to the back link of the entry var nextEntry = _process.MemoryManager.ReadVirtualMemory <ListEntry32>((IntPtr)entry.Flink); nextEntry.Blink = entry.Blink; _process.MemoryManager.WriteVirtualMemory((IntPtr)entry.Flink, nextEntry); }
private void RemoveDoublyLinkedListEntry(ListEntry32 entry) { // Read the previous entry from the list var previousEntry = _injectionWrapper.MemoryManager.ReadVirtualMemory <ListEntry32>((IntPtr)entry.Blink); // Change the front link of the previous entry to the front link of the entry previousEntry.Flink = entry.Flink; _injectionWrapper.MemoryManager.WriteVirtualMemory((IntPtr)entry.Blink, previousEntry); // Read the next entry from the list var nextEntry = _injectionWrapper.MemoryManager.ReadVirtualMemory <ListEntry32>((IntPtr)entry.Flink); // Change the back link of the next entry to the back link of the entry nextEntry.Blink = entry.Blink; _injectionWrapper.MemoryManager.WriteVirtualMemory((IntPtr)entry.Flink, nextEntry); }