Skip to main content

A library for low-level abstract use to high-level.

Project description

🛠 pykasm

pykasm is a Python library for executing Assembly (ASM) code directly from Python scripts, allowing low-level integration with system calls and native libraries.

The goal is to provide a bridge between Python and Assembly, enabling developers to explore optimizations, manipulate memory, and execute machine instructions in a controlled manner.


📦 Installation

You can install via pip (after publication on PyPI):

pip install pykasm

💻 Examples

1️⃣ X86 Linux Example

##################################
#      X86 Linux Example         #
##################################

import pykasm
import ctypes

libc = ctypes.CDLL(None)
puts = libc.puts
puts.argtypes = [ctypes.c_char_p]
puts.restype = ctypes.c_int

msg_buf = ctypes.create_string_buffer(b"Hello, World")
msg_addr = ctypes.addressof(msg_buf)

puts_addr = ctypes.cast(puts, ctypes.c_void_p).value

asm_code = (
    f"mov rdi, {msg_addr};\n"
    f"mov rax, {puts_addr};\n"
    "call rax;\n"
    "ret"
)

pykasm.run_asm(asm_code)

2️⃣ X86 Windows Example

################################## 
#      X86 Windows Example       # 
##################################

import pykasm
import ctypes

msvcrt = ctypes.CDLL("msvcrt.dll")
puts = msvcrt.puts
puts.argtypes = [ctypes.c_char_p]
puts.restype = ctypes.c_int

kernel32 = ctypes.WinDLL("kernel32.dll")
ExitProcess = kernel32.ExitProcess
ExitProcess.argtypes = [ctypes.c_uint]
ExitProcess.restype = None

msg_buf = ctypes.create_string_buffer(b"Hello, World!\n")
msg_addr = ctypes.addressof(msg_buf)

puts_addr = ctypes.cast(puts, ctypes.c_void_p).value
exitprocess_addr = ctypes.cast(ExitProcess, ctypes.c_void_p).value

asm_code = (
    f"mov rcx, {msg_addr}; "
    f"mov rax, {puts_addr}; "
    "call rax; "
    "mov rcx, 0; "
    f"mov rax, {exitprocess_addr}; "
    "call rax; "
)

pykasm.run_asm(asm_code)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pykasm-0.0.5.tar.gz (18.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pykasm-0.0.5-py3-none-any.whl (18.5 MB view details)

Uploaded Python 3

File details

Details for the file pykasm-0.0.5.tar.gz.

File metadata

  • Download URL: pykasm-0.0.5.tar.gz
  • Upload date:
  • Size: 18.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for pykasm-0.0.5.tar.gz
Algorithm Hash digest
SHA256 ce3af73bd4e82f5b01a2e87bba418beaa9de1eb9fe3ace35db63db825d3de140
MD5 80efb76be38f85b0cb6497b721cf138e
BLAKE2b-256 ab10cd9b59de452269c520c9c2bc1cf9fbb2b72aba5cc97658f692b298a0a05a

See more details on using hashes here.

File details

Details for the file pykasm-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: pykasm-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 18.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for pykasm-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 982dc34ea340b8d34900d4ee96a66a1e1c2394cb7a39eeb9c7f6043c1d0541cb
MD5 86d2074da73a68a63dd54fd8a49d2c1c
BLAKE2b-256 a32aedc9be3c0d74e73bf4c374aeb9c3f074b4fea6375a42ea273076c84b1aae

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page