目的是获取 AES 的 openssl 实现中预计算表的地址。这些表包含在aes_core.cinfo address SYMBOL_NAME
文件中,并命名为Te0 、Te1 等。我正在尝试使用gdb
.
所以这些是我到目前为止所遵循的步骤:
- 禁用 ASLR (
sudo sysctl kernel.randomize_va_space=0
) - 编译 openssl (version 101e)
configure -d shared
以保持调试符号 - 将程序链接到上面提到的 openssl 版本(我确保
info sharedlibrary
在 gdb 中使用) - 在 gdb 中运行程序并使用
info address Te0
(或任何其他表)
结果:No symbol "Te0" in current context.
private_AES_set_encrypt_key
例如,函数(也在aes_core.c中)不会发生同样的情况。事实上,在这种情况下,结果是:Symbol "private_AES_set_encrypt_key" is at 0x7ffff7a483f0 in a file compiled without debugging.
这正是我所需要的。
我的想法:这些表是这样声明的,static const
所以我猜它们可能会以某种方式进行优化,但是我再次有意编译 openssl 以支持调试。那么为什么我在 gdb 中看不到这些符号呢?
预先感谢您的帮助!