Demonstrate addition of a new section to existing ELF file

This commit is contained in:
Serge Lamikhov-Center 2020-10-06 09:51:14 +03:00
parent d155588188
commit 85c937eba9
4 changed files with 36 additions and 0 deletions

View File

@ -3,6 +3,7 @@
{
"name": "Linux",
"includePath": [
"${workspaceFolder}",
"${workspaceFolder}/**"
],
"defines": [],

View File

@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.12.4)
project(elfio)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(examples/add_section)
add_subdirectory(examples/anonymizer)
add_subdirectory(examples/elfdump)
add_subdirectory(examples/tutorial)

View File

@ -0,0 +1,3 @@
add_executable(add_section add_section.cpp)
include_directories(SYSTEM ${CMAKE_SOURCE_DIR})

View File

@ -0,0 +1,31 @@
#include <iostream>
#include <elfio/elfio.hpp>
using namespace ELFIO;
int main( int argc, char** argv )
{
if ( argc != 2 ) {
std::cout << "Usage: add_section <elf_file>" << std::endl;
return 1;
}
// Create an elfio reader
elfio reader;
// Load ELF data
if ( !reader.load( argv[1] ) ) {
std::cout << "Can't find or process ELF file " << argv[1] << std::endl;
return 2;
}
// Create additional section at the end of the file
section* note_sec = reader.sections.add( ".note.ELFIO" );
note_sec->set_type( SHT_NOTE );
note_section_accessor note_writer( reader, note_sec );
note_writer.add_note( 0x01, "Created by ELFIO", "My data", 8 );
reader.save( "./result.elf" );
return 0;
}