This repository hosts the tool developed for the FIN paper, designed to construct a ground truth inlining dataset. The tool analyzes and compares the debug information of two ELF binaries to identify function calls from the first binary that have been inlined into the second binary.
Before you begin, ensure that the following prerequisites are met:
- python
- poetry
pipx
allows you to install and run Python applications in isolated environments.
To install pipx
, run the following command:
python -m pip install --user pipx
python -m pipx ensurepath
Once installed, you may need to restart your shell or terminal for the pipx
command to be available.
Once pipx
is installed, use it to install Poetry:
pipx install poetry
This ensures that Poetry is installed in an isolated environment and is easily accessible from your terminal.
After installing Poetry, follow these steps to set up the project:
- Clone the repository:
git clone https://github.com/McGill-DMaS/FIN.git cd FIN/
- Setup the project:
python setup.py
To detect function inlining, you need two ELF files of the same program, but compiled with different optimization levels or compilers for comparison. Then, you can then run the following command, where -o
specifies the path to the original binary file (from which function calls are extracted), and -t
specifies the target binary file (in which inlined function calls are identified).
python fin.py -o <path-to-original-binary> -t <path-to-target-binary>
The software is provided as-is with no warranty or support. We do not take any responsibility for any damage, loss of income, or any problems you might experience from using our software. If you have questions, you are encouraged to consult the paper and the source code. If you find our software useful, please cite our paper above.
If you use this code, please cite the following paper:
@article{yourlastname2024,
title={Your Paper Title},
author={YourLastName, FirstName and CoAuthorLastName, CoAuthorFirstName},
journal={Journal Name},
year={2024},
volume={XX},
number={YY},
pages={ZZZ-AAA},
doi={Your DOI},
url={https://yourpaperlink}
}