| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Implementation for ASIA CCS'25 paper: An Empirical Study of C Decompilers: Performance Metrics and Error Taxonomy
This repository has the following structure:
./install.sh
pip -m venv venv source venv/bin/activate
pip install -r requirements.txt
Ida Pro: To test Ida Pro decompiler, if you have Ida Pro 7.6, place the installation folder of Ida Pro under decompilers/. Then, make sure Ida Pro can run properly.
Ghidra: To test Ghidra decompiler, follow the installation instructions from https://ghidra-sre.org/InstallationGuide.html and place the installation folder of Ghidra under decompilers/.
Angr: After installing the python requirements, you will have Angr decompiler ready to test. No extra steps needed.
Since Ida Pro requires licence and Ghidra requires installation from the scratch, below below examples are given using Angr. Angr decompiler will be available with the installation of required Python modules. If you place the installation folders of Ida Pro and Ghidra under decompilers/, you can test those two decompilers by just modifying the --decompiler parameter in the commands below.
Example analysis for GCC -O0 binaries
python3 src/decompile.py -n jas_iccprof_copy --decompiler Angr Bins/gcc_O0/Set1#jasper-1.900.16#jas_icc.o#gcc#O0#.o
Output: Recompilation error
python3 src/decompile.py -n coff_read_word --decompiler Angr Bins/gcc_O0/Set1#binutils-2.29#pei-i386.o#gcc#O0#.o
Output: Functions diverged
python3 src/decompile.py -n smiensure_buffer_stack --decompiler Angr Bins/gcc_O0/Set1#libsmi-0.4.8#scanner-smi.o#gcc#O0#.o
Output: Functions are equivalent
Example analysis for Clang -O0 binaries
python3 src/decompile.py -n jas_iccprof_copy --decompiler Angr Bins/clang_O0/Set1#jasper-1.900.16#jas_icc.o#clang#O0#.o
Output: Recompilation error
python3 src/decompile.py -n coff_read_word --decompiler Angr Bins/clang_O0/Set1#binutils-2.29#pei-i386.o#clang#O0#.o
Output: Functions diverged
python3 src/decompile.py -n smiensure_buffer_stack --decompiler Angr Bins/clang_O0/Set1#libsmi-0.4.8#scanner-smi.o#clang#O0#.o
Output: Functions are equivalent
The out folder stores all the output files from analysis, including files (decompilation output text file, binary object file, variable definitions text file, etc.) produced during analysis, the data collected during analysis, log output of our tool from analysis, and recompilation errors. Below, we share the folder structure for out:
| Back | FazBrowse Home | New Git URL |