前天晚上,看到朋友说御剑出新版本了,但是这次需要输入激活码才能用。由于处于内测阶段,可以直接找御剑作者要激活码。结果我发现这款软件在我的虚拟机中,获取机器码时会崩溃,这样就没法生成激活码了(ಥ_ಥ)。于是,我打算自己破解,直接将激活相关代码删除,最终得到一个不需要激活码即可运行的御剑( ̄▽ ̄)。
先用 PEID 查壳,发现没加壳,且是 VB .net 语言编写的,那么反编译就简单多了。
首先,我们用 dnSpy 将 御剑WEB目录扫描优化版.exe 反编译,并保存。
接着用 visual studio 2017 打开刚刚反编译的项目。主程序为 MyApplication.cs ,直接运行会报许多错误。
接下来主要就是修改编译时出现的错误并将激活码功能去掉。第一次编译会报 意外的字符“$” ,我们需要将整个项目中的 VB$AnonymousDelegate_0 替换成 AnonymousDelegate_0 ,并将 VB$AnonymousDelegate_0.cs 文件名改成 AnonymousDelegate_0.cs ,还有 御剑WEB目录扫描优化版.csproj 文件中的 VB$AnonymousDelegate_0 也替换成 AnonymousDelegate_0 。
再次编译,就会遇到 CS0579 特性重复 错误,试了好多方法都没解决,我就直接把它注释了。
接着编译,会遇到 使用了未赋值的局部变量”enumerator” ,猜测应该是用来关闭某种资源或流的,例如文件资源,这里我直接将其注释掉。
然后再将为初始变量 num、num3 都初始化为0,这两个变量是用来存储HTTP响应码的。
最后,将 Form.cs 中的 CheckJH 函数中 Flag 设置成 true 并删去校验激活码相关代码。
这样便绕过了激活,功能也正常,最后放一张运行效果图。