Skip to main content

PortableExecutable shellcodifier

Project description

PEOR

PortableExecutable shellcodifier.
This project is made to create an embedded shellcode out of PE files.

NOTE that PEOR isn't made to easily shellcodify Windows-executables,
As we won't resolve imports for you. For such utility, use pe2shellcode.

What can PERO do?

PEOR is the worst PE shellcodifier!
We do not resolve imports, nor optimize your PE-sections.
This project is intended to shellcodify PE files for embedded usage,
Thus not using allocations / resolving correct page protections for sections.
You can use PEOR to shellcodify windows applications, but PEOR won't resolve imports for you.
You can use it to shellcodify uefi applications, but we won't locate the EFI_SYSTEM_TABLE nor provide a image_handle to the entrypoint.
You can use PEOR to write a simple piece of code, that compiles into a PE-file, and make a shellcode out of it.

Advantages over normal pe-shellcodifiers:

  • you can write your embedded-code once and write it anywhere (windows usermode/kernel, linux, uefi, embedded-flash devices, ...)

Disadvanteges over normal pe-shellcodifiers:

  • we only support embedded-code, thus custom utils like implicit imports and exceptions are not supported by the shellcodifier and should be implemented by the user, within the shellcode scope
  • we can't trust the existence of allocation functions (like VirtualAlloc or ExAllocatePoolWithTag), thus the whole PE-file is resolved, highly increasing the shellcode size
  • we can't assume that PAGE-PROTECTION concept even exists, thus PEOR assumes that the whole shellcode is mapped to RWX memory

How to use PEOR?

Simply provide a PE-file whose code fits to your target platform (e.g. do not access CR3 register from usermode context) and has no exceptions / imports.
You may use exceptionless cpp-code using etl or rust-code with custom allocator.
Simp;y

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

peor-0.0.1.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

peor-0.0.1-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file peor-0.0.1.tar.gz.

File metadata

  • Download URL: peor-0.0.1.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.7

File hashes

Hashes for peor-0.0.1.tar.gz
Algorithm Hash digest
SHA256 751be900aa42efcff80cadf6afd393d36c720a6850ea34c7e57f3259cb1c6a2e
MD5 0ce3a9c8d69e538445c0970a8053e12c
BLAKE2b-256 768f3d701f52c5566e2a3fdc884cdb2228ba293f60554dd9adc615c481eb303d

See more details on using hashes here.

File details

Details for the file peor-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: peor-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.7

File hashes

Hashes for peor-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d9b8524d7f20d5241709f134f8420971cdeeb2582715b7596636d06613944aa9
MD5 d89089d4848d2940a794386b3714186b
BLAKE2b-256 5052568e0c3cf1fd900169fa5d775ed278fe566d674a45b28f0c6a98ca86c648

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