Иконка ресурса

Другое [INC] Memory Extended 3.1

Версия Дата выпуска Скачивания Оценка  
3.1 426 0.00 звёзд 0 оценок Скачать
3.0 86 0.00 звёзд 0 оценок Скачать
2.7 72 0.00 звёзд 0 оценок Скачать
2.5 73 0.00 звёзд 0 оценок Скачать
2.0 77 0.00 звёзд 0 оценок Скачать
2.0 33 0.00 звёзд 0 оценок Скачать
2.0 35 0.00 звёзд 0 оценок Скачать
1.1 39 0.00 звёзд 0 оценок Скачать
1.0 43 0.00 звёзд 0 оценок Скачать
Версия 3.1
1)Добавлена stock функция FindAllStrings, которая возвращает адреса необходимых строк в ArrayList
2)Добавлен новый inc MemoryEx/PatternGenerator.inc => Для удобной автоматической генерации сигнатур с меняющимися значениями.
Пример вы могли наблюдать уже => Защита плагина от декомпиляции
3)Полная смена логики получения PEB адреса, теперь работает на всех SourceGame без крашей [Спасибо @Boeing 767 за сообщение о крашах].
4)Улучшена система динамического выделения памяти для Windows
5)Теперь GetProcAddress/GetImportAddres во всех случаях - возвращает Adress_Null при неудаче [Linux]
6) Добавлена stock функция FindBackPattern, а так же добавлено описание ее работы.
И многие другие фиксы...
Версия 3.0
Скоро будут обновлены и добавлены новые примеры, которые будут показывать - как правильно работать с данной библиотекой

1) Добавлена stock функция StrContainsEx - которая ищет необходимую строку в начале исходной
2) Добавлена stock функция FindModule - Которая ищет необходимую библиотеку по части названия
Возвращаемые результаты
FindModuleRes_None - Если не нашлось ни одного модуля [res = FindModule("gfhfhfg", sModule, sizeof sModule)]
FindModuleRes_OK - Если нашлась только одна нужная библиотека
FindModuleRes_More - Если под параметры поиска попали две и более библиотеки [Возвращается название последней найденной библиотеки]
3) Добавлена функция GetImportAddress - которая ищет в таблице импорта необходимую функцию [Win + linux]
4) Добавлена stock глобальная переменная MemoryEx g_hMem - чтобы было удобнее использовать функции
5) Добавлен новый inc - MemoryEx/MemoryAlloc.inc - где реализованы функции malloc/free
Версия 2.7
2.6
1) Удалены функции MemoryEx::Init / DynamicLibrary::Init / DynamicLibrary::GetBaseAddress / DynamicLibrary::InitModule
2) Добавлены новые stock функции в ServerLibrary => GetListLibraries/GetModuleHandle/GetModuleSize/GetModuleEnd/GetModuleInfo
3) Все функции из 2-го пункта реализованы в DynamicLibrary под такими же названиями

2,7
1) Добавилась новая stock функция LoadFromAddressEx =>[return view_as<Address>(LoadFromAddress(addr, size))]
2) Исправлена неправильная работа stock функции ReadString
3) Добавлена функция чтения необходимой информации из ImportTable GetImportAddressWindows [Windows Only]
4) Добавлена stock функция для чтение Export символов [Windows + Linux]
4.1) Теперь функция DynamicLibrary::GetProcAddress - поддерживает и Linux
4.1.1) Добавлена stock функция GetProcAddressLinux в MemoryEx/LinuxFunction.inc
4.2) Добавлены stock функции GetFirstElfTable/GetElfTableSize/GetCountElfTable в MemoryEx/LinuxFunction.inc
5) Добавлена [Экспериментальная] stock функция DumpOnAddress - используйте ее, если необходимо узнать, что в определенном отрезке памяти происходит
  • Мне нравится
Реакции: Vit_ amin, kilroy и iLoco
Версия 2.5

1) В MemoryEx/WindowsFunction - добавилась функция получия PEB адресса для различных целей
2) Теперь ReadString/ReadUnicodeString/FindPattern/FindString/FindUnicodeString - доступны в виде обычных функций, которые объявлены в MemoryEx/Stocks.inc
3) Добавлена функция WindowsGetDLLList => Теперь MemoryEx не зависит от gamedata и работает на всех играх Source Движка, а так же на любой OS
4) В структуре MemoryEx - полностью реализована структура BaseMemory для более короткого кода [Было g_hMem.mem.ReadByte() => Стало g_hmem.ReadByte()]
5) Удален большой блок кода в MemoryEx/ServerLibrary - который относился к определению OS сервера. Теперь определение OS занимает всего 20 строчек :)
6) Добавлена новая stock функция FindFreeMemory - для нахождения в нужном промежутке - свободную память. Под свободной памятью подразумевается промежуток, на котором все байты = 0x00
7) В BaseMemory была добавлена функция BaseMemory::ReadUnicodeString
8) Благодаря тому, что теперь MemoryEx может без проблем получать список динамических библиотек- код в MemoryEx/DynamicLibrary:::InitModule/GetModuleHandle - уменьшился, ведь был удален костыль, который вызывал GetModuleHandle из kernel32.dll для этих целей.
9) Были вырезаны функции GetServerDLLBase/GetServerDLLSize за ненадобностью.
10) Теперь при MemoryEx::Init / DynamicLibrary::Init - инициализируется не только server.dll, а так же engine.dll
11) Добавлена функция GetListLibraries в структуру DynamicLibrary - которая возвращает список всех загруженных динамических библиотек.
Теперь MemoryEx находится не в одном файле - а в древовидном виден, каждый файл которого - вы можете использовать отдельно

  • MemoryEx.inc
    • DynamicLibrary.inc
      • ASM_Instruction.inc
      • ServerLibrary.inc
        • BaseMemory.inc
        • WindowsFunction.inc
        • LinuxFunction.inc
        • Stocks.inc
Была добавлена поддержка Linux, а так же - поддержка всех Source игр [Windows поддерживает Only CS:GO]

В MemoryEx/LinuxFunction.inc функция LinuxParseMapsFile() - возвращает StringMap, который содержит
1) Название библиотеки
2) Базовый адрес
3) Инициализированный размер

На SP - это выглядит так
C-подобный:
enum struct ModuleInfo
{
    Pointer base;
    int size;
}

Был вырезан функционал ModifBytes - который помогал восстанавливать все измененные за работу inc байты
Теперь для более удобной инициализации библиотек - можно опускать его расширение [Кроме DynamicLibrary::GetModuleHandle]

До
C-подобный:
mem.lib.InitModule(GetServerOS() == OS_Windows ? "engine.dll" : "engine.so");
После
C-подобный:
mem.lib.InitModule("engine");

Оптимизирована функция GetServerOS - теперь при первом ее вызове - определяется OS - в последующая - просто возвращается результат.

Теперь нет нужны в MemoryEx делать MemoryEx::Init для определения базового адреса библиотеки server.dll/server.dpp

Для Windows можно используется
C-подобный:
Pointer base = GetServerDLLBase();
int size = GetServerDLLSize()
Для Linux - все в LinuxParseMapsFile

Из-за того, что теперь inc может работать со всеми динамическими библиотеками - все ограничения - только в вашей голове :)
  • Мне нравится
Реакции: kilroy
Теперь вы можете посредством SourcePawn - внедрять .dll файлы :)

0) Было добавлено описание некоторых функций данной библиотеки [Например: MemoryEx::RestoreBytes/MemoryEx::GetModuleHandle]
1) Все функции записи [WriteByte,WriteData,WrtieUnicodeString, ...] имеют тип void
2) Исправлена логика записи нуль-терминированной строки в функциях WriteString/WrtieUnicodeString при втором параметре bNull = true
3) В функциях WriteString/WriteUnicodeString - добавился еще один параметр int flags, по умолчанию имеет значение MemoryEx_NoNeedAdd, которая устанавливает адресс на конец записанной строки
4) Исправлен баг, когда GetWindowsVersion не возвращала назад старый адрес
5) Добавлена функция MemoryEx::GetProcAddress(const char[] library, const char[] function) - аналог WINAPI GetProcAddress
5.1) В описании библиотеки - был добавлен пример использования MemoryEx::GetProcAddress
6) Исправлено описание структуры MemoryEx в шапке темы
Сверху Снизу