Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1
  1. #1
    Аватар для VVWVV
    Модератор

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    728
    Репутация:
    346 ±

    AMX Assembly - библиотека для работы с виртуальной машиной

    Описание
    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

    Установка:
    1. Скачать библиотеку.
    2. Переместить все библиотеки в папку c другими библиотеками (обычно это "pawno/include")
    3. Подключить в исходном скрипте и скомпилировать.

    Авторы библиотек: Zeex, Y_Less.

    Статью подготовил: VVWVV

    Исключительно для pro-pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!

  2. 4 пользователя(ей) сказали cпасибо:
    DeimoS (21.03.2017) Guldan (21.03.2017) Web (21.03.2017) [ForD] (21.03.2017)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •