Pangolin
Inject ELF into remote process
Install / Use
/learn @Hackerl/PangolinREADME
About The Project
Pangolin is a program that allows to inject an ELF file into a remote process, both static & dynamically linked programs can be targeted.
Built With
<!-- GETTING STARTED -->Getting Started
Prerequisites
- CMake
curl https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-linux-x86_64.sh | sh
Installation
- Clone the repo
git clone https://github.com/Hackerl/pangolin.git - Update submodule
git submodule update --init --recursive - Build shellcode
make -C shellcode - Build injector
mkdir -p build && cd build && cmake .. && make
Usage
usage: pangolin [options] pid(int) ... inject argv ...
positional:
pid process id(int)
optional:
-?, --help print help message
-d, --daemon daemon mode
-e, --environs environment variables(string[])
Start target:
./target
Inject target:
./pangolin -e "PANGOLIN=1" $(pidof target) $(pwd)/inject 1 "2 3"
If you want to make some threads reside in remote process, please specify daemon mode, pangolin will allocate a persistent memory as stack. In addition, after daemon thread created, call exit syscall in main thread to end injection.
Roadmap
See the open issues for a list of proposed features (and known issues).
<!-- CONTRIBUTING -->Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the beerware License.
<!-- CONTACT -->Contact
Hackerl - @Hackerl
Project Link: https://github.com/Hackerl/pangolin
<!-- ACKNOWLEDGEMENTS -->