完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。
VisualCVS 是一款代码管理工具。它拥有友好的界面,支持标签,可以通过 VisualCVS 做一些简单的CVS/SVN操作如“上传源文件”和“下载源文件”。"锦囊妙技"栏目是聚合全网软件使用的技巧或者软件使用过程中各种问题的解答类文章,栏目设立伊始,小编欢迎各路软件大神朋友们踊跃投稿,在完美者平台分享大家的独门技巧。
本站文章素材来源于网络,大部分文章作者名称佚失,为了更利于用户阅读和使用,根据需要进行了重新排版和部分改编,本站收录文章只是以帮助用户解决实际问题为目的,如有版权问题请联系小编修改或删除,谢谢合作。
软件大小:2.94 MB
VisualSVN用.net编写,并且没有进行任何代码混淆,因此很容易通过反射工具直接修改IL代码。VisualSVN的破解方法也是多种多样,自己跟代码找到关键位置,修改一下即可。如果不懂IL代码的话建议看一下网上教程,对于懂得.NET编程的很容易学习。 我找到的是位于bin目录下的VisualSVN.Core.L.dll,使用.NET Reflector 加载Assembly,找到VisualSVN.Core.Licensing.LicenseConverter类中的方法KeyToLicenseUnsafe(IDecoder, String):License 下面是未修改的IL代码.method public hidebysig static class VisualSVN.Core.Licensing.License KeyToLicenseUnsafe(classVisualSVN.Core.IDecoder decoder, string key) cil managed { .maxstack 3 .localsinit ( [0] charch, [1] stringstr, [2] classVisualSVN.Core.Licensing.PlainLicenseSerializerserializer, [3] classVisualSVN.Core.Licensing.OldLicenseSerializerserializer2, [4] classVisualSVN.Core.Licensing.NewLicenseSerializerserializer3, [5] charch2) L_0000: ldarg.1 L_0001: ldloca.sch L_0003: callstringVisualSVN.Core.Licensing.LicenseConverter::ExtractKeyBody(string, char&) L_0008: stloc.1 L_0009: ldloc.1 L_000a: brtrue.s L_000e L_000c: ldnull L_000d: ret L_000e: ldloc.0 L_000f: stloc.sch2 L_0011: ldloc.sch2 L_0013: ldc.i4.s0x43 L_0015: beq.s L_003d L_0017: ldloc.sch2 L_0019: ldc.i4.s0x4e L_001b: sub L_001c: switch (L_004c, L_005d, L_002f) L_002d: br.s L_005d L_002f: newobjinstancevoidVisualSVN.Core.Licensing.PlainLicenseSerializer::.ctor() L_0034: stloc.2 L_0035: ldloc.2 L_0036: ldloc.1 L_0037: callvirtinstanceclassVisualSVN.Core.Licensing.LicenseVisualSVN.Core.Licensing.PlainLicenseSerializer::Deserialize(string) L_003c: ret L_003d: newobjinstancevoidVisualSVN.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.LicenseVisualSVN.Core.Licensing.OldLicenseSerializer::Deserialize(string, classVisualSVN.Core.IDecoder) L_004b: ret L_004c: newobjinstancevoidVisualSVN.Core.Licensing.NewLicenseSerializer::.ctor() L_0051: stloc.sserializer3 L_0053: ldloc.sserializer3 L_0055: ldloc.1 L_0056: ldarg.0 L_0057: callvirtinstanceclassVisualSVN.Core.Licensing.LicenseVisualSVN.Core.Licensing.NewLicenseSerializer::Deserialize(string, classVisualSVN.Core.IDecoder) L_005c: ret L_005d: ldnull L_005e: ret } 翻译一下得到public static License KeyToLicenseUnsafe (IDecoder decoder, string key) { char ch; string str = ExtractKeyBody(key, out ch); if (str != null) { switch (ch) { case 'N': { NewLicenseSerializer serializer3 = new NewLicenseSerializer(); return serializer3.Deserialize(str, decoder); } case 'P': { PlainLicenseSerializer serializer = new PlainLicenseSerializer(); return serializer.Deserialize(str); } case 'C': { OldLicenseSerializer serializer2 = new OldLicenseSerializer(); return serializer2.Deserialize(str, decoder); } } } return null; } 看完代码就很好做了,自己创建一个License对象,使用返回该对象即可。要改的代码如下:public static License KeyToLicenseUnsafe(IDecoder decoder, string key) { License license2 = new License { StartTime = DateTime.MinValue, Binding = LicenseBinding.Seat, Capacity = 0x7ffffffe, EndTime = DateTime.MaxValue, Type = LicenseType.Corporate, PurchaseId = "100", LicensedTo = Environment.UserName }; License license = license2; license.PurchaseDate = license.StartTime; return license; }由于要修改IL代码,因此需要编写成IL代码,如下:.method public hidebysig static class VisualSVN.Core.Licensing.License KeyToLicenseUnsafe(class VisualSVN.Core.IDecoder decoder, string key) cil managed { .maxstack 2 .localsinit ( [0] class VisualSVN.Core.Licensing.License license, [1] class VisualSVN.Core.Licensing.License license2, [2] class VisualSVN.Core.Licensing.License license3) L_0000: nop L_0001: newobj instance void VisualSVN.Core.Licensing.License::.ctor() L_0006: stloc.1 L_0007: ldloc.1 L_0008: ldsfld value type [mscorlib]System.DateTime [mscorlib]System.DateTime::MinValue L_000d: stfld value type [mscorlib]System.DateTimeVisualSVN.Core.Licensing.License::StartTime L_0012: ldloc.1 L_0013: ldc.i4.1 L_0014: stfld value typeVisualSVN.Core.Licensing.LicenseBindingVisualSVN.Core.Licensing.License::Binding L_0019: ldloc.1 L_001a: ldc.i40x7ffffffe L_001f: stfldint32VisualSVN.Core.Licensing.License::Capacity L_0024: ldloc.1 L_0025: ldsfldvaluetype [mscorlib]System.DateTime [mscorlib]System.DateTime::MaxValue L_002a: stfldvaluetype [mscorlib]System.DateTimeVisualSVN.Core.Licensing.License::EndTime L_002f: ldloc.1 L_0030: ldc.i4.2 L_0031: stfldvaluetypeVisualSVN.Core.Licensing.LicenseTypeVisualSVN.Core.Licensing.License::Type L_0036: ldloc.1 L_0037: ldstr"100" L_003c: stfldstringVisualSVN.Core.Licensing.License::PurchaseId L_0041: ldloc.1 L_0042: callstring [mscorlib]System.Environment::get_UserName() L_0047: stfldstringVisualSVN.Core.Licensing.License::LicensedTo L_004c: ldloc.1 L_004d: stloc.0 L_004e: ldloc.0 L_004f: ldloc.0 L_0050: ldfldvaluetype [mscorlib]System.DateTimeVisualSVN.Core.Licensing.License::StartTime L_0055: stfldvaluetype [mscorlib]System.DateTimeVisualSVN.Core.Licensing.License::PurchaseDate L_005a: ldloc.0 L_005b: stloc.2 L_005c: br.s L_005e L_005e: ldloc.2 L_005f: ret
visualsvn server 是一个代码管理工具
1.首先,假设你的电脑是win7 64位的,你要准备的东西:VisualSVN-Server-3.0.1-x64.msi和TortoiseSVN-1.8.8.25755-x64-svn-1.8.10.msi 2.安装完之后 3.打开VisualSVN Server Manager,直接右键Repositories,Create New Repository,输入Repository Name,假设输入的是testsvn,OK 4.那么现在在Repositories下就会有一个资源名称叫testsvn 5.那么我们现在右键Users,Create User,输入名称密码都是testsvn,OK,我们这就创建了一个叫testsvn的用户了,以后可以用它检入检出数据了 6.现在我们要检出这个资源的东西,右键Repositories下的testsvn,Copy Url to ClipBoard,这样就选中了它的url了 7.我们在C盘右键,选择SVN Checkout,在URL of repository粘贴,OK 8.经过以上步骤之后,你可以检出你的项目了,请尝试在里面新建修改文件提交就行了 9.如果你要在eclipse里面使用也可以,因为你已经有了url和用户名密码 10.如果我重装系统之后,资源是不是消失了?没关系,在菜单栏的操作(A)-Properties里面设置你的Repositories Root,这样,无论你怎么重装,都没有关系了,自己的svn,局域网的svn就这么配置好了。
用配置VisualSVN Server配置https协议的SVN服务器的时候,必须注意VisualSVN Server上面写的服务器url和你要访问的url是一致的,不能一边写的是主机名,另一边写的是IP地址。