Web application for visualization of the ELF files data structure (Sections, Symbols)
Sample files can be downloaded directly from the website (4 sample JSON files).
Two visualization charts was used:
- Icicles with interaction (to zoom sections, w/o animation)
- Sunburst without interaction
React.js, D3.js, Bootstrap 3.3.7, FontAwesome, Jest, Enzyme, Webpack, Perl
- React is used as the rendering engine
- D3 - visualization kernel
- Bootstrap - a quick way to use responsive ui
- Jest, Enzyme - testing; Istanbul (comes with Jest) - code coverage
- Webpack - dev server and build system
- Perl - to create convertor for
readelfoutput tojsonformat
To install dependencies:
yarn
or
npm installyarn build:prod
or
npm run build:prodAs a result, application will be built into dist/ folder.
Open index.html in the browser.
To run unit tests:
yarn test
or
npm testTo create tests coverage report:
yarn test:coverage
or
npm test:coverageReport will be generated in the folder: coverage/lcov-report/
Generated code coverage report available at http://elfviz.conversiontools.io/lcov-report/
Code quality check was not included to the tests, because ESLint is integrated into IDE that I use (Visual Studio Code). ESLint can be added as an additional step in the build process.
yarn start
or
npm startTo generate JSON file for any ELF binary file, use readelf linux command and readelf output parser which was created for this task: tools/parse-readelf.pl
readelf -W -S -s "BinaryFile.o" > ./elf.txt
perl parse-readelf.plAs a result elf.json will be created, which could be uploaded to the website for visualizing the data.
Dmitry Fedotov
August 2017