none
Problema ofuscando aplicacion en vb.net RRS feed

  • Pregunta

  • Hola:
    Estoy intentando ofuscar una aplicación y me encuentro con un problema que no se resolver.
    Cuando ofusco mi código, el ofuscador cambia los nombres de clases, metodos, atributos, propiedades, etc...
    Uno de los problemas que tengo, es que mis datagrids fueron creados utilizando una clase estilo para ellos, y utilizamos la llamada a la propiedad desde el valuemember con un cadena entre comillas

    Me.MiListBox.DataSource = Me.MiListaTipada
    Me.MiListBox.ValueMember = "IdTerminal"       'Titulo que se mostrara para esta columna
    Me.MiListBox.DisplayMember = "Nombre"         'Propiedad enlazada a esta columna AQUI ES DONDE ESTA EL PROBLEMA ya que el ofuscador cambiara el nombre de esa propiedad



    Evidentemente el ofuscador no puede modificar este código, y la llamada a la propiedad dara un error, pues el codigo ofuscado tendra una propiedad con el nombre que el ofuscador le  ha dado, donde antes era nombrePropiedad.
    jueves, 26 de marzo de 2009 12:32

Todas las respuestas

  • Que ofuscador estas usando? Deberias contarte con el autor, para explicarle el problema.

    Por otro lado? el problema se da? lo haz ejecutado? o piensas que podria darp roblema?

    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    jueves, 26 de marzo de 2009 19:24
  • hola sergio, gracias por repsonder.
    Si se da, ademas puedes ver en el comentario de arriba que es logico que se de ese error.
    El problema es que el valuemember me obliga a introducir el nombre de la propiedad del objeto enlazado como una cadena y no como acceso a una propiedad.
    Es decir:
     En vez de poner, me.midropdownlist.valuemember = miclassenlazada.propiedad
    Me obliga a esto:
        Me.midropdownlist.valuemember = "Nombre de la propiedad"

    Para el ofuscador es imposible saber que esto es una propiedad, ya que no existe una clase asociada a esa cadena.
    Gracias
    jueves, 26 de marzo de 2009 20:57
  • Imagino que varios usuario ya han pasdo por esto, si no nadie ofuscaría su código. Que producto estas usando?, o es uno propio?

    La solución que se me ocurre, es poner esos nombres en un archivo de configuración (appSettings) y leerlo desde ahí, ahi ya no tendras esos problemas.

    Por otro lado otra opción es: Sólo ofuscar componentes de negocios (DLL, DataAccess, BusinessLogic), y no proyectos clientes (Web o Win).

    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    jueves, 26 de marzo de 2009 21:14
  • El producto es dotfuscator.
    Podria hacer lo que dices, pero entonces el problema seria peor, tendria que modificar el fichero de configuracion con el nombre de la propiedad que le ha dado el dotfuscator.
    En cuanto a ofuscar solo la logica del negocio, eso es lo que hago. Pero en casi cualquier aplicacion existe una relacion directa entre las clases VO y la interface de usuario. Es imposible que no lo haga, al menos en este caso.
     
    Tengo una opcion, que es no ofuscar las clases VO, pero eso me parece solo una ñapa. Lo que pretendo es modificar la forma con la que enlazo los objetos con el databind.
    Si agrego las columnas una a una creando un objeto column para cada uno de los elementos, no tendria ningun problema, pero para hacer eso tendria que recorrer toda la lista tipada que necesito enlazar. Algo que no me parece nada estético.
    En realidad solo necesito obtener el nombre de una propiedad, no el valor. Eso me permitiria hacerlo de la siguiente forma.

    me.dropdownlist.valuemember = miClase.nombreDeMipropiedad
    Esto permitiria que cuando el ofuscador cambie el nombre de mi propiedad lo hara así:

    me.dropdownlist.valuemember = ars.azd
    Donde azd es el nuevo nombre que el ofuscador asigna a mi propiedad.

    No se si he explicado muy bien, pero no se me ocurre como hacerlo mejor. jejeje
    jueves, 26 de marzo de 2009 21:24
  • A mi parecer, deberías comunicarte directamente con dotfuscator para preguntar, cuál sería el mejor escenario. He usado poco ofuscadores de código, y lo que te pueda decir es por sentido común o como lo empezaría a resolver. Pero creo que más rápido la sacas consultando a la gente del team de dotfuscator :D.

    Saludos,


    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    viernes, 27 de marzo de 2009 5:09