#include "ThirdParty/elfio/elfio.hpp" #include "dart/dart.h" #include int main(int argc, char** argv) { std::string elfPath = "/home/selim/Downloads/libapp.so"; //argv[1]; std::cout << "Analyzing file: " << elfPath << std::endl; ELFIO::elfio reader; if(!reader.load(elfPath)) { std::cout << "error loading elf: " << elfPath << std::endl; return 0; } const void* data = nullptr; const void* text = nullptr; ELFIO::Elf_Half sec_num = reader.sections.size(); std::cout << "Number of sections: " << sec_num << std::endl; for ( int i = 0; i < sec_num; ++i ) { const ELFIO::section* psec = reader.sections[i]; std::cout << " [" << i << "] " << psec->get_name() << "\t" << psec->get_size() << std::endl; if(psec->get_name() == ".rodata") { data = psec->get_data(); } if(psec->get_name() == ".text") { text = psec->get_data(); } } auto header = reinterpret_cast(data); if(header->magic != DART_MAGIC) { std::cout << "Wrong magic!!!!" << std::endl; } auto sizer = __builtin_bswap32(header->size); return 0; }