Dragokas
Добрая душа
- Сообщения
- 229
- Реакции
- 213
- Автор ресурса
- #1
[INC] Memory Extended Fork - Расширяет возможности работы с памятью в SourcePawn
Список предыдущих изменений:
Список предыдущих изменений:
Version 3.1.1 (14.12.2020)
- MemoryAlloc - фикс VirtualAlloc/FreeMemory (Win)
Version 3.1.2 (29.12.2020)
- [GameDataEx] - новый методмап "GameDataEx" для работы с GameData конфигами:
* расширяет функционал методмапа "GameData" (имеет схожий функционал, но не является аналогом, т.к. не все ключи ещё реализованы)
* умеет подгружать GameData конфиги с кастомными названиями модулей.
* допускается формат Hex для смещений (оффсетов). (начиная с SM 1.11.? включено в SM)
* Pointer GetAddress(char[] name) // возвращает адрес функции (при этом, секция "Address" в GameData не требуется).
* int GetOffset(char[] name) // возвращает оффсет из секции "Offsets" по его имени.
Version 3.1.3 (26.02.2021)
- [MemSearcher - IsValidAddress]:
* отвечает, доступен ли адрес для чтения (определяет это через перечисление всех регионов памяти и проверки прав доступа)
* рассматривайте его как !IsBadReadPtr
Version 3.1.4 (02.03.2021)
- [BinaryFile] - новый методмап для работы с бинарными файлами:
* Предоставляет методы с похожими названиями как и при работе с памятью (в идеале, для LinuxFunction.inc переделать под BinaryStream, чтобы не читать постоянно с диска, а замапить сразу весь файл на память)
* new BinaryFile(char[] path, FILE_ACCESS access) // открытие файла в бинарном режиме с указанным флагом (-ами) доступа
* int LoadFromAddress(Address base, NumberType size) // прочитать число (1, 2 или 4 байта) по указаному адресу (из файла)
* Address LoadFromAddressEx(Address base, NumberType size) // тоже самое, результат возвращается с типом Address
* int StoreToAddress(Address base, int data, NumberType size) // записать число (1, 2 или 4 байта) по указаному адресу (в файл). (не тестировалось)
* int ReadString(Address base, char[] sResult, int iMaxLength) // прочитать ANSI строку по адресу (функция - копия вашего BaseMemory.inc)
* int ReadUnicodeString(Address base, char[] sResult, int iMaxLength) // прочитать Unicode строку по адресу (функция - копия вашего BaseMemory.inc)
* int WriteString(Address base, const char[] sString, bool bNull = true) // записать строку по адресу (не тестировалось)
- фикс GetProcAddress (Linux)
- новые стоки:
* int LoadFromAddressInt24(Address base) // прочитать 3 байта из памяти по адресу
* void StoreToAddressArray(Address base, int[] data, int iSize) // записать в память по адресу содержимое массива
* int GetByte(int iNum32, int iByteIndex) // извлечь байт из Dword (int) по номеру байта (справа налево). Счёт от единицы.
* void ArrayPushDword(int[] array, int &index, int data) // расщепить dword на байты и записать в байтовый массив, начиная с указанного индекса; index возвращается инкрементированным на 4 (удобно для подготовки пэйлоада с динамическими адресами (для джампов и т.п.)
Version 3.1.5 (07.04.2021)
- Добавлен маппинг библиотеки "matchmaking_ds" к "matchmaking_ds_srv" в Linux/Mac.
Version 3.1.6 (16.01.2022)
- [ASM_Instruction.inc] Добавлены SizeOfCode, SizeOfProc - для вычисления длины опкода инструкции / процедуры (thanks to Ms-Rem & The Trick).
- [ASM_Instruction.inc] Добавлен IsRelativeCmd - для проверки, является ли JMP относительным.
- #define PTR & Pointer признаны устаревшими (чтобы не путать с указателями на Си). Используйте вместо них ADDR().
- #define nullptr признан устаревшим. Используйте Address_Null.
- Добавлен define: ADDR - to view as Address.
- Добавлен defines: LA_8, LA_16, LA_24, LA_32 - ярлыки для чтения 1-4 байт данных по адресу.
Version 3.1.7 (19.01.2022)
- MemSearcher: Добавлен "IsValidPointer", улучшена проверка доступа на чтение.
Version 3.1.8 (18.03.2022)
- фикс "engine" маппинга библиотеки.
Version 3.1.9 (08.07.2022)
- фикс предупреждения на SM 1.11.
- VirtualQuery оптимизации (Windows).
Version 3.1.10 (06.11.2022)
- фикс "array out of bounds" в FindModuleString.
- MemoryAlloc - фикс VirtualAlloc/FreeMemory (Win)
Version 3.1.2 (29.12.2020)
- [GameDataEx] - новый методмап "GameDataEx" для работы с GameData конфигами:
* расширяет функционал методмапа "GameData" (имеет схожий функционал, но не является аналогом, т.к. не все ключи ещё реализованы)
* умеет подгружать GameData конфиги с кастомными названиями модулей.
* допускается формат Hex для смещений (оффсетов). (начиная с SM 1.11.? включено в SM)
* Pointer GetAddress(char[] name) // возвращает адрес функции (при этом, секция "Address" в GameData не требуется).
* int GetOffset(char[] name) // возвращает оффсет из секции "Offsets" по его имени.
Version 3.1.3 (26.02.2021)
- [MemSearcher - IsValidAddress]:
* отвечает, доступен ли адрес для чтения (определяет это через перечисление всех регионов памяти и проверки прав доступа)
* рассматривайте его как !IsBadReadPtr
Version 3.1.4 (02.03.2021)
- [BinaryFile] - новый методмап для работы с бинарными файлами:
* Предоставляет методы с похожими названиями как и при работе с памятью (в идеале, для LinuxFunction.inc переделать под BinaryStream, чтобы не читать постоянно с диска, а замапить сразу весь файл на память)
* new BinaryFile(char[] path, FILE_ACCESS access) // открытие файла в бинарном режиме с указанным флагом (-ами) доступа
* int LoadFromAddress(Address base, NumberType size) // прочитать число (1, 2 или 4 байта) по указаному адресу (из файла)
* Address LoadFromAddressEx(Address base, NumberType size) // тоже самое, результат возвращается с типом Address
* int StoreToAddress(Address base, int data, NumberType size) // записать число (1, 2 или 4 байта) по указаному адресу (в файл). (не тестировалось)
* int ReadString(Address base, char[] sResult, int iMaxLength) // прочитать ANSI строку по адресу (функция - копия вашего BaseMemory.inc)
* int ReadUnicodeString(Address base, char[] sResult, int iMaxLength) // прочитать Unicode строку по адресу (функция - копия вашего BaseMemory.inc)
* int WriteString(Address base, const char[] sString, bool bNull = true) // записать строку по адресу (не тестировалось)
- фикс GetProcAddress (Linux)
- новые стоки:
* int LoadFromAddressInt24(Address base) // прочитать 3 байта из памяти по адресу
* void StoreToAddressArray(Address base, int[] data, int iSize) // записать в память по адресу содержимое массива
* int GetByte(int iNum32, int iByteIndex) // извлечь байт из Dword (int) по номеру байта (справа налево). Счёт от единицы.
* void ArrayPushDword(int[] array, int &index, int data) // расщепить dword на байты и записать в байтовый массив, начиная с указанного индекса; index возвращается инкрементированным на 4 (удобно для подготовки пэйлоада с динамическими адресами (для джампов и т.п.)
Version 3.1.5 (07.04.2021)
- Добавлен маппинг библиотеки "matchmaking_ds" к "matchmaking_ds_srv" в Linux/Mac.
Version 3.1.6 (16.01.2022)
- [ASM_Instruction.inc] Добавлены SizeOfCode, SizeOfProc - для вычисления длины опкода инструкции / процедуры (thanks to Ms-Rem & The Trick).
- [ASM_Instruction.inc] Добавлен IsRelativeCmd - для проверки, является ли JMP относительным.
- #define PTR & Pointer признаны устаревшими (чтобы не путать с указателями на Си). Используйте вместо них ADDR().
- #define nullptr признан устаревшим. Используйте Address_Null.
- Добавлен define: ADDR - to view as Address.
- Добавлен defines: LA_8, LA_16, LA_24, LA_32 - ярлыки для чтения 1-4 байт данных по адресу.
Version 3.1.7 (19.01.2022)
- MemSearcher: Добавлен "IsValidPointer", улучшена проверка доступа на чтение.
Version 3.1.8 (18.03.2022)
- фикс "engine" маппинга библиотеки.
Version 3.1.9 (08.07.2022)
- фикс предупреждения на SM 1.11.
- VirtualQuery оптимизации (Windows).
Version 3.1.10 (06.11.2022)
- фикс "array out of bounds" в FindModuleString.
Последнее редактирование: