• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

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

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

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


Ссылка на NUGET:

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



Ссылка на WIKI:

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



Понимаю, что есть много таких либ, но вдруг вам зайдет именно моя)
Удачи всем в программировании!
 
Последнее редактирование:
Тебе стоило бы добавить сэмплы, для лучшего понимания. Спасибо за релиз !
 
[08.08.2020]
1)Добавлены классы для получения имен и адресов экспортируемых функций в модуле процесса.
2)Добавлены 2 метода в класс ProcessExtensions, которые получают коллекцию из имен и адресов экспортируемых функций в модуле процесса.
3)Добавлен метод в класс SimpleMemoryManager для чтения байт из памяти по условию предиката.
 
[31.12.2020]
1)Добавлен новый класс "ModuleManager". Класс упрощает взаимодействие с виртуальной памятью. Теперь не нужно прибавлять адрес модуля в виртуальной памяти, можно просто создать экземпляр класса указав имя нужного модуля, тем самым читать и записывать в адресное пространство выбранного модуля.
2)Добавлен базовый класс "ModuleManager" для класса "MemoryManager". Работа с "MemoryManager" будет упрощена путем чтения и записи как во всю память процесса с выбранным по умолчанию "Главным" модулем, так и созданием отдельных экземпляров "ModuleManager" для работы с нужным адресным пространством выбранного модуля.
  • Выбрать нужный модуль можно через индексатор, указав имя модуля.
  • По умолчанию MemoryManager работает с адресным пространством, которое начинается с "Главного" модуля (Главный модуль является сам EXE приложения)
 
Было бы здорово добавить библиотеку, как пакет в NuGet, самому компилировать немного впадлу :FeelsBadMan:
 
[09.01.2021]
1)Обновлен класс MemoryManager:
  • Устранен баг с использованием главного модуля, теперь MemoryManager работает не с главным модулем приложения, а со всей памятью.
2)Обновлен класс GenerictConverter
  • Произведена оптимизация функции, конвертирующей массив байт в управляемый тип;
  • Убрана ненужная функция с параметром ref.
3)Добавил библиотеку в пакет NUGET, теперь можно установить эту библиотеку без скачивания исходников и их компилирования
 
[17.01.2021]
1)Обновлен класс MemoryManager
  1. В индексаторы добавлена "ленивая" инициализация ModuleManager. Теперь при использовании одного модуля множество раз будет только одна инициализация этого объекта. Это обновление позволит ускорить процесс получения модуля для работы с ним, а так же уберет лишнею нагрузку на оперативную память.
Новая версия библиотеки так же доступна в NUGET
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
спасибо за труды! хорошо проделанная работа!
 
[23.01.2021]
1)Обновил класс ModuleManager
  • Добавлена проверка на выход за пределы памяти модуля. Теперь класс поддерживает строгие нормы работы с выбранными модулями. Теперь нельзя выйти за пределы памяти выбранного модуля. Этот ограничение игнорируется если вы создаете экземпляр MemoryManager, который работает со всей памятью процесса.
Залил обновление на GitHub, кто решит протестировать и найдет баги, отпишитесь, потому что добавленное ограничение требует тестов для выявления внутренних ошибок при работе с виртуальной памятью.
 
[23.01.2021]
1)Обновил класс ModuleManager
  • Добавлена проверка на выход за пределы памяти модуля. Теперь класс поддерживает строгие нормы работы с выбранными модулями. Теперь нельзя выйти за пределы памяти выбранного модуля. Этот ограничение игнорируется если вы создаете экземпляр MemoryManager, который работает со всей памятью процесса.
Залил обновление на GitHub, кто решит протестировать и найдет баги, отпишитесь, потому что добавленное ограничение требует тестов для выявления внутренних ошибок при работе с виртуальной памятью.
Обнови Trion пжпж) Ты говорил что его обновишь, уже пол года прошло XD
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
:da:
Screenshot_1.png


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

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

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