=)...

Salu2 Diego

El día 30 de abril de 2008 15:34, Diego Jancic <[EMAIL PROTECTED]> escribió:

> 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