Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
libunwind_CVE-2015-3239 — 多架构库,用于展开程序调用栈,在Linux、FreeBSD和HP-UX系统上实现底层调试、崩溃分析和安全研究。 | Kitploit
工具/GitHubGitHub/renukaselvar/libunwind_cve-2015-3239
内存取证漏洞分析漏洞利用逆向工程调试器二进制分析
GitHubrenukaselvar/libunwind_cve-2015-3239

libunwind_CVE-2015-3239

多架构库,用于展开程序调用栈,在Linux、FreeBSD和HP-UX系统上实现底层调试、崩溃分析和安全研究。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
1年前尚未审核

-- mode: Outline --

这是 unwind 库的版本 1.0。此库支持以下几种架构/操作系统组合:

Linux/x86-64: 工作正常。 Linux/x86: 工作正常。 Linux/ARM: 工作正常。 Linux/IA-64: 经过充分测试并受支持。 Linux/PARISC: 工作正常,但 C 库缺少 unwind 信息。 HP-UX/IA-64: 大部分可用,但已知存在一些严重限制。 Linux/AArch64: 新添加。 Linux/PPC64: 新添加。 Linux/SuperH: 新添加。 FreeBSD/i386: 新添加。 FreeBSD/x86-64: 新添加(FreeBSD 架构称为 amd64)。

  • 通用构建说明

通常,可以使用以下命令构建并安装此库:

root@kitploit:~
$ autoreconf -i # Needed only for building from git. Depends on libtool.
$ ./configure
$ make
$ make install prefix=PREFIX

其中 PREFIX 是安装前缀。默认情况下使用前缀 /usr/local,因此 libunwind.a 安装在 /usr/local/lib,unwind.h 安装在 /usr/local/include。测试时,您可能希望使用 /usr/local 作为前缀。

  • 使用 Intel 编译器构建

** 版本 8 及更高版本

从版本 8 开始,IA-64 Intel 编译器的首选名称为 "icc"(与 x86 上的名称相同)。因此,configure 行应如下所示:

root@kitploit:~
$ ./configure CC=icc CFLAGS="-g -O3 -ip" CXX=icc CCAS=gcc CCASFLAGS=-g \
	LDFLAGS="-L$PWD/src/.libs"
  • 在 HP-UX 上构建

目前,libunwind 必须在 HP-UX 上使用 GCC 构建。

libunwind 应在 HP-UX 上按如下方式配置和安装:

root@kitploit:~
$ ./configure CFLAGS="-g -O2 -mlp64" CXXFLAGS="-g -O2 -mlp64"

注意:目前不支持对 32 位(ILP32)二进制文件进行展开。

** 旧版本 GCC 的解决方法

GCC v3.0 和 GCC v3.2 附带了有问题的 sys/types.h 版本。解决方法是运行 "configure" 之前执行以下命令:

root@kitploit:~
$ mkdir $top_dir/include/sys
$ cp /usr/include/sys/types.h $top_dir/include/sys

GCC v3.3.2 及更高版本已修复此问题,无需此解决方法。

  • 为 PowerPC64 / Linux 构建

为 power64 构建时应使用:

$ ./configure CFLAGS="-g -O2 -m64" CXXFLAGS="-g -O2 -m64"

如果您的电源支持 altivec 寄存器: $ ./configure CFLAGS="-g -O2 -m64 -maltivec" CXXFLAGS="-g -O2 -m64 -maltivec"

要检查您的处理器是否支持向量寄存器(altivec),请执行: cat /proc/cpuinfo | grep altivec 并应看到类似如下的内容: cpu : PPC970, altivec supported

如果 libunwind 似乎无法正常工作(回溯失败),请尝试使用 -O0 编译(不开启优化)。根据您的 gcc 版本,可能存在某些编译器问题。

  • 在 FreeBSD 上构建

通用构建说明同样适用。要构建并执行一些测试,您需要 ports 中提供的 libexecinfo 库(位于 devel/libexecinfo)。

此 port 的开发工作是在 FreeBSD 8.0-STABLE 上完成的。该库使用系统编译器(gcc 4.2.1 的修改版本)以及 gcc 4.4.3 构建。

  • 回归测试

