.net reflector反编译破解软件

来源:互联网 发布:计数排序算法 编辑:程序博客网 时间:2024/05/01 00:21

       头几篇文章似乎有点划水,最近项目考虑到软件安全性,于是自己尝试了一下反编译公司软件,居然成功了,中间踩了一些坑,看到网上很多博文都是复制粘贴,还缺少步骤,因而写下这篇博客。

       .net reflector是一款很强大的反编译工具,只限于.NET平台的反编译,这里安装及破解过程跳过,直接从破解软件的步骤开始吧,这里我安装的版本是8.3.3.115,安装后左边程序集列表中,会默认添加一些.NET基础程序集。同时,我们选择反编译版本为.NET4.0。

       1.首先打开.net reflector,如果是绿色版,直接导入所有exe和dll。如果是软件安装压缩包的话,那么需要先解压后安装,并找到安装路径,再导入所有关联exe和dll。


       2.导入成功后将看到左边列表中,已存在刚刚导入的exe和dll程序集,如下图。这里注意必须导入该软件所有程序集,不然后面会出现"不明确的匹配项"错误,这个错误,一定是因为缺少关联的程序集。


       3.鉴于上面提到的注意事项,这里有必要查看该软件的程序集引用,所以我们展开References,查看里面引用到的程序集是否在左边列表都存在,如下图。这里提一点,我最初没有这步骤,导致一直报“不明确匹配”错误,后来才知道,还差一些基础程序集。一对比发现少System.configuration.dll没有添加到列表中,这个在基础程序集在.net reflector安装后,并没有默认添加进来,于是手动添加。


       4.导入并检查完程序集后,鼠标右键选中程序所在程序集,然后选择“Export Source Code”导出代码,如下图,选择文件夹即可开始导出代码。


       5.导出代码成功后,将弹出提示框,告知0个错误,这说明我们的代码已经反编译成功了,如下图。


       6.打开我们导出代码的文件夹,看到带出代码文件,如下图。里面Client文件夹下的代码文件,才是真正的原代码,AssemblyInfo.cs和Global.cs里面是有关程序集和全局信息,这里可以删除,因为Client里面在添加到项目后,包含有此信息,会冲突,如果不删除,提示冲突代码行再删除也可以。另外,这么多.resoources后缀的文件是什么呢,其实是资源文件,二进制的,需要我们将其转换为图片文件。


       7.打开cmd命令行窗口,进入,C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools目录,然后用目录下的resgen.exe将上面的.resoources文件转换为.resx文件,这种类型的文件才是我们项目,用vs编译器打开时需要的资源文件。cmd命令格式: resgen “*.resources”“*.resx”,注意不要忘记加“”号,我看很多网友不知哪里copy的,好多都没有加“”导致转换不成功。


       8.资源文件转换成功后,将其放到Client下的WinForm文件夹下,总之跟窗体代码文件同级。然后vs新建一个项目,导入刚刚反编译项目,设为启动项。这个时候如果编译项目的话会失败,还需要做一些后续操作。将刚刚的窗体文件先卸载,然后重新包括到项目中,这时资源文件可以在编译器中显示出来了。还需要将InitializeComponent方法中的对象manager替换为resources,以便编译时代码找得到上面的资源文件。

       9.对于个别涉及全局资源的窗体,如果还是找不到资源文件的话,报错:System.Resources.MissingManifestResourceException:未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“xxxx.Properties.Resources.resources”正确嵌入或链接到程序集“xxxx”,或者确保所有需要的附属程序集都可加载并已进行了完全签名。

       可以在编译器中打开资源文件,另存为图片,然后鼠标右击项目属性,找到“资源”,添加项目资源,将刚刚另存为的图片添加进来,替换原来的全局资源文件,如下图。然后项目下就有了Resources.resx文件,以及Resources文件夹下的图片。

       10.最后,由于这个版本对属性的反编译还不够完善,存在bug。形如private Encoding <Encoding>k__BackingField需要修改为private Encoding _Encoding即可,如果是属性中存在<Encoding>k__BackingField字样,直接改为属性设置,去掉该变量就是。枚举类是不能反编译成功的,所以有些地方整数类型,需要你强制转换成枚举类型,不然编译无法通过。另外,有些窗体InitializeComponent方法中,属性的设置也需要修改,需要添加“System.Windows.Forms.”,不然找不到该属性值变量。至于是哪一行需要添加,在编译器中打开窗体界面类,设计视图会提示哪些行报错,单击后跳转,添加即可。还有反编译的项目默认为2.0版本,需要你选中项目,找到“生成”,更改其版本,以使整个项目的编译版本一致。

       11.操作完以上步骤后,大功告成,编译运行,成功!由于是公司项目,这里我就不截图了。至此,你可以根据源代码进行修改,发步破解版了。例如,我就去掉了注册权限验证的那部分代码,从而可以直接运行于本机上。

原创粉丝点击