Los punteros sólo guardan direcciones de memoria, no saben más, ni dónde estaban antes ni nada.
Te puedes ahorrar un puntero usando uno auxiliar y devolviendo los originales.
Supongo que usas punteros por practicar, pero para calcular la longitud de una cadena lo normal es usar strlen de string.h, y para recorrer una cadena lo normal es acceder a los caracteres directamente sin modificar el puntero (cadena[aux]). Por ejemplo, podrías calcular la longitud de una cadena así:
int len = 0;
while ( cadena[len] != '\0' ) len++;
Ya que estoy, la función gets está desaconsejada, incluso gcc avisa de que es peligrosa (aunque en este caso da igual). También veo que declaras las cadenas como globales, no tiene mucho sentido para este programa, y usas malloc... te bastaría con tener únicamente en el main "char cadena[100], cadena2[100];".
Bueno no sé si todo esto lo sabías, quizá sí y sólo estabas practicando

Saludos