Skip to content

ayushch80/sinister

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

sinister πŸ’€

Advanced (Simple) Binary Obfuscation Toolkit

Sinister is an ELF binary obfuscator built to weaponize your executables against reverse engineering. It applies low-level transformations to make binaries harder to analyze, decompile, or understand β€” all while remaining executable.


βš™οΈ Features

βœ… Completed

  • Nothing yet... but soon! πŸ’€

πŸ”₯ In Active Development

  • Symbol Renaming (Initial Support)
    πŸ”Ή Supports renaming of:
    Β Β Β Β β€’ All STB_LOCAL and STB_GLOBAL symbols, except STT_GNU_IFUNC
    βœ”οΈ Renames safely within .symtab and .strtab
    ❌ Does not yet handle .dynsym, relocations, or dynamic resolution (dlsym, plugins)

  • ELF Locking (Experimental)
    πŸ”Ή Corrupts ELF internals to break analysis by tools like IDA, Ghidra, radare2, Binary Ninja
    βœ”οΈ Techniques include:
    Β Β Β Β β€’ .symtab/.strtab poisoning
    Β Β Β Β β€’ ELF header sabotage (EI_CLASS, EI_VERSION, etc.)


πŸš€ Upcoming

  • Anti-Debugging
  • Code Injection
  • Dynamic Buffer Allocation
  • Flow Flattening
  • Packing
  • String Obfuscation

πŸš€ Quickstart

πŸ“₯ Clone the Repo

git clone https://github.com/ayushch80/sinister.git
cd sinister

πŸ“¦ Install Dependencies

🦫 Golang (Required)

Make sure Go is installed (version β‰₯ 1.19 recommended):

go version

If not installed:

sudo apt install golang

πŸ› οΈ Build

go build .

πŸ§ͺ Run

./sinister

πŸ’‘ Example Usage

# Rename all safe local symbols
./sinister -inp ./binary -out ./binary_out -rename

# Lock binary to break RE tools
./sinister -inp ./binary -out ./binary_out -lock

πŸ“‚ Project Structure

Path Description
renaming/ Core logic for symbol renaming and symbol table manipulation
locking/ ELF locking routines to sabotage reverse engineering tools
utils/ Helper functions for logging, ELF utilities, and common routines
main.go Entry point for CLI β€” parses arguments and dispatches commands
go.mod / go.sum Go module definition and dependency tracking

βš–οΈ License

Sinister is licensed under the Apache License 2.0


πŸ›‘ Disclaimer: This tool is for educational and research purposes only. Do not use it on software you don’t own or without explicit permission.


Let me know if you want a cool badge, example binaries, or to automatically detect if locking was successful (via broken readelf).

About

Hides code with tricks πŸ’€

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages