2010-07-13 8 views
5

estoy buscando la manera de ofuscar el siguiente código C#/fuente Silverlight:estoy buscando la manera de ofuscar el siguiente código #/fuente Silverlight c

if (searchBox.Text.Equals("string literal")){ 
     MessageBox.Show("another string literal"); 
    } 

Hasta ahora todo lo que puedo subir con a ocultarlo es codificar las cadenas como matrices de ascii ...

Todo lo que quiero es que el código fuente no se pueda leer, esto es para un huevo de pascua. La seguridad no es una prioridad para mí. Gracias.

No quiero que se conozca la presencia de un huevo de Pascua. Estoy tratando de ocultar el flujo del programa por lo que no parece que hay una línea de código como

if (specialcase) 
    doEasterEgg(); 

que he visto cosas en el concurso como c ofuscado donde hola mundo se convierte en gook globbidy. ¿Hay algo similar que las personas conozcan por C#?

+2

Déjame adivinar: '" string literal "' ¿es la contraseña secreta de la puerta trasera? – dtb

+1

@dtb: me parece más como si fuera un control de cuadro de búsqueda ... –

+1

@Mike Atlas: Eso es solo para confundir al lector del código descompilado. :-) – dtb

Respuesta

4

¿Qué es exactamente lo que quiere proteger?

  • ¿La transmisión del valor de texto del control a su servidor? En ese caso, cualquier ofuscación por cualquier técnica que no sea de cifrado será superada fácilmente por un atacante motivado. Debería mirar en encrypting your strings, en lugar de ofuscarlos.

  • Si está buscando ofuscar su código fuente, debería dejar a third party tool handle it. Todo lo que pueda inventar por su cuenta probablemente se invente fácilmente a la inversa.

  • EDIT: Si solo quiere ocultar un huevo de Pascua, ¿qué le parece usar ROT13?

  • EDIT 2: ¿Qué le parece asignarles las constantes engañosas y hacer referencia a ellas en una clase estática diferente que se denomina de manera engañosa?

.

// in other source file ValidateInput.cs 
public const VALID_STRING = "secret"; 

public class ValidateInput { 
    public static bool Validate(string srcText) 
    { 
     return srcText == VALID_STRING; 
    } 
    public static void LogicValidSearch() 
    { 
     return; 
    } 
} 

//In your main application 
if (ValidateInput.Validate(searchBox.Text)) { 
    ValidateInput.LogValidSearch(); 
} 
+0

Bueno, conozco un montón de maneras de encriptar el literal de la cadena, tomé un curso de criptología. Pero no quiero que nadie sepa que HAY un huevo de Pascua. Así que no puedo tener una línea de código que se parece a Si es un caso especial: hacer el huevo de pascua ¿Hay alguna forma de ofuscar ese flujo de programa? Por ejemplo, algo así como escribir una función y ponerla de alguna manera en un archivo DLL o algo así.En realidad, no sé lo que eso significa, pero lo he escuchado. Gracias – NickHalden

+0

Ver mi nueva edición ... –

+0

Ah sí, eso es más de lo que estaba buscando ... ¡la mejor respuesta hasta ahora! – NickHalden

1

No hay suficiente código aquí para ofuscar de manera efectiva. Su única opción es hash el valor de "string literal" y encriptar el valor de "otro literal de cadena". Esta técnica tampoco es segura porque tendrías que exponer tu método de encriptación.

Cuestiones relacionadas