构建库之后,您可以使用以下命令运行一组回归测试:

root@kitploit:~
$ make check

** IA-64 Linux 上的预期结果

除非您安装了非常新的 C 库和编译器,否则目前预计 IA-64 Linux 上以下测试会失败:

root@kitploit:~
Gtest-init		(应自 glibc-2.3.x/gcc-3.4 起通过)
Ltest-init		(应自 glibc-2.3.x/gcc-3.4 起通过)
test-ptrace		(应自 glibc-2.3.x/gcc-3.4 起通过)
run-ia64-test-dyn1	(应自 glibc-2.3.x 起通过)

这并不意味着 libunwind 不能与较旧的编译器或 C 库一起使用,只是意味着在某些边界情况下展开会失败。由于它们是边界情况,应用程序不太可能触发它们。

注意:如果您在 Gia64-test-nat 和 Lia64-test-nat 中遇到大量错误,这几乎肯定表明汇编器版本过旧。GNU 汇编器过去曾错误地编码前栈指针相对偏移量。此错误已于 2004 年 9 月 21 日修复,因此任何更高版本的汇编器都将正常工作。

** x86 Linux 上的预期结果

预计 x86 Linux 上以下测试会失败:

root@kitploit:~
Gtest-resume-sig	(无法获取 SIGUSR2)
Ltest-resume-sig	(同样)
Gtest-dyn1		(尚不支持动态展开信息)
Ltest-dyn1		(尚不支持动态展开信息)
test-setjmp		(longjmp() 尚未实现)
run-check-namespace	(尚无 _Ux86_getcontext)
test-ptrace

** x86-64 Linux 上的预期结果

预计 x86-64 Linux 上以下测试会失败:

root@kitploit:~
Gtest-dyn1		(尚不支持动态展开信息)
Ltest-dyn1		(尚不支持动态展开信息)
Gtest-init (参见 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18743)
Ltest-init		(同样)
test-async-sig		(因错误的展开信息而崩溃?)
test-setjmp		(longjmp() 尚未实现)
run-check-namespace	(尚无 _Ux86_64_getcontext)
run-ptrace-mapper	(??? 需调查)
run-ptrace-misc	(参见 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18748
		 和 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18749)

** PARISC Linux 上的预期结果

注意:PA-RISC Linux 需要 GCC v3.4 或更新版本。早期版本的编译器未能生成展开所需的异常处理程序头(GNU_EH_FRAME)。

预计 x86-64 Linux 上以下测试会失败:

root@kitploit:~
Gtest-bt   (由于缺少展开信息,回溯在 kill() 处被截断)
Ltest-bt   (同样)
Gtest-resume-sig  (Gresume.c:my_rt_sigreturn() 有某种错误)
Ltest-resume-sig  (同样)
Gtest-init (同样)
Ltest-init (同样)
Gtest-dyn1 (尚不支持动态展开信息)
Ltest-dyn1 (尚不支持动态展开信息)
test-setjmp		(longjmp() 尚未实现)
run-check-namespace	(工具链尚不支持 HIDDEN)

** HP-UX 上的预期结果

目前 HP-UX 上不支持 "make check"。您可以尝试运行它,但大多数测试会失败(并且有些可能无法终止)。目前已知可正常工作的测试程序只有:

root@kitploit:~
 tests/bt
 tests/Gperf-simple
 tests/test-proc-info
 tests/test-static-link
 tests/Gtest-init
 tests/Ltest-init
 tests/Gtest-resume-sig
 tests/Ltest-resume-sig

** PPC64 Linux 上的预期结果

运行 "make check" 时,24 个测试中失败的不应超过 10 个。

  • 性能测试

此发行版包含几个简单的性能测试,可大致了解各种 libunwind 操作的基本成本。构建库之后,您可以使用以下命令运行这些测试:

$ cd tests $ make perf

  • 联系开发者

所有关于此库的问题请直接发送至:

root@kitploit:~
[email protected]

您可以通过发送邮件至 [email protected],并在正文中包含以下内容来完成:

root@kitploit:~
subscribe libunwind-devel

或者您可以通过以下 Web 界面订阅并管理您的订阅:

root@kitploit:~
https://savannah.nongnu.org/mail/?group=libunwind
下载工具