如何打開文件並將信息複製到另一個文件中。我只需要複製幻數和版本。 void read_header(FILE * file,File * file2);如何在C中讀取ELF標題?
回答
使用fopen()
FILE *fp = fopen("youe_elf.bin","rb");
現在使用fread()
從文件中讀取數據塊打開您的ELF文件。並與format of ELF file地圖並獲得頭字節,並將它們在新文件中寫入再次使用fopen()
您可以檢查ELF頭的結構如何here. 然後您可以創建一個結構來保存你的數據,僅僅是這樣看的:
typedef struct {
uint8 e_ident[16];
uint16 e_type;
uint16 e_machine;
uint32 e_version;
uint32 e_entry;
uint32 e_phoff;
uint32 e_shoff;
uint32 e_flags;
uint16 e_ehsize;
uint16 e_phentsize;
uint16 e_phnum;
uint16 e_shentsize;
uint16 e_shnum;
uint16 e_shstrndx;
} Elf32Hdr;
void read_elf_header(const char* elfFile, const char* outputFile) {
struct Elf32Hdr header;
FILE* file = fopen(elfFile, "rb");
if(file) {
// read the header
fread(&header, 1, sizeof(header), file);
// check so its really an elf file
if(header.e_ident[0] == 0x7f &&
header.e_ident[1] == 'E' &&
header.e_ident[2] == 'L' &&
header.e_ident[3] == 'F') {
// write the header to the output file
FILE* fout = fopen(outputFile, "wb");
if(fout) {
fwrite(&header, 1, sizeof(header), fout);
fclose(fout);
}
}
// finally close the file
fclose(file);
}
}
根據平臺的不同,已經定義此結構的頭文件可能可用。例如,如果您正在運行linux,則可以嘗試包含elf.h
。
注意:您的平臺*可能*已經在頭文件中定義了這個結構,所以您不需要複製它。但我不記得它叫什麼或哪個標題。 – immibis
如果你想要裸機解析,請按照Cyclone的提議或者例如看看其他人這樣做,像Qt http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/plugin/qelfparser_p.cpp。
但是,有幾個庫具有更高級別的API。以https://wiki.freebsd.org/LibElf爲起點。
- 包括elf.h中
- 開放和統計ELF文件
- 地圖文件
- 類型轉換映射地址Elf64_Ehdr和閱讀
你不需要打開文件來調用'stat'就可以了。 –
- 1. 如何在C#中讀取asf標題?
- 2. 在運行時讀取加載共享對象的ELF標題
- 3. 在C中讀取TIFF文件標題#
- 4. 閱讀ELF頭用C
- 5. 在C中讀取標籤
- 6. 如何讀取c#中的excel文件跳過列標題?
- 7. Psycopg2「無效的ELF標題」
- 8. 正確的方法來讀取C中的ELF文件
- 9. 如何使用body-parser在node.js中獲取讀取標題?
- 10. 如何讀取Python中ELF文件的動態部分
- 11. 使用Objective-C讀取SWF標題
- 12. 如何從RestTemplate讀取響應標題?
- 13. 如何用javascript讀取標題數據
- 14. 如何從QNetworkReply讀取標題
- 15. 如何在R中讀取標題中的元素?
- 16. C++讀取()問題
- 17. 在rails中讀取標題數據
- 18. 在Excel文件中讀取列標題
- 19. 在C++中讀取RAW圖像或做RAW圖像有標題?
- 20. 如何在Linux ELF
- 21. 在c中讀取dicom文件標籤#
- 22. 如何在Angular 2中讀取收到的標題?
- 23. 如何在Ruby中讀取CSV時跳過標題行?
- 24. 如何在Python中讀取csv文件時定義列標題
- 25. 如何在matlab中讀取多個dicom文件的標題?
- 26. 如何從pynotify.Notification中讀取標題,文本和圖標名稱?
- 27. 如何在xml中讀取Dc:creator標籤?
- 28. 如何在Android中讀取NFC標籤?
- 29. 如何在Android中讀取Nfc標籤?
- 30. 如何讀取C++
你可以考慮使用ELF庫 - 'libelf'。 –
你到底想要達到什麼目標?將所有信息複製到另一個文件是使用'fread'和'fwrite'完成的 - 只要記住以二進制模式打開即可。 ELF文件與其他二進制文件沒有區別。 – skyking
你不允許改變你的問題的含義。如果您有新問題,應將其作爲新問題發佈,但請務必首先檢查是否已有問題。 –