Пример #1
0
        private void RemoveDoublyLinkedListEntry(ListEntry64 entry)
        {
            // Change the front link of the previous entry to the front link of the entry

            var previousEntry = _process.MemoryManager.ReadVirtualMemory <ListEntry64>((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 <ListEntry64>((IntPtr)entry.Flink);

            nextEntry.Blink = entry.Blink;

            _process.MemoryManager.WriteVirtualMemory((IntPtr)entry.Flink, nextEntry);
        }
Пример #2
0
        private void RemoveDoublyLinkedListEntry(ListEntry64 entry)
        {
            // Read the previous entry from the list

            var previousEntry = _injectionWrapper.MemoryManager.ReadVirtualMemory <ListEntry64>((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 <ListEntry64>((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);
        }