:fire: xDL is an enhanced implementation of the Android DL series functions.
xdl_dsym()
.This bug could cause xdl_dsym()
to return the wrong address when .symtab
contains symbol names with the same prefix. For example: querying the address of abcdef
, but incorrectly returning the address of abcde
.
This bug only exists in 2.1.0
version.
xdl_dsym()
符号名匹配错误的 bug。当 .symtab
中含有相同前缀的符号名时,这个 bug 可能会导致 xdl_dsym()
返回错误的地址。比如:查询 abcdef
的地址,但是错误的返回了 abcde
的地址。
这个 bug 只存在于 2.1.0
版本中。
xdl_iterate_phdr()
on Android 4.x.The first LOAD segment of ELF may be read-only (use the linker option --rosegment
), and the /proc/self/maps
at this time may look like this:
75b8d000-75b9f000 r--p 00000000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
75b9f000-75bde000 r-xp 00012000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
75bde000-75be1000 r--p 00051000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
75be1000-75be2000 rw-p 00054000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
In Android 4.x, xdl_iterate_phdr()
in previous versions of xDL will not recognize the above libquick.so
.
xdl_iterate_phdr()
在 Android 4.x 中的兼容性。ELF 的第一个 LOAD segment 可能是只读的(用链接器选项 --rosegment
),此时的 /proc/self/maps
大概是这样的:
75b8d000-75b9f000 r--p 00000000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
75b9f000-75bde000 r-xp 00012000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
75bde000-75be1000 r--p 00051000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
75be1000-75be2000 rw-p 00054000 b3:1c 89884 /data/app-lib/io.hexhacking.xdl.sample-2/libquick.so
在 Android 4.x 中,此前版本 xDL 中的 xdl_iterate_phdr()
会无法识别到上面的 libquick.so
。
xdl_info
structure renamed to xdl_info_t
.xdl_info()
. xdl_info()
obtains information about the dynamically loaded object referred to by handle
(obtained by an earlier call to xdl_open
).xdl_info
结构体更名为 xdl_info_t
。xdl_info()
。xdl_info()
通过 handle
(xdl_open
的返回值)来获取动态加载对象的信息。.symtab
in .gnu_debugdata
.xdl_open()
and xdl_addr()
in Android 5.x..gnu_debugdata
中的 .symtab
时的 SIGBUS 崩溃。xdl_open()
和 xdl_addr()
的性能。Dl_info
with custom xdl_info
.XDL_WITH_LINKER
from xdl_iterate_phdr()
flags options. Now xdl_iterate_phdr()
will always contain linker.xdl_open()
.xdl_info
替代 Dl_info
。xdl_iterate_phdr()
的 flags 选项中删除了 XDL_WITH_LINKER
。现在 xdl_iterate_phdr()
将始终包含 linker。xdl_open()
打开 linker, app_process 和 vDSO 的速度。