Releases: hexhacking/xDL
xDL v2.4.0
Announcements
Compatible with Android 17.
Bugs fixed
Fixed a bug where ELF files within an APK might not be found on Android 6.0.
This bug only occurs when android:extractNativeLibs=false.
Fixed a bug where concurrent symbol lookups on the same handle could result in duplicate resource loading and resource leaks.
公告
兼容 Android 16。
Bugs 修复
修复在 Android 6.0 中可能找不到 apk 中的 ELF 的 bug。
这个 bug 只发生在 android:extractNativeLibs=false 时。
修复对同一个 handle 并发执行符号查找时,可能发生资源重复加载和泄漏的 bug。
xDL v2.3.0
Announcements
Compatible with Android 16.
New features
Added new API xdl_open2().
See the description of xdl_open2() in the README for details.
Bugs fixed
Fixed the bug when xdl_addr() and xdl_addr4() encountered thumb instruction function. (Issue: #25. Thanks: @XMDS)
(commit: 790ad1a)
For thumb instruction function, st_value is an odd number, and the instructions are stored in the range: [st_value - 1, st_value - 1 + st_size).
Improved rules for ignoring LLVM suffixes in xdl_dsym().
(commit: dc74265)
Previously, only suffixes starting with . could be ignored. Now, suffixes starting with $ can be ignored.
公告
兼容 Android 16。
新特性
增加了新的 API xdl_open2()。
具体请查看 README 中对 xdl_open2() 的描述。
Bugs 修复
修复 xdl_addr() 和 xdl_addr4() 遇到 thumb 指令函数时的 bug。 (Issue: #25. Thanks: @XMDS)
(commit: 790ad1a)
对于 thumb 指令的函数,st_value 是奇数,函数指令的存储范围是:[st_value - 1, st_value - 1 + st_size)。
改进了 xdl_dsym() 中忽略 LLVM 后缀的规则。
(commit: dc74265)
之前只能忽略以 . 开头的后缀,现在新增了以 $ 开头的后缀的忽略。
xDL v2.2.0
Announcements
Compatible with Android 15. Compatible with 16KB page size.
New features
Added new API xdl_addr4().
See the description of xdl_addr4() in the README for details.
Bugs fixed
Fixed the bug that the wrong address is returned when querying the indirect function address.
When querying the address of an indirect function (STT_GNU_IFUNC) via xdl_sym(), the correct address is now returned. Previously, the address of the indirect function itself was incorrectly returned.
公告
兼容 Android 15,兼容 16KB page size。
新特性
增加了新的 API xdl_addr4()。
具体请查看 README 中对 xdl_addr4() 的描述。
Bugs 修复
修复查询 indirect function 地址时返回错误地址的bug。
当通过 xdl_sym() 查询 indirect function (STT_GNU_IFUNC) 地址时,现在能返回正确的地址了,之前错误的返回了 indirect function 本身的地址。
xDL v2.1.1
Bugs fixed
Fixed the bug of incorrect symbol name matching in 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.
Bugs 修复
修复 xdl_dsym() 符号名匹配错误的 bug。
当 .symtab 中含有相同前缀的符号名时,这个 bug 可能会导致 xdl_dsym() 返回错误的地址。比如:查询 abcdef 的地址,但是错误的返回了 abcde 的地址。
这个 bug 只存在于 2.1.0 版本中。
xDL v2.1.0
Announcements
- Compatible with Android 14.
Improve
- Improve the success rate of force dlopen.
公告
- 兼容 Android 14。
改进
- 改进 force dlopen 的成功率。
xDL v2.0.0
xDL v1.2.1
Improve
- Improve the compatibility of
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 v1.2.0
Incompatible Changes
xdl_infostructure renamed toxdl_info_t.
New features
- Added new API
xdl_info().xdl_info()obtains information about the dynamically loaded object referred to byhandle(obtained by an earlier call toxdl_open).
不兼容的变更
xdl_info结构体更名为xdl_info_t。
新特性
- 增加了新的 API
xdl_info()。xdl_info()通过handle(xdl_open的返回值)来获取动态加载对象的信息。
xDL v1.1.5
Announcements
- Compatible with Android 13.
公告
- 兼容 Android 13。