dll加密反编译
㈠ delphi写的DLL可不可以反编译
应该说,除了加密的代码,大多数的程序(包括dll动态链接库)都可以进行反汇编,但很少能直接反编译成原语言代码。
㈡ 如何对编译的dll文件进行加密来防止反编译
使用过.NET的程序员都知道,.NET是一个巨大的跨时代进步,它开发效率高、功能强、界面美观、耐用、新的语言C#已经提交为行业规范、CLR共公运行库资源丰富,这所有的特点标志着它成为主流编程语言是必然的。
可是他也有一个缺点,那就是编译好的程序集可以完全被反编译成源代码,这给一些不法份子提供了很好的机会,试想想,您辛苦的劳动成果就这样轻易的给别人利用,是多么不公平的事阿?所以如何保护我们的知识产权成了一个大问题。
MAXTOCODE 已经完全超越了传统的混淆手段来保护源代码的方式,他将完全加密您的代码,使您的代码完全没有办法反编译。保护强度已经不是混淆器可以与之抗衡,是目前保护强度最大,最完美的.NET产品保护方案。
MAXTOCODE 是 Aiasted.SOFT 完全自主开发的一款 .NET 代码保护工具。它是目前世界上高强度保护工具之一。
第一种代码保护方案是混淆,这是一个不错的方案,可惜强度还是无法保证,如果要做一个大的逆向工程有一定困难,但针对某个算法或功能进行解读还是很容易的。反观混淆原理则发现,混淆其实只是一个与障眼法差不多的技术。第二种就是MAXTOCODE的保护技术了,MAXOTCODE 采用了难以理解的机器语言来加密您的.NET程序集,(特别注意:MAXTOCODE的强度建立在加密算法之上,而不上简单的混淆。)在程序集运行时运态解放源代码,所以在原理上已经比混淆强度提高了许多。我们保护您所有的代码,不让不法份子看到您任何一个有效的代码,使不法份子完全无法被反编译。
㈢ 为什么用visual studio生成的dll可以反编译解决思路
第一、用某些程序集加密混淆工具,比如intellilock、.net reactor,但一定要最新版本的。
第二、核心算法用c++写成dll,然后c#调用这个dll;
第三、某些东西可以做在服务器端,让客户端的程序需要时从服务器端取。
㈣ C# DLL如何保护防止被破解
.net的实时编译(JIT)特性决定了用它开发的程序可以被轻松反编译,同时由于采用反射等技术,使得DLL能被未授权调用。
所以要想不被破解,一是不能被反编译看到源码,二是不能被随意调用。
什么混淆加壳加密等,都是可逆的。鉴于.net代码可以包含非托管代码,我们可以用C++解析C#代码生成DLL,这个DLL在被调用时验证调用者信息,就可以解决针对C#的破解,以及非授权调用了。
参考链接:http://blog.csdn.net/qwsf01115/article/details/52169574
㈤ 反编译修改dll文件后重新.net重新生成dll文件
反编译之前要先检查文件是否被混淆加密了,如果没有那就要恭喜你了。
使用reflector反编译dll源文件一定要安装FileGenerator的插件,安装好后就可以然后直接生成vs2005的工程了,然后用vs2005打开工程,修改反编译代码中异常的代码,加入编译环境所需的dll动态库,编译即可。
---------------------------------------------------------------------------------------------------------------
举例来说:
1、比如inforeader.get_item("name").ToString(),其实应该是inforeader.["name"].ToString(),没办法,手工改吧
2、还有,他还会报方法参数问题的错误,比如aa.Compare("helloworld","d",5),在5的未知显示参数错误,原来是本身这个位置的参数是一个枚举类型,反编译不知什么原因变成了第五个,于是改成枚举StringComparison.OrdinalIgnoreCase
3、。。。。。。
------------------------------
如有需要可与本人联系。
㈥ 软件采用.net C#开发,不想让人轻松破解核心逻辑及授权验证代码,DLL也不想被人随意调用,有什么办法吗
首先,我来介绍一下发布出去的DLL所面临的风险:
一、直接引用
二、反编译
三、反射
如果DLL一点措施都不做的话,上面任意一种都可以达到破解目的的。
然后,通常网上能搜到如下的保护方式,但真心的来说,用处不大,当然对小白破解者增加了难度。
一、混淆类的工具(如Dotfuscator,但是可以通过ILSpy、Reflector等反编译哦,直接COPY代码也能运行)
二、加密类的工具(如MaxToCode,网上有相应的破解教程)
三、加壳类的工具(如Sixxpack,网上有相应的破解教程)
四、强签名(签名只是防止项目中的某一个DLL被篡改了,不能防止反编译或反射的哦)
说了那么多,难道没有相对靠谱的方式了吗?
最后,我们进入正题
上面那些工具的目的归结出来大约完成两个目的,一是不能看,二是不能调,当然,我们也是实现这两个目的,只是手段不同。
一、不能看:.NET DLL可以包含托管堆代码(可以被反编译的)与非托管堆代码(不能被反编译,要反编译也是更高层次的了,不在讨范围内),我们将核心逻辑代码置于非托堆代码中,由托管堆代码提供接口供外部调用,调用时将非托管代码通过.NET动态编译特性编译后返回执行结果。这样就保证了不能看。
二、不能调:我们在非托管代码中加入验证调用者来源功能,判断调用者的HASH值是不是与在非托管代码中约定的HASH值(发布时需要提前生成相关引用者的HASH值存于非托管代码,最后生成非托管代码的DLL放于安装包中)一致,如一致则通过执行返回结果,不一致则返回空。这样就解决了非合法来源不能调的问题。
更多参考:http://www.cnblogs.com/dengxi/p/5750170.html