[quote=bezier curve][quote=gomesrod]
Uma das opções mais seguras que vi aqui no tópico foi colocar o segredo em um programa nativo…[/quote]
Será?
Experimente fazer o seguinte: compile o seguinte programa em C:
Agora, usando o programa “strings” (é um programa que varre qualquer arquivo binário ou texto e separa as strings) você vai ter a seguinte saída
[/quote]
É, eu tinha idéia que se o programa usasse a string literal ela iria bonitinha para o executável.
O que eu pensei - mas não falei - era que esse programa em C deveria construir a string de um jeito maluco em tempo de execução.
Aqui vai um exemplo bobo, talvez seja até fácil de quebrar para alguém com os conhecimento necessários, mas daria para aumentar a complexidade até níveis bem altos:
#include <stdio.h>
#include <string.h>
#include <math.h>
int data1[] = {1,45, 109, 312, 2, 4, 5, 8, 98, 23, 981, 7, 49, 2, 3, 4, 100, 5};
int data2[] = {9, 12, 1023, 987, 900, 438, 939, 88, 111, 20, 23, 12, 98, 49, 15, 2039};
int main() {
char buff[4];
memset(buff, data1[1] + data2[9], 1);
memset(buff+1, (data2[8] / data1[4]) + (data2[7] / data1[7]), 1);
memset(buff+2, (int)(sqrt(data2[data1[5]]) * log10(*(data1+16)) + data1[11]), 1);
memset(buff+3, 0, 1);
// O segredo é "ABC"
printf("%s\n", buff);
}
Só que mesmo assim nada impede alguém de simplesmente invocar o programa e obter o seu segredo!