.NET 程序混淆加壳工具 ILProtector

    下面来说一说这两天测试的一款.NET程序加壳工具ILProtector,总体感觉不错,很好用,对于一般的工具侠还是可以抵挡一下,而高手们一般不屑于窥视别人的程序。

    ILProtector是一款保护.Net程序免遭****的工具,它将中间语言代码IL转换为IL DSAM/NET Reflector/ILSpy等反编译工具不能识别的形式。它提供的主要功能有:字符串加密、完整性检查、以及对.NET代码的全方位保护。ILProtector支持.Net Framework 2.0, 3.0, 3.5, 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2等版本。除了以图形化方式启动外,你也可以以命令行方式使用ILProtector。ILProtector官网上说ILProtector就是用自己保护的,足以证明ILProtector开发者还是挺自信的。ILProtector提供的功能在其他混淆加壳工具中一般也有,但是ILProtector尚未提供授权功能,对软件的授权可能还需要结合其他组件实现,所以目前而言,就当ILProtector主要是针对代码加密的一款工具吧,也期待它可以延申出其他更通用也更强大的功能。ILProtecor目前还不支持Mono,所以Linux等其他平台暂时不可以使用。

    首先选择需要加密的文件,在这个界面上选择输出目录、如果需要签名可以设置签名文件。

.NET 程序混淆加壳工具 ILProtector

    在Assemblies下方列表里点击右键选择“Properties”可以设置项目属性和程序集相关的属性。

    项目属性:ILProtector在生成结果文件时,同目录下会生成运行时依赖库,根据操作系统位数生成不同dll文件,如Protect32.dll或者Protector64.dll,不过鉴于安全考虑可以修改依赖库的名称,表面文章还是需要做一做的。

.NET 程序混淆加壳工具 ILProtector

    程序集属性:可以设置每一个被保护文件的属性,设置项目大家一般都明白。

.NET 程序混淆加壳工具 ILProtector

    设置完属性后,点击save保存。确认设置无误后,点击Process按钮便可以生成被保护的目标文件。   

    ILProtector也可提供命令行方式,因此对于使用VS编程来说,我们可以在生成事件后进行设置,让ILProtector自动帮助我们进行加密。比如我们可以使用命令:

ILProtector -out="$(SolutionDir)My Software\bin\Release" -nogui -embed-dlls "$(SolutionDir)My Software\bin\Release\My Software.exe"

    LProtector目前不支持一下几个方面代码的加密:C++/CLI混合编码的程序集、类构造函数、泛型以及__arglist关键字方法。如果使用ILProtector,需要有意避开这几个限制条件。

    最后一点,ILProtetor由vgsoft.com开发并维护,最初以免费软件,保护.net 软件免遭****。现在转向收费软件,所以ILProtector需要付费购买许可,但是也通过其他方式申请Free License,比如写Blog获取。当然写Blog也是有一定要求的,有兴趣可以到ILProtector官网上了解一下。