Gracias Angel por la traduccion a cosas entendibles ;-)
Ahora, con lo que decia Oscar:
Yo lo que haria si queres sacarle la fecha de caducidad es: Usando
reflector (creo que tambien necesitas un addin), exportas toda la DLL
a un proyecto de visual studio, incluyendo los codigos...
Una vez que tenes eso, te pones a debuggear si podes... si hay algun
texto que te muestra tipo "PAGA LA LICENCIA!!", buscalo en la solucion
y vas a poder orientarte un poco mas, ya que seguramente arriba de eso
haya un IF que haga la validacion... Si vos sabes que expira despues
de 30 dias, intenta buscar el numero 30, capaz que te llevas una
sorpresa :)
Si sabes que busca por un archivo llamado license.txt, no estara como
texto el nombre del archivo todavia ?

En fin... good luck!
Diego

2008/4/30 Angel Java Lopez <[EMAIL PROTECTED]>:
>
>
>
> Hola gente!
>
>
>
> Meto cuchara…. Lo que Diego puso en su ejemplo, es que el ofuscador LE
> CAMBIA LOS NOMBRES a todos los métodos y variables a las QUE PUEDA cambiar
> sin cambiar la semántica del codigo. Lo hace de tal manera que la semántica
> de la ejecución no cambia. Si, digamos, antes teníamos
>
>
>
> MiIngresoAnual *= 2;
>
> IndiceDeInflacion /= 2;
>
>
>
> Lo cambia a
>
>
>
> A *= 2;
>
> B /= 2;
>
>
>
> Sigue haciendo lo mismo, pero se pierden los nombres. Cualquier decompilador
> decompilara:
>
>
>
> A *= 2;
>
> B /= 2;
>
>
>
> Si un decompilador decompilara luego de la ofuscación de arriba, a:
>
>
>
> MiIngresoAnual *= 2;
>
> IndiceDeInflacion /= 2;
>
>
>
> Buen decompilador será!!! ;-)
>
>
>
> Supongo que debe haber por ahí un utilitario que nos permita alterar los
> nombres A y B, para que sean mas entendibles, y regrabar el assembly. Sino,
> siempre queda el ILDASM, volcarlo a texto, armarse de paciencia, y cambiar
> esos nombres….. ;-)
>
>
>
> Nos leemos!
>
>
>
> Angel "Java" Lopez
> http://www.ajlopez.com/
>
>
>
>
>
>
> From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Leonardo
> Micheloni
> Sent: Wednesday, April 30, 2008 2:57 PM
> To: [email protected]
> Subject: [SPAM] [puntonet] Libro sobre arquitectura del NetFramework
>
>
>
>
> Diego, lo que creo que dice Oscar es que estamos de acuerdo con el el IL es
> el mismo y que el CLI lo interpreta, ahora, si esto es así, por qué no lo
> puedo descompilar de un modo legible?
>
>
> 2008/4/30 Diego Jancic <[EMAIL PROTECTED]>:
>
>
>
> Oscar,
> Te pego aca un IL sin obfuscar:
>
>  IL_0011:  brtrue.s   IL_001e
>  IL_0013:  ldstr      ".\\Private$\\AccuMessages"
>  IL_0018:  newobj     instance void
> [ProcessingServer.Common]ProcessingServer.Common.QueueNotExistsException::.ctor(string)
>  IL_001d:  throw
>  IL_001e:  ldc.i4.1
>  IL_001f:  stsfld     bool ProcessingServer.Client.Helper::isValidQueue
>  IL_0024:  ldstr      ".\\Private$\\AccuMessages"
>
>
>
>
> Y despues el mismo IL, obfuscado a mano:
>
>  IL_0011:  brtrue.s   IL_001e
>  IL_0013:  ldstr      ".\\Private$\\AccuMessages"
>  IL_0018:  newobj     instance void [a]a.b.c::.ctor(string)
>  IL_001d:  throw
>  IL_001e:  ldc.i4.1
>  IL_001f:  stsfld     bool a.b.d::x
>  IL_0024:  ldstr      ".\\Private$\\AccuMessages"
>
>
>
> No obfusque el string porque es mas complicado, pero: podes decirme
> que hace el primer y el segundo bloque de IL ??
> El primero es facil... sabes que tenes un servidor que hace
> procesamiento (ProcessingServer), que esta validando el nombre de una
> Queue y que tira una excepcion... del segundo no podes saber nada,
> pero para el CLR es exactamente lo mismo, por eso anda...
>
> Espero que se entienda..
>
> Saludos
>
>
>
>
>
>

Responder a