1. 通过maps文件获取进程的文件头和段表
想要实现这一功能,根据书上所写,首先要找到代码段的首地址BaseVaddr
,然后文件头就从这个地址开始,用ptrace
从这个地址读一个sizeof(Elf64_Ehdr)
大小的数据出来就可以了
但是,我在实现的时候遇到的一个问题,读出来的结果压根不对,其结果如下所示
$ sudo ./reconstruct 12127
BaseVaddr: 0x401000
ELF header:
magic: f3 f 1e fa ff ff ff ff 48 8b 5 e9 ff ff ff ff
Type: c085
Machine: 274
Version: 0
Entry point address: c308c4
Start of Program header: 2fe235ff
Size of program header: 65535 (bytes)
Number of Program headers: 61952
Size of section header: 57833 (bytes)
N