Исходник NativeManager (Библиотека для управления виртуальной памятью) C#

Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
Всему YouGame привет! Сегодня вам хочу дать ссылку на библиотеку, которая помогает изменять виртуальную память стороннего процесса.
Как по мне, то в ней есть все, что нужно для управления памятью процесса. Но если вам чего то не хватает, то пишите, постараюсь добавить.

Ссылка на GitHub:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Ссылка на NUGET:

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



Ссылка на WIKI:

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



Понимаю, что есть много таких либ, но вдруг вам зайдет именно моя)
Удачи всем в программировании!
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
3 Апр 2020
Сообщения
12
Реакции[?]
5
Поинты[?]
0
Тебе стоило бы добавить сэмплы, для лучшего понимания. Спасибо за релиз !
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[08.08.2020]
1)Добавлены классы для получения имен и адресов экспортируемых функций в модуле процесса.
2)Добавлены 2 метода в класс ProcessExtensions, которые получают коллекцию из имен и адресов экспортируемых функций в модуле процесса.
3)Добавлен метод в класс SimpleMemoryManager для чтения байт из памяти по условию предиката.
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[31.12.2020]
1)Добавлен новый класс "ModuleManager". Класс упрощает взаимодействие с виртуальной памятью. Теперь не нужно прибавлять адрес модуля в виртуальной памяти, можно просто создать экземпляр класса указав имя нужного модуля, тем самым читать и записывать в адресное пространство выбранного модуля.
2)Добавлен базовый класс "ModuleManager" для класса "MemoryManager". Работа с "MemoryManager" будет упрощена путем чтения и записи как во всю память процесса с выбранным по умолчанию "Главным" модулем, так и созданием отдельных экземпляров "ModuleManager" для работы с нужным адресным пространством выбранного модуля.
  • Выбрать нужный модуль можно через индексатор, указав имя модуля.
  • По умолчанию MemoryManager работает с адресным пространством, которое начинается с "Главного" модуля (Главный модуль является сам EXE приложения)
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,825
Реакции[?]
1,852
Поинты[?]
24K
Было бы здорово добавить библиотеку, как пакет в NuGet, самому компилировать немного впадлу :FeelsBadMan:
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[09.01.2021]
1)Обновлен класс MemoryManager:
  • Устранен баг с использованием главного модуля, теперь MemoryManager работает не с главным модулем приложения, а со всей памятью.
2)Обновлен класс GenerictConverter
  • Произведена оптимизация функции, конвертирующей массив байт в управляемый тип;
  • Убрана ненужная функция с параметром ref.
3)Добавил библиотеку в пакет NUGET, теперь можно установить эту библиотеку без скачивания исходников и их компилирования
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[17.01.2021]
1)Обновлен класс MemoryManager
  1. В индексаторы добавлена "ленивая" инициализация ModuleManager. Теперь при использовании одного модуля множество раз будет только одна инициализация этого объекта. Это обновление позволит ускорить процесс получения модуля для работы с ним, а так же уберет лишнею нагрузку на оперативную память.
Новая версия библиотеки так же доступна в NUGET
 
Забаненный
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
46
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
спасибо за труды! хорошо проделанная работа!
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[23.01.2021]
1)Обновил класс ModuleManager
  • Добавлена проверка на выход за пределы памяти модуля. Теперь класс поддерживает строгие нормы работы с выбранными модулями. Теперь нельзя выйти за пределы памяти выбранного модуля. Этот ограничение игнорируется если вы создаете экземпляр MemoryManager, который работает со всей памятью процесса.
Залил обновление на GitHub, кто решит протестировать и найдет баги, отпишитесь, потому что добавленное ограничение требует тестов для выявления внутренних ошибок при работе с виртуальной памятью.
 
Эксперт
Статус
Оффлайн
Регистрация
16 Ноя 2017
Сообщения
1,570
Реакции[?]
1,266
Поинты[?]
4K
[23.01.2021]
1)Обновил класс ModuleManager
  • Добавлена проверка на выход за пределы памяти модуля. Теперь класс поддерживает строгие нормы работы с выбранными модулями. Теперь нельзя выйти за пределы памяти выбранного модуля. Этот ограничение игнорируется если вы создаете экземпляр MemoryManager, который работает со всей памятью процесса.
