目的是获取 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 中看不到这些符号呢?
预先感谢您的帮助!