Описание
AMX Assembly - коллекция библиотек, позволяющих обеспечить максимальное удобство в оперировании виртуальной машиной. Кроме этого, она также включает собственный дизассемблер, сканер кода и профайлер.
Библиотеки
Название |
Описание |
amx |
Файл содержит функции для чтения из AMX структуры. Содержит три функции: GetAmxAddress, ReadAmxCell, WriteAmxCell. Для получения адреса в структуре в файле определены смещения к каждому элементу. |
amx_base |
Позволяет узнать базовый адрес AMX. |
amx_header |
Содержит большую часть функций из шапки. Используя данную библиотеку, можно получить индекс public-, native-функции с помощью имени или адреса, и наоборот. Более того, есть возможность определить индекс, адрес, название public-переменных. Помимо этого, файл также узнаёт значения структуры AMX.
Помимо получения какой-либо информации, данный файл позволяет создавать собственные перехваты как для native-функций, так и для public-функций.
Пример использования:
PHP код:
main() { new idx = GetPublicIndexFromName("Callback"); printf("Id: %d", idx); }
|
amx_jit |
Предоставляет функции для правильной работы с JIT плагином. Данные функции позволяют узнать дополнительную информацию: использование плагина, базовый адрес. |
amx_memory |
Данный файл содержит функции для доступа к памяти. Из-за использования AMX-инструкций lref/sref появилась возможность получить доступ абсолютно ко всем данным. |
asm и asm_macros |
Библиотеки создающие псевдооператор @emit. В первом файле заданы функции для правильной обработки операндов; во втором находятся макросы, очевидно, для создания псевдооператора. |
codescan |
Содержит сканер кода, позволяющий найти необходимый участок кода из указанных инструкций. Помимо нахождения подобных участков, он также может определить значение неизвестного операнда. |
disasm |
Очевидно, что он может дизассемблировать файлы. Но, тем не менее, его также можно использовать и в остальном коде (данную библиотеку использует codescan) |
dynamic_call |
Позволяет вызывать абсолютно любые функции: native-, public-функции. Также он обеспечивает вызов функций с помощью sysreqC, sysreqD.
Предостережение: к сожалению, при использовании плагина JIT многие функции данной библиотеки не работают. |
frame_info |
Информация о фрейме. Функции данного файла предоставляют информацию о предыдущем фрейме, о фрейме возврата и т.п. |
heap_alloc |
Помогает выделить и освободить место в куче. Соответственно содержит функции: HeapAllocBytes, HeapAllocCells, HeapRelease |
opcode |
Файл с опкодами. Создан из-за несоответствия компиляторов для linux и для windows. |
os |
Узнаёт текущую операционную систему с помощью библиотеки opcode (см. выше). |
phys_memory |
Позволяет считывать информацию по физическому адресу. |
stack_trace |
Данная библиотека позволяет определить последние n-функций, которые вызвали текущую. |
Скачать
Все новые версии хранятся в репозитории на Github:
amx_assembly
Установка:
- Скачать библиотеку.
- Переместить все библиотеки в папку c другими библиотеками (обычно это "pawno/include")
- Подключить в исходном скрипте и скомпилировать.
Авторы библиотек: Zeex, Y_Less.
Статью подготовил: VVWVV
Исключительно для pro-pawn.ru
Копирование данной статьи на других ресурсах без разрешения автора запрещено!