Drow : Injects Code Into ELF Executables Post-Build

Drow is a command-line utility that is used to inject code and hook the entrypoint of ELF executables (post-build). It takes unmodified ELF executables as input and exports a modified ELF containing an embedded user-supplied payload that executes at runtime.

  • Drow takes the following steps to create the new patched ELF:
    • Map in the umodified target ELF executable and the user-supplied payload, a position-independent blob
    • Locate the first executable segment by parsing program headers
    • Locate the last section in the executable segment by parsing section headers
    • Expand the last section (in the segment) section header’s sh_size and program header’s p_memsz/p_filesz by the size of the user-supplied payload
    • Fixup section headers’ sh_offset‘s and program headers’ p_offset‘s (move down sections and segments to make room for the payload and a small “stager stub”)
    • Fix offsets in the ELF header (e_shoff, e_phoff, etc..)
    • Modify the ELF header e_entry (ELF entrypoint offset) to point to the injected code
    • Create a new ELF containing the injected code and modified ELF headers

In addition to injecting the user-supplied payload, drow injects a small code stub that is prepended to the beginning of the payload. This stub is designed to call into the payload. If the payload is written to return to the caller, after the payload returns the stager then tailcalls into _start, restoring execution so the program can run as intended.

Building

Install gcc and scons. Then run scons from the root of the directory.

Other Information

In addition to building drow, this project also builds a Linux x86-64 payload named rappers_delight.bin that simply prints to stdout. This can be used for testing. Currently, drow only works with ELF64 files targetting x86-64.

Other Work

There has been a lot of open source work done in this domain. I encourage you to also check out the following projects and associated publications:

R K

Recent Posts

Bad Py — A Simple Bad Tool : A Seemingly Straightforward Tool That Embodies

A tool crafted with simplicity in mind but harboring its own set of flaws. Despite…

13 hours ago

CyberSentry – Automated Web Vulnerability Scanner

CyberSentry is a robust automated scanning tool designed for web applications. It helps security professionals, ethical…

13 hours ago

DARKARMY – A Comprehensive Overview Of Tools For Cybersecurity Professionals

Delve into the world of DARKARMY, a potent arsenal of cybersecurity tools designed to empower…

13 hours ago

League Of Legends Cheat – Enhancing Your Gameplay With Advanced Features

Evade (Evasion) - this feature helps you to evade spells of enemies directed at you…

13 hours ago

Cazador – A Comprehensive Toolkit For Bug Hunters

Step into the world of bug hunting with Cazador, a powerful toolkit designed to equip…

13 hours ago

Download Among Us MOD MENU 2024 For PC – Unleash Chaos With Enhanced Features!

Prepare to take your Among Us gaming experience to the next level with the latest…

1 day ago