goron
goron copied to clipboard
字符串加密不支持全局变量
多次测试发现全局变量都没有被混淆,后面会做这部分的支持吗
代码贴出来看下。
代码贴出来看下。
int printf(const char *format, ...)
{
return *(int*)format;
}
struct StringStruct {
int i;
const char *s;
};
static const struct StringStruct global_struct_string[] = {
{123, "string in global struct123"},
{456, "string in global struct456"}
};
char* global_var_string1 = "string in global var1";
char* global_var_string2 = "string in global var2";
char global_array_string[] = "string in global array";
const char const_global_array_string[] = "const string in global array";
// wchar_t* global_unicode_string = L"unicode global string";
int main(int argc, char *argv[])
{
printf("", L"unicode arg string");
// printf("", global_unicode_string);
printf((char*)global_array_string[0]);
printf(global_array_string);
printf((char*)const_global_array_string[0]);
printf(const_global_array_string);
printf("string in arg1");
printf("string in arg2", "string in arg2");
printf(global_var_string1);
printf(global_var_string2, global_var_string2);
char* stack_var_string = "string in stack var";
printf(stack_var_string);
char* stack_var_string2 = "string in stack var2";
printf(stack_var_string2, stack_var_string2);
printf(global_struct_string[0].s);
printf(global_struct_string[1].s, global_struct_string[1].s);
struct StringStruct stack_struct_string = {
789,
"string in stack struct"
};
printf(stack_struct_string.s);
printf(stack_struct_string.s, stack_struct_string.s);
return 0;
}
以上为测试代码,想确认下字符串混淆的覆盖范围,结果发现全局变量几乎都是明文:
使用static定义试试。不使用static的话,我会保留一份给外部引用,当前模块应该会使用本地加密的副本。
使用static定义试试。不使用static的话,我会保留一份给外部引用,当前模块应该会使用本地加密的副本。
加上了static定义还是不行,而且这种静态全局变量外部模块不能直接访问吧,对一些工程好像还是会有影响
static char* global_var_string1 = "string in global var1";
static char* global_var_string2 = "string in global var2";
static char global_array_string[] = "string in global array";
