The problem is here:
char *message[9];
You've made an array of 9 pointers to characters, you don't assign them any value or allocate them any memory. They're uninitialized.
The first thing you do now is deference one of those uninitialized pointers:
*message[mIndex] =
Thus you crash.
Edit:
You can initialize it to all NULL
s via:
char *message[9] = {0};
But you still can't use that, not it will just seg fault on deferencing a NULL pointer. You have to assign some memory to these to be useful.. for example you could do:
message[0] = malloc(100); // I don't know how much you need for your strings
message[1] = malloc(100); // that's up to you, so I'm just arbitrally picking 100 bytes
message[2] = malloc(100); // here to illustrate the point.
message[3] = malloc(100);
message[4] = malloc(100);
message[5] = malloc(100);
message[6] = malloc(100);
message[7] = malloc(100);
message[8] = malloc(100);
Then you'll have to free each of them when you're done. Is this want you wanted? An array of strings?
This line:
printf("\n hiddden letters:%s\n", *message); //print message
implies to me that you were really after just a single string...