我正在编写一个库,我需要在其中使用一些常量整数。我已经在我的 c 函数中将常量 int 声明为局部变量,例如const int 测试 = 45325;
现在我想隐藏这个常量变量。这意味着,如果我将这个库作为 .so 与某人共享,他不应该能够找到这个常量值? 是否可以隐藏库中定义的常量整数?请帮忙
这是我的示例代码
int doSomething() {
const int abc = 23456;
int def = abc + 123;
doSomething 在我的 cpp 文件中定义为本地函数。我将此常量用于同一函数内的某些计算。
最佳答案
如果我没理解错的话,你不会太担心导出的符号(因为它是一个普通的普通局部变量,无论如何我都不会担心),而是担心任何人发现这个常量(可能是因为它是用于许可证检查的加密 key 或魔术常量,或类似的东西)。
这在原则上是不可能的。拥有二进制代码的人(在图书馆中必然是这种情况)可以弄清楚他是否愿意。您可以通过以一种模糊的方式计算该值(但要注意编译器优化)来使它变得更难一些,但即便如此,这只会让想要找出答案的人变得更难。这只是意味着有人不会立即在反汇编中看到“mov eax,45325”,但无论哪种方式,它可能不会让某人忙碌超过几分钟。
关于c++ - c++库文件中局部常量是如何存储的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077018/