代码改变世界

ComponentArt 2009.3 破解

2010-03-08 19:54  曾祥展  阅读(1143)  评论(0编辑  收藏


这里就使用了License, LicenseProvider, RegistryFileLicenseProvider。直接删除

public virtual bool IsLicensed()
{
    if (this.License != null)
    {
        return true;
    }
    try
    {
        this.License = LicenseManager.Validate(base.GetType(), this);
        return true;
    }
    catch
    {
        return false;
    }
}

 

使他返回TRUE;

 

---1506

.method public hidebysig newslot virtual
        instance bool  IsLicensed() cil managed
{
  // 代码大小       50 (0x32)
  .maxstack  3
  .locals init (bool V_0,
           bool V_1)
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldfld      class [System]System.ComponentModel.License

ComponentArt.Web.UI.WebControl::License
  IL_0007:  ldnull
  IL_0008:  ceq
  IL_000a:  stloc.1
  IL_000b:  ldloc.1
  IL_000c:  brtrue.s   IL_0012
  IL_000e:  ldc.i4.1
  IL_000f:  stloc.0
  IL_0010:  br.s       IL_002f
  .try
  {
    IL_0012:  nop
    IL_0013:  ldarg.0
    IL_0014:  ldarg.0
    IL_0015:  call       instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()
    IL_001a:  ldarg.0
    IL_001b:  call       class [System]System.ComponentModel.License

[System]System.ComponentModel.LicenseManager::Validate(class [mscorlib]System.Type,
                                                                                                                            object)
    IL_0020:  stfld      class [System]System.ComponentModel.License

ComponentArt.Web.UI.WebControl::License
    IL_0025:  ldc.i4.1
    IL_0026:  stloc.0
    IL_0027:  leave.s    IL_002f
  }  // end .try
  catch [mscorlib]System.Object
  {
    IL_0029:  pop
    IL_002a:  nop
    IL_002b:  ldc.i4.0
    IL_002c:  stloc.0
    IL_002d:  leave.s    IL_002f
  }  // end handler
  IL_002f:  nop
  IL_0030:  ldloc.0
  IL_0031:  ret
} // end of method WebControl::IsLicensed

--1553


换成:

.method public hidebysig newslot virtual instance bool IsLicensed() cil managed
{
    .maxstack 1
    .locals init (
        [0] bool CS$1$0000)
    L_0000: nop
    L_0001: ldc.i4.1
    L_0002: stloc.0
    L_0003: br.s L_0005
    L_0005: ldloc.0
    L_0006: ret
}

 

 

 

删掉:

 299637  ---   299739

.class public auto ansi beforefieldinit ComponentArt.Licensing.Providers.License
       extends [System]System.ComponentModel.License

298904 -----299456
.class public auto ansi beforefieldinit ComponentArt.Licensing.Providers.LicenseProvider
       extends [mscorlib]System.Object

298824 ---- 298902
.class public auto ansi beforefieldinit ComponentArt.Licensing.Providers.RegistryFileLicenseProvider
       extends [System]System.ComponentModel.LicenseProvider


299148 ---  299366
.class private auto ansi beforefieldinit ComponentArt.Licensing.Providers.'ᜀ'
       extends ComponentArt.Licensing.Providers.'ᜃ'

 

299150  ---

.class private auto ansi beforefieldinit ComponentArt.Licensing.Providers.'ᜁ'
       extends ComponentArt.Licensing.Providers.'ᜃ'

 

 

.class private auto ansi beforefieldinit ComponentArt.Licensing.Providers.'ᜂ'
       extends [mscorlib]System.Collections.ArrayList

 


.class private abstract auto ansi beforefieldinit ComponentArt.Licensing.Providers.'ᜃ'
       extends [mscorlib]System.Object

 

 

 

 IL_0001:  ldarg.1
    IL_0002:  newobj     instance void ComponentArt.Licensing.Providers.RegistryFileLicenseProvider::.ctor()
    IL_0007:  ldstr      ""
    IL_000c:  newobj     instance void ComponentArt.Licensing.Providers.License::.ctor(class

ComponentArt.Licensing.Providers.RegistryFileLicenseProvider,
                                                                                       string)
    IL_0011:  stfld      class [System]System.ComponentModel.License

ComponentArt.Web.UI.WebControl::License
    IL_0016:  ldarg.1

 

 

 

 

删掉:

504  --514

.publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   // .$..............
                00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   // .$..RSA1........
                8F B8 4C 20 4D AD 24 D4 AC FF 94 0C 9C 74 AB F4   // ..L M.$......t..
                E1 F7 7D 41 81 9F BB 3B 43 5C 4A 16 B6 9C C1 04   // ..}A...;C\J.....
                AE 54 6C C0 7A FA A8 65 F0 D4 7B 89 AE 63 70 48   // .Tl.z..e..{..cpH
                23 C7 67 35 BC 1C 00 A9 BC C1 B6 F0 CC F6 D9 90   // #.g5............
                55 8E 30 3C 00 E1 6A AF E2 C4 2F A2 2E D4 0B BC   // U.0<..j.../.....
                A3 9A 71 40 FA 9F 95 D9 E6 F9 96 6F 01 9C 0B E3   // ..q@.......o....
                4A 79 D9 00 57 85 A3 AA 70 5B 0F A1 48 B4 B1 07   // Jy..W...p[..H...
                C9 3C 1C 11 10 7E 7F BB BF C5 50 09 E3 9E A6 B4 ) // .<...~....P.....
  .hash algorithm 0x00008004

 


2. 删除VS2005对项目的权限检查。
一般就是依赖了LicenseProviderAttribute,打开IL,找到类似的代码,直接删除。20 多个!

 .custom instance void [System]System.ComponentModel.LicenseProviderAttribute::.ctor(class

[mscorlib]System.Type) = ( 01 00 3C 43 6F 6D 70 6F 6E 65 6E 74 41 72 74 2E   // ..<ComponentArt.
                                                                                                                       4C 69 63 65 6E 73

69 6E 67 2E 50 72 6F 76 69 64   // Licensing.Provid
                                                                                                                       65 72 73 2E 52 65

67 69 73 74 72 79 46 69 6C 65   // ers.RegistryFile
                                                                                                                       4C 69 63 65 6E 73

65 50 72 6F 76 69 64 65 72 00   // LicenseProvider.
                                                                                                                       00 )


 

命令:


c:

cd C:\Documents and Settings\itd0300166.PLSH166\桌面\123

ilasm /dll /resource=123.res /output:123.dll  123.il