AARCH64 elf 二进制文件中的空 .data 部分

逆向工程 二元分析 二进制 吉德拉 arm64
2021-06-17 20:30:00

我的问题是:为什么readelf -x .data bin.soghidra 不给我空数据?(0x00 重复段长度,直到最后一个元素 0xFFFFFFFF)。

ghidra/JEB 通过显示它已填充数据(只有前 8 个字节为空)来反驳我。我尝试过 python 工具lief、elfcat 等。

获取repro文件:

  1. wget https://repo1.maven.org/maven2/com/facebook/fresco/imagepipeline/2.0.0/imagepipeline-2.0.0.aar
  2. 解压 imagepipeline-2.0.0.aar "jni/arm64-v8a/libimagepipeline.so
  3. readelf -x .data jni/arm64-v8a/libimagepipeline.so
  4. 将精灵加载到 ghidra 中并确认 .data 部分(可以通过双击左侧(默认)手边“程序树”中的 .data 找到)填充了优秀的数据。
1个回答

.data充满了在加载时重定位信息。

来自IDA

LOAD:0000000000000598 08 20 01 00+                Elf64_Rela <0x12008, 0x403, 0x11EF> ; R_AARCH64_RELATIVE
LOAD:00000000000005B0 10 20 01 00+                Elf64_Rela <0x12010, 0x403, 0x1200> ; R_AARCH64_RELATIVE
LOAD:00000000000005C8 18 20 01 00+                Elf64_Rela <0x12018, 0x403, 0xC48> ; R_AARCH64_RELATIVE
LOAD:00000000000005E0 20 20 01 00+                Elf64_Rela <0x12020, 0x403, 0x127B> ; R_AARCH64_RELATIVE
LOAD:00000000000005F8 28 20 01 00+                Elf64_Rela <0x12028, 0x403, 0x128B> ; R_AARCH64_RELATIVE
LOAD:0000000000000610 30 20 01 00+                Elf64_Rela <0x12030, 0x403, 0xEE8> ; R_AARCH64_RELATIVE
LOAD:0000000000000628 38 20 01 00+                Elf64_Rela <0x12038, 0x403, 0x12F1> ; R_AARCH64_RELATIVE
LOAD:0000000000000640 40 20 01 00+                Elf64_Rela <0x12040, 0x403, 0x1300> ; R_AARCH64_RELATIVE
LOAD:0000000000000658 48 20 01 00+                Elf64_Rela <0x12048, 0x403, 0x1000> ; R_AARCH64_RELATIVE
LOAD:0000000000000670 50 20 01 00+                Elf64_Rela <0x12050, 0x403, 0x1305> ; R_AARCH64_RELATIVE
LOAD:0000000000000688 58 20 01 00+                Elf64_Rela <0x12058, 0x403, 0x1310> ; R_AARCH64_RELATIVE
LOAD:00000000000006A0 60 20 01 00+                Elf64_Rela <0x12060, 0x403, 0x104C> ; R_AARCH64_RELATIVE
LOAD:00000000000006B8 68 20 01 00+                Elf64_Rela <0x12068, 0x403, 0x1315> ; R_AARCH64_RELATIVE
LOAD:00000000000006D0 70 20 01 00+                Elf64_Rela <0x12070, 0x403, 0x132B> ; R_AARCH64_RELATIVE
LOAD:00000000000006E8 78 20 01 00+                Elf64_Rela <0x12078, 0x403, 0x1054> ; R_AARCH64_RELATIVE
LOAD:0000000000000700 80 20 01 00+                Elf64_Rela <0x12080, 0x403, 0x1334> ; R_AARCH64_RELATIVE
LOAD:0000000000000718 88 20 01 00+                Elf64_Rela <0x12088, 0x403, 0x132B> ; R_AARCH64_RELATIVE
LOAD:0000000000000730 90 20 01 00+                Elf64_Rela <0x12090, 0x403, 0x1074> ; R_AARCH64_RELATIVE
LOAD:0000000000000748 98 20 01 00+                Elf64_Rela <0x12098, 0x403, 0x134C> ; R_AARCH64_RELATIVE
LOAD:0000000000000760 A0 20 01 00+                Elf64_Rela <0x120A0, 0x403, 0x1359> ; R_AARCH64_RELATIVE
LOAD:0000000000000778 A8 20 01 00+                Elf64_Rela <0x120A8, 0x403, 0x1094> ; R_AARCH64_RELATIVE
LOAD:0000000000000790 B0 20 01 00+                Elf64_Rela <0x120B0, 0x403, 0x1360> ; R_AARCH64_RELATIVE
LOAD:00000000000007A8 B8 20 01 00+                Elf64_Rela <0x120B8, 0x403, 0x136F> ; R_AARCH64_RELATIVE
LOAD:00000000000007C0 C0 20 01 00+                Elf64_Rela <0x120C0, 0x403, 0x10A8> ; R_AARCH64_RELATIVE

您可以看到每个条目都与您在该.data部分中看到的数据相对应