攻击者是否有可能从您的编译代码中获取整数数组?
比如攻击者如何使用 strings
命令从您的代码中获取字符串。
最佳答案
是的。 main.c
的简单示例:
int main(void) {
int vars[8] = {0,1,2,3,4,5,6,7};
}
然后 gcc -O0 main.c -o main
禁用优化,这样我们未使用的数组就不会被删除。那么如果你简单地拆解它:
0000000000400474 <main>:
400474: 55 push %rbp
400475: 48 89 e5 mov %rsp,%rbp
400478: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%rbp)
40047f: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%rbp)
400486: c7 45 e8 02 00 00 00 movl $0x2,-0x18(%rbp)
40048d: c7 45 ec 03 00 00 00 movl $0x3,-0x14(%rbp)
400494: c7 45 f0 04 00 00 00 movl $0x4,-0x10(%rbp)
40049b: c7 45 f4 05 00 00 00 movl $0x5,-0xc(%rbp)
4004a2: c7 45 f8 06 00 00 00 movl $0x6,-0x8(%rbp)
4004a9: c7 45 fc 07 00 00 00 movl $0x7,-0x4(%rbp)
这是合乎逻辑的,如果你的代码中有数据并且你的程序使用它,那么数据一定存在于某处。
关于c++ - 从已编译的 C++ 代码中提取 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306680/