Add additional ELF header fields to rz-bin output (#372)

This commit is contained in:
Briand Djoko 2021-01-19 02:51:49 -05:00 committed by pancake
parent 4b6abb88ee
commit f57677b554
5 changed files with 81 additions and 1 deletions

View File

@ -11,6 +11,13 @@ static void headers32(RBinFile *bf) {
p ("0x00000018 Entrypoint 0x%08x\n", r_buf_read_le32_at (bf->buf, 0x18));
p ("0x0000001c PhOff 0x%08x\n", r_buf_read_le32_at (bf->buf, 0x1c));
p ("0x00000020 ShOff 0x%08x\n", r_buf_read_le32_at (bf->buf, 0x20));
p ("0x00000024 Flags 0x%08x\n", r_buf_read_le32_at (bf->buf, 0x24));
p ("0x00000028 EhSize %d\n", r_buf_read_le16_at (bf->buf, 0x28));
p ("0x0000002a PhentSize %d\n", r_buf_read_le16_at (bf->buf, 0x2a));
p ("0x0000002c PhNum %d\n", r_buf_read_le16_at (bf->buf, 0x2c));
p ("0x0000002e ShentSize %d\n", r_buf_read_le16_at (bf->buf, 0x2e));
p ("0x00000030 ShNum %d\n", r_buf_read_le16_at (bf->buf, 0x30));
p ("0x00000032 ShrStrndx %d\n", r_buf_read_le16_at (bf->buf, 0x32));
}
static bool check_buffer(RBuffer *buf) {

View File

@ -1184,13 +1184,30 @@ static RList* fields(RBinFile *bf) {
ROW ("PhOff", 4, r_buf_read_le32_at (bf->buf, addr), "x");
addr += 0x4;
ROW ("ShOff", 4, r_buf_read_le32_at (bf->buf, addr), "x");
addr += 0x4;
} else {
ROW ("Entry point", 8, r_buf_read_le64_at (bf->buf, addr), "x");
addr += 0x8;
ROW ("PhOff", 8, r_buf_read_le64_at (bf->buf, addr), "x");
addr += 0x8;
ROW ("ShOff", 8, r_buf_read_le64_at (bf->buf, addr), "x");
addr += 0x8;
}
ROW ("Flags", 4, r_buf_read_le32_at (bf->buf, addr), "x");
addr += 0x4;
ROW ("EhSize", 2, r_buf_read_le16_at (bf->buf, addr), "x");
addr += 0x2;
ROW ("PhentSize", 2, r_buf_read_le16_at (bf->buf, addr), "x");
addr += 0x2;
ROW ("PhNum", 2, r_buf_read_le16_at (bf->buf, addr), "x");
addr += 0x2;
ROW ("ShentSize", 2, r_buf_read_le16_at (bf->buf, addr), "x");
addr += 0x2;
ROW ("ShNum", 2, r_buf_read_le16_at (bf->buf, addr), "x");
addr += 0x2;
ROW ("ShrStrndx", 2, r_buf_read_le16_at (bf->buf, addr), "x");
return ret;
}

View File

@ -33,6 +33,13 @@ static void headers64(RBinFile *bf) {
p ("0x00000018 Entrypoint 0x%08"PFMT64x"\n", r_buf_read_le64_at (bf->buf, 0x18));
p ("0x00000020 PhOff 0x%08"PFMT64x"\n", r_buf_read_le64_at (bf->buf, 0x20));
p ("0x00000028 ShOff 0x%08"PFMT64x"\n", r_buf_read_le64_at (bf->buf, 0x28));
p ("0x00000030 Flags 0x%08x\n", r_buf_read_le32_at (bf->buf, 0x30));
p ("0x00000034 EhSize %d\n", r_buf_read_le16_at (bf->buf, 0x34));
p ("0x00000036 PhentSize %d\n", r_buf_read_le16_at (bf->buf, 0x36));
p ("0x00000038 PhNum %d\n", r_buf_read_le16_at (bf->buf, 0x38));
p ("0x0000003a ShentSize %d\n", r_buf_read_le16_at (bf->buf, 0x3a));
p ("0x0000003c ShNum %d\n", r_buf_read_le16_at (bf->buf, 0x3c));
p ("0x0000003e ShrStrndx %d\n", r_buf_read_le16_at (bf->buf, 0x3e));
}
static RBuffer* create(RBin* bin, const ut8 *code, int codelen, const ut8 *data, int datalen, RBinArchOptions *opt) {

View File

@ -98,8 +98,15 @@ EXPECT=<<EOF
0x00000018 0x00000018 Entry point; 0x08048300
0x0000001c 0x0000001c PhOff; 0x00000034
0x00000020 0x00000020 ShOff; 0x000007cc
0x00000024 0x00000024 Flags; 0x00000000
0x00000028 0x00000028 EhSize; 0x00000034
0x0000002a 0x0000002a PhentSize; 0x00000020
0x0000002c 0x0000002c PhNum; 0x00000008
0x0000002e 0x0000002e ShentSize; 0x00000028
0x00000030 0x00000030 ShNum; 0x0000001e
0x00000032 0x00000032 ShrStrndx; 0x0000001b
7 fields
14 fields
EOF
RUN
@ -136,6 +143,34 @@ pf.PhOff x
CCu MHgwMDAwMDdjYw== @ 0x20
Cf 4 x @ 0x20
pf.ShOff x
"f header.Flags 1 0x00000024"
CCu MHgwMDAwMDAwMA== @ 0x24
Cf 4 x @ 0x24
pf.Flags x
"f header.EhSize 1 0x00000028"
CCu MHgwMDAwMDAzNA== @ 0x28
Cf 2 x @ 0x28
pf.EhSize x
"f header.PhentSize 1 0x0000002a"
CCu MHgwMDAwMDAyMA== @ 0x2a
Cf 2 x @ 0x2a
pf.PhentSize x
"f header.PhNum 1 0x0000002c"
CCu MHgwMDAwMDAwOA== @ 0x2c
Cf 2 x @ 0x2c
pf.PhNum x
"f header.ShentSize 1 0x0000002e"
CCu MHgwMDAwMDAyOA== @ 0x2e
Cf 2 x @ 0x2e
pf.ShentSize x
"f header.ShNum 1 0x00000030"
CCu MHgwMDAwMDAxZQ== @ 0x30
Cf 2 x @ 0x30
pf.ShNum x
"f header.ShrStrndx 1 0x00000032"
CCu MHgwMDAwMDAxYg== @ 0x32
Cf 2 x @ 0x32
pf.ShrStrndx x
EOF
RUN
@ -3050,6 +3085,13 @@ EXPECT=<<EOF
0x00000018 Entrypoint 0x00400410
0x00000020 PhOff 0x00000040
0x00000028 ShOff 0x00000a30
0x00000030 Flags 0x00000000
0x00000034 EhSize 64
0x00000036 PhentSize 56
0x00000038 PhNum 8
0x0000003a ShentSize 64
0x0000003c ShNum 30
0x0000003e ShrStrndx 27
EOF
RUN

View File

@ -653,6 +653,13 @@ va true
0x00000018 Entrypoint 0x08048300
0x0000001c PhOff 0x00000034
0x00000020 ShOff 0x000007cc
0x00000024 Flags 0x00000000
0x00000028 EhSize 52
0x0000002a PhentSize 32
0x0000002c PhNum 8
0x0000002e ShentSize 40
0x00000030 ShNum 30
0x00000032 ShrStrndx 27
[Linked libraries]
libc.so.6