Залил обновление на GitHub, кто решит протестировать и найдет баги, отпишитесь, потому что добавленное ограничение требует тестов для выявления внутренних ошибок при работе с виртуальной памятью.
Обнови Trion пжпж) Ты говорил что его обновишь, уже пол года прошло XD
 
Shitcode lord 💩
Забаненный
Статус
Оффлайн
Регистрация
25 Ноя 2020
Сообщения
272
Реакции[?]
84
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
:da:
Screenshot_1.png

Пакет с nuget тоже мертвый.
Screenshot_1.png
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
Все, проверил, все работает, пакет загружает как для Net.Core так и для Net.Framework. Единственное предупреждение было по архитектуре X86.
По первому скрину тебе визуалка четко описала ошибку, что нужно просто добавить приватную переменную m_Process, не думаю, что тут должна возникнуть трудность.
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[13.02.2021]
1)Обновил почти всю важную часть библиотеки. Все изменения можете посмотреть на гитхабе со всеми добавленными и удаленными строками. Поработал над оптимизацией чтения и записи в память. Скажу, что я уже сделал все что нужно в этой библиотеке. Поэтому надеюсь, что кому интересна эта тема напишут свои пожелания к тому, что нужно добавить в библиотеку, а что лучше изменить)))

Так же обновил библиотеку на NUGET, так что можно скачать оттуда стабильный релиз
 
Новичок
Статус
Оффлайн
Регистрация
20 Ноя 2018
Сообщения
2
Реакции[?]
0
Поинты[?]
0
у меня на c# 7.0 выдает ошибку CS8107 Возможность "ограничения неуправляемых универсальных типов" недоступна. как пофиксить?
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
[10.05.2021]
1)Обновил класс Allocator
  • Добавил перегрузку для метода Alloc, теперь доступно больше настроек при выделении памяти
  • Добавил перегрузку для метода Protect, теперь метод возвращает AllocationProtect вместо bool, что дополнительно вносит удобство при написании кода;
2)Обновил класс Executor
  • Убрал много ненужного кода, а так же убрал метод CallFunction, который должен был помочь вызывать функцию с параметрами, но иногда он вводил в ступор при написании кода для вызова. Поэтому теперь нужно использовать метод Execute и передавать в аргументы выделенную память через Allocator;

3)Обновил остальные классы
  • УБрал мусорный код, а так же была произведена маленькая оптимизация;
4)Обновил класс GenericsConverter
  • Оптимизировал метод
    Пожалуйста, авторизуйтесь для просмотра ссылки.
    ;
В скором времени подъедет документация по библиотеке на GitHub, так же буду показаны примеры работы библиотеки в CS:GO
 
Новичок
Статус
Оффлайн
Регистрация
3 Июн 2021
Сообщения
2
Реакции[?]
0
Поинты[?]
0
Есть проблема, когда я вызываю метод CallFunction, который описан в гитхабе, то его не удаётся найти. Как можно это решить?
Ошибка CS1061 "MemoryManager" не содержит определения "CallFunction", и не удалось найти доступный метод расширения "CallFunction", принимающий тип "MemoryManager" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
 
Эксперт
Статус
Оффлайн
Регистрация
16 Ноя 2017
Сообщения
1,570
Реакции[?]
1,266
Поинты[?]
4K
Есть проблема, когда я вызываю метод CallFunction, который описан в гитхабе, то его не удаётся найти. Как можно это решить?
Ошибка CS1061 "MemoryManager" не содержит определения "CallFunction", и не удалось найти доступный метод расширения "CallFunction", принимающий тип "MemoryManager" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Автору нужно обновить документации на гитхабе. Они давно устарели, а он не обновляет. Либо самому разбираться, либо старый билд искать, либо юзать альтернативные библиотеки а-ля memory.dll
 
Сверху Снизу