Skip to content

pawn-lang/amx_assembly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

66ca1f1 · Nov 8, 2023
Jan 23, 2023
Jan 24, 2023
Oct 25, 2018
Jan 6, 2018
Nov 6, 2023
Nov 5, 2023
Nov 8, 2023
Nov 6, 2023
Nov 8, 2023
Oct 15, 2023
Sep 12, 2022
Nov 8, 2023
Nov 6, 2023
Jul 18, 2023
Jul 20, 2023
Nov 7, 2022
Nov 6, 2023
Oct 28, 2022
Nov 7, 2022
Jun 8, 2022
Nov 7, 2022
Nov 1, 2023
Nov 7, 2022
Jan 23, 2023
Jul 18, 2023
Nov 7, 2022
Jul 18, 2023
Nov 7, 2022
Jul 18, 2023
Nov 7, 2022
Nov 6, 2023
Jul 18, 2023
Nov 6, 2023
Jan 6, 2018
Jul 18, 2023
Nov 7, 2022
Jul 18, 2023
Jan 24, 2023
Nov 7, 2022
Jul 18, 2023
Jul 18, 2023

Repository files navigation

Overview

  • addressof.inc - Provide addressof to get the compiled address of a function, plus runtime compilation to a simple constant, and a lightweight version with no disasm dependency.
  • amx.inc - Read/write contents of the AMX structure (AMX struct in C code).
  • amx_base.inc - Get base address of the AMX in memory (amx->base).
  • amx_header.inc - Read contents of the AMX header (AMX_HEADER) and query header tables such as publics, natives, tags, etc.
  • amx_memory.inc - Read/write contents of variables using their AMX address (kind of like pointers in C).
  • asm.inc - @emit() for generating new assembly at runtime, similar to what #emit and __emit are for compile-time.
  • codescan.inc - Find patterns in bytecode.
  • disasm.inc - Example of how to disassemble AMX bytecode (i.e. self-disassembly).
  • dynamic_call.inc - Call any function by address or index. Can be very powerful in combination with amx_header.inc.
  • frame_info.inc - Get information about call frames from the stack.
  • heap_alloc.inc - Allocate memory on the AMX heap.
  • jit.inc - Check if running under the JIT plugin.
  • opcode.inc - List of AMX opcodes and utility functions for (un-)relocating opcodes on Linux.
  • os.inc - Detect operating system (Windows vs Linux).
  • phys_memory.inc - Read/write memory of the host process (outside of AMX data).
  • profiler.inc - Simple profiler written purely in Pawn. It can measure execution time of public functions.
  • shellcode.inc - Execute arbitrary native code (doesn't work on Linux).
  • stack_dump.inc - Print stack contents to the console.
  • stack_trace.inc - Print stack trace.
  • windows/import_table.inc - Read the PE import table of the host process.
  • windows/ShellExecute.inc - How to use shellcode and import_table to call a Win32 API function (in this case ShellExecuteA).

Installation

Simply install to your project:

sampctl package install amx_assembly

Include in your code and begin using the library:

#include <amx_assembly\include_name_here>

Usage

There are a few example scripts in the test directory that show how to use some of these includes.