Enseñarte cómo descifrar VisualSVN
Aquí está el código IL sin modificar: método público hidebysig clase estática VisualSVN.Core.Licensing.License KeyToLicenseUnsafe (decodificador classVisualSVN.Core.IDecoder, clave de cadena) cil administrado { .maxstack 3 .localsinit ([0] charch, [1] stringstr, [2] classVisualSVN.Core.Licensing.PlainLicenseUnsafe (decodificador classVisualSVN.Core.IDecoder, clave de cadena) cil administrado { ..Licensing.NewLicenseSerializerserializer3, [5] charch2) L_0000: ldarg.1 L_0001: ldloca.sch L_0003: callstringVisualSVN. .Licensing.OldLicenseSerializerserializer2L_0008: stloc.1 L_0009: ldloc.1 L_000a: brtrue.s L_000e L_000c: ldnull L_000d: ret L_000e.L_000f: stloc.sch2 L_0011: ldloc.sch2 L_0013: i4.s0x43 L_0015: beq.s L_003d. L_0017: ldloc.sch2 L_0019: ldc.i4.s0x4e L_001b: sub L_001c: interruptor (L_004c, L_005d, L_002f) L_002d: br.s L_005d L_002f: newobjinstancevoidVisualSVN.Core.Licensing.Plain LicenseSerializer::. ctor() L_0034: ubicación estándar .2L_0035: ldloc.2 L_0036: ldloc.1 L_0037: callvirtinstanceclassVisualSVN.Core.Licensing.L_0037: callvirtinstanceclassVisualSVN.Core.Licensing.PlainLicenseSerializer::Deserialize(string) L_003c: ret L_003d: newobjinstancevoidVisualS V N.Core.Licensing.OldLicenseSerializer::. ctor () L_0042: stloc.3 L_0043: ldloc.3 L_0044: ldloc.1 L_0045: ldarg.0 L_0046: callvirtinstanceclassVisualSVN.Core.Licensing.PlainLicenseSerializer: :Deserialize(string) L_0048: newobjinstancevoidVisualSVN.Core.Licensing.O ld LicenciaSerializador::
.ctor()Core.Licensing.OldLicenseSerializer::Deserialize(cadena, classVisualSVN.Core.IDecoder) L_004b: ret L_004c: newobjinstancevoidVisualSVN.Core.Licensing.OldLicenseSerializer::Deserialize(cadena, classVisualSVN.Core.IDecoder)Core.Licensing.NewL icenseSerializer ::.ctor() L_0051: stloc.sserializer3 L_0053: ldloc.sserializer3 L_0055: ldloc.1 L_0056: ldarg.0L_0057. (cadena, claseVi sualSVN. Core. IDecoder) L_005c: ret L_005d: ldnull L_005e: ret } Traducción Obtener clave de licencia pública estática KeyToLicenseUnsafe (decodificador IDecoder, clave de cadena) { char ch string str = ExtractKeyBody(key, out ch); switch ( ch) { case 'N': { NewLicenseSerializer serializer3 = new NewLicenseSerializer(); return serializer3.Deserialize(str, decodificador); { case 'P': { PlainLicenseSerializer serializer = new PlainLicenseSerializer(); ); } case 'C': { OldLicenseSerializer serializer2 = new OldLicenseSerializer(); return serializer2.Deserialize(str, decoder); own Crea un objeto de licencia y úsalo para devolver el objeto.
Cambie el código de la siguiente manera: licencia pública estática KeyToLicenseUnsafe(decodificador IDecoder, clave de cadena) { Licencia licencia2 = nueva Licencia { StartTime = DateTime.MinValue, Binding = LicenseBinding.Backup.Backup.Backup.Backup.Backup.Backup.Backup.Backup. Copia de seguridad = LicenseBinding.Seat, Capacidad = 0x7ffffffe, EndTime = DateTime.MaxValue, Type = LicenseType.Corporate, PurchaseId = "100", LicensedTo = Environment.UserName }; devolver licencia ;}.
Dado que el código IL debe modificarse, debe escribirse como el siguiente código IL: método público hidebysig clase estática VisualSVN.Core.Licensing.License KeyToLicenseUnsafe(clase decodificador VisualSVN.Core.IDecoder, clave de cadena) cil administrado { .maxstack 2 .localsinit ( [ 0] clase VisualSVN.Core.Licensing.License licencia, [1] clase VisualSVN.Core.Licensing.LicenseUnsafe(clase VisualSVN.Core.IDecoder decodificador, clave de cadena) cil administrado { .maxstack 2 .[2] clase VisualSVN.Core. Licensing.License licencia3) L_0000: nop L_0001: instancia de newobj nula VisualSVN.Core.Licensing.License::.ctor() L_0006: stloc.1 L_0007: ldloc.1L_0014: tipo de valor stfldVisualSVN.Core.Licensing. LicenseBindingVisualSVN.Core. 2f: ldloc.1L_0030: ldc.i4 2 L_0031: stfldvaluetypeVisualSVN.Core.Licensing.LicenseTypeVisualSVN.Core.Licensing.License::Tipo L_0036: ldloc.1 L_0037: ldstr "100" L_003c: stfldstringVisualSVN.Core.Licensing.License::Purcha. seId L_0041: ldloc. 1L_0042: cadena de llamada [mscorlib] System.Environment::get_UserName() L_0047: stfldstring VisualSVN.Core.Licensing.License:: LicensedTo L_004c: ldloc.1 L_004d: stloc.0 L_004e: ldloc.0L_004c: ldloc.1 L_004d: stloc. 0 L_004e: ldloc.0 L_004f: ldloc.0 0050: ldfldvaluetype[mscorlib]System.DateTimeVisualSVN.Core.Licensing.License::StartTime L_0055:s
tfldvaluetype[mscorlib]System.DateTimeVisualSVN.Core.Licensing.License::StartTimeDateTimeVisualSVN.Core.Licensing.License::PurchaseDate L_005a: ldloc.0 L_005b: stloc.2 L_005c: br.s L_005e L_005e: ldloc.2 05 f:ret } Una vez que haya hecho esto, puede crear una nueva licencia utilizando el software propietario de Microsoft.
Todo lo que tienes que hacer es utilizar las herramientas de compilación y descompilación IL propias de Microsoft.