C 分段错误 xor char 数组
C segmentation fault xor char array
我想对 char 数组中的所有字符进行异或运算。我有一些代码可以正常工作,除了 xor 行:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void obfuscate(FILE *file, char *input, char *variableName)
{
int i;
int size = (int)strlen(input);
char a = 65;
fprintf(file, "%s: %s -> ", variableName, input);
for(i = 0; i < size; i++)
{
input[i] = (char)(input[i] ^ a);//I am causing a segmentation fault
fprintf(file, "0x%x, ", input[i]);
}
return;
}
int main()
{
char *a = "MyString";
FILE *file = fopen("out.txt", "w");
obfuscate(file, a, "a");
fclose(file);
}
我在 linux 机器上使用带有 gcc in.c -o out.o
的普通 gcc 编译器。
如果我用异或操作注释该行,它就可以正常工作。非常感谢任何帮助,我自己的研究没有找到解决方案。
使用动态内存尝试以下解决方案。
在char *a = "MyString"; char *in = malloc(sizeof(a));
a
指向我们无法更改的代码部分。 &
in
指向堆区,所以我们可以任意修改它 no.of 次。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void obfuscate(FILE *file, char *input, char *variableName)
{
int i;
int size = (int)strlen(input);
char a = 65;
fprintf(file, "%s: %s -> ", variableName, input);
for(i = 0; i < size; i++)
{
input[i] = (char)(input[i] ^ a);//I am causing a segmentation fault
fprintf(file, "0x%x, ", input[i]);
}
return;
}
int main()
{
char *a = "MyString";
char *in = malloc(sizeof(a));
strcpy(in, a);
FILE *file = fopen("out.txt", "w");
obfuscate(file, in, "a");
fclose(file);
free(in);
}
我想对 char 数组中的所有字符进行异或运算。我有一些代码可以正常工作,除了 xor 行:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void obfuscate(FILE *file, char *input, char *variableName)
{
int i;
int size = (int)strlen(input);
char a = 65;
fprintf(file, "%s: %s -> ", variableName, input);
for(i = 0; i < size; i++)
{
input[i] = (char)(input[i] ^ a);//I am causing a segmentation fault
fprintf(file, "0x%x, ", input[i]);
}
return;
}
int main()
{
char *a = "MyString";
FILE *file = fopen("out.txt", "w");
obfuscate(file, a, "a");
fclose(file);
}
我在 linux 机器上使用带有 gcc in.c -o out.o
的普通 gcc 编译器。
如果我用异或操作注释该行,它就可以正常工作。非常感谢任何帮助,我自己的研究没有找到解决方案。
使用动态内存尝试以下解决方案。
在char *a = "MyString"; char *in = malloc(sizeof(a));
a
指向我们无法更改的代码部分。 &
in
指向堆区,所以我们可以任意修改它 no.of 次。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void obfuscate(FILE *file, char *input, char *variableName)
{
int i;
int size = (int)strlen(input);
char a = 65;
fprintf(file, "%s: %s -> ", variableName, input);
for(i = 0; i < size; i++)
{
input[i] = (char)(input[i] ^ a);//I am causing a segmentation fault
fprintf(file, "0x%x, ", input[i]);
}
return;
}
int main()
{
char *a = "MyString";
char *in = malloc(sizeof(a));
strcpy(in, a);
FILE *file = fopen("out.txt", "w");
obfuscate(file, in, "a");
fclose(file);
free(in);
}