我有一个字符串文字,它在我的可执行文件周围的许多不同地方使用。
让我们这样说:
const char *formatString = "Something I don't want to make obvious: %d";
int format1(char *buf) { sprintf(buf, formatString, 1); }
int format2(char *buf) { sprintf(buf, formatString, 2); }
//...
现在,这个字符串文字在可执行代码中变得非常明显,因为它是按字面嵌入的。
有没有办法通过强制编译器来避免这种情况,例如,生成汇编指令(例如mov [ptr + 4], 0x65
)指令来创建字符串,而不是按字面嵌入字符串?
我不想做任何形式的混淆——我只是想避免使字符串在可执行文件中变得明显。(我也不想在使用字符串的每个地方都修改我的代码。)
这可能吗?