C语言中如何避免字符串被strings工具检测到?
如何让字符数组不被strings这类工具检测到?
下面是两种实现方式,以及各自的适用场景和问题:
方法1:用__attribute__((visibility("hidden")))标记隐藏字符串
先定义一个简化标记的PRIVATE宏:
#define PRIVATE __attribute__((visibility("hidden"))) PRIVATE char secret_str[] = "your_secret_string";
通过该属性标记后,字符串会被设置为隐藏可见性,可避免被strings工具扫描到。
方法2:用static修饰字符串
在Linux环境下,static修饰的字符数组仅在当前编译单元可见,不会被strings工具检测到:
static char secret_str[] = "your_secret_string";
但注意:这个方法在Windows环境(使用MINGW64编译)完全无效。编译时会抛出警告:visibility attribute not supported in this configuration; ignored [-Wattributes],即便添加-visibility=hidden编译选项,最终生成的二进制文件里,目标字符串依然能被strings工具dump出来。
内容的提问来源于stack exchange,提问作者loaded_dypper
相关产品推荐
相关产品推荐

