last changes

This commit is contained in:
Selim Mustafaev 2022-11-27 12:49:38 +03:00
parent 328703ac5f
commit 9cc38354d7
2 changed files with 24 additions and 18 deletions

View File

@ -11,6 +11,12 @@
const uint32_t DART_MAGIC = 0xDCDCF5F5; const uint32_t DART_MAGIC = 0xDCDCF5F5;
const char* vmInstructions = "_kDartVmSnapshotInstructions";
const char* vmData = "_kDartVmSnapshotData";
const char* isolateInstructions = "_kDartIsolateSnapshotInstructions";
const char* isolateData = "_kDartIsolateSnapshotData";
const char* buildId = "_kDartSnapshotBuildId";
enum SnapshotKind: uint64_t { enum SnapshotKind: uint64_t {
FULL, FULL,
FULL_JIT, FULL_JIT,

View File

@ -6,6 +6,18 @@
#include <cstddef> #include <cstddef>
#include <elf.h> #include <elf.h>
void dumpElf(const ELFIO::elfio& reader) {
ELFIO::dump::header( std::cout, reader );
ELFIO::dump::section_headers( std::cout, reader );
ELFIO::dump::segment_headers( std::cout, reader );
ELFIO::dump::symbol_tables( std::cout, reader );
ELFIO::dump::notes( std::cout, reader );
ELFIO::dump::modinfo( std::cout, reader );
ELFIO::dump::dynamic_tags( std::cout, reader );
ELFIO::dump::section_datas( std::cout, reader );
ELFIO::dump::segment_datas( std::cout, reader );
}
int main(int argc, char** argv) { int main(int argc, char** argv) {
std::string elfPath = "/home/selim/Загрузки/libapp.so"; //argv[1]; std::string elfPath = "/home/selim/Загрузки/libapp.so"; //argv[1];
std::cout << "Analyzing file: " << elfPath << std::endl; std::cout << "Analyzing file: " << elfPath << std::endl;
@ -16,30 +28,18 @@ int main(int argc, char** argv) {
return 0; return 0;
} }
dumpElf(reader);
const std::byte* data = nullptr; const std::byte* data = nullptr;
const std::byte* text = nullptr; const std::byte* text = nullptr;
for(auto section: reader.sections) {
}
ELFIO::Elf_Half sec_num = reader.sections.size(); ELFIO::Elf_Half sec_num = reader.sections.size();
ELFIO::dump::header( std::cout, reader );
ELFIO::dump::section_headers( std::cout, reader );
ELFIO::dump::segment_headers( std::cout, reader );
ELFIO::dump::symbol_tables( std::cout, reader );
ELFIO::dump::notes( std::cout, reader );
ELFIO::dump::modinfo( std::cout, reader );
ELFIO::dump::dynamic_tags( std::cout, reader );
ELFIO::dump::section_datas( std::cout, reader );
ELFIO::dump::segment_datas( std::cout, reader );
std::cout << "Number of sections: " << sec_num << std::endl;
for ( int i = 0; i < sec_num; ++i ) { for ( int i = 0; i < sec_num; ++i ) {
ELFIO::section* psec = reader.sections[i]; ELFIO::section* psec = reader.sections[i];
std::cout << " [" << i << "] "
<< psec->get_name()
<< "\t"
<< psec->get_size()
<< ", " << psec->get_type()
<< std::endl;
if(psec->get_name() == ".rodata") { if(psec->get_name() == ".rodata") {
data = reinterpret_cast<const std::byte*>(psec->get_data()); data = reinterpret_cast<const std::byte*>(psec->get_data());