=)... 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 > > > > > > > > > > > > > >
