Ofuscacion de cadenas harcodeadas en el codigo

Iniciado por d3adly, Mayo 28, 2020, 05:49:26 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 28, 2020, 05:49:26 PM Ultima modificación: Mayo 28, 2020, 05:54:36 PM por d3adly
Les comparto un simple codigo para ofuscar variables, y asi no escribir directamente ciertas palabras que deseemos harcodear en el programa para que no sean visibles por programas como strings o similares, no es para informacion sensible, es por pura diversion y ocultacion de palabras, espere los guste.

Código: c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

void HC(const char *input, int len){
     srand(time(NULL));
     char tmpbuff1[10];
     char tmpbuff[10240];
     memset(tmpbuff, '\0', 10240);
     memset(tmpbuff1, '\0', 10);
    //Para generar nombre de variable aleatorio
     char keys[] = {'_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3' ,'4', '5', '6', '7', '8', '9'};
     int i = 0, a = 0, b = 0, c = 1;
     for (; i < 7; i ++){
        tmpbuff1[i] = keys[rand() % 63];
     }
     snprintf(tmpbuff, 50, "unsigned char %s[%i] = { ", tmpbuff1, len);
     for(a = 0, b = 0; a<len; a++){
         b = input[a];
         b ^= 0xEC;
         b ^= a;
         char tmp[50];
         if(a == (len - 1)) {
             snprintf(tmp, 15, "0x%x };", b);
             strncat(tmpbuff, tmp, strlen(tmp));
             break;
         }
         if (c++ == 12){
             snprintf(tmp, 15, "0x%x,\n   ", b);
             strcat(tmpbuff, tmp);
             c = 1;
         }else{
             snprintf(tmp, 15, "0x%x, ", b);
             strcat(tmpbuff, tmp);
         }
     }
     printf("Aqui esta tu codigo\n\n%s\n\n", tmpbuff);
}


/*Funcion para "decifrar" variable y usarla
unsigned char var_name[6] = { 0x9e, 0x8c, 0x80, 0x8b, 0x87, 0x84 };   <<   random
char *new_var = malloc(sizeof(char) * 7);
HCD(var_name, 6, &new_var);
ahora new_var = "random"
*/
void HCD(const char *input, int len, char **outp)
{
    int a = 0, b = 0;
     char outvar[len];
     memset(outvar, '\0', len);
     for(a = 0, b = 0; a<len; a++){
         b = input[a];
         b ^= 0xEC;
         b ^= a;
         strcat(outvar, (char*)&b);
     }
     strncpy(*outp, outvar, len);
}

int main(int argc, char **argv)
{
  HC(argv[1], strlen(argv[1]));
  return 0;
}

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn