`
qwsf01115
  • 浏览: 1496 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

.NET DLL 保护措施详解(非混淆加密加壳)

阅读更多
为什么要保护DLL,我就不多说了,各人有各人的理由。总的来说,就是不想核心逻辑泄露及授权验证被破解两大方面的因素。



首先,我来介绍一下发布出去的DLL所面临的风险:

一、直接引用

二、反编译

三、反射

如果DLL一点措施都不做的话,上面任意一种都可以达到破解目的的。



然后,通常网上能搜到如下的保护方式,但真心的来说,用处不大,当然对小白破解者增加了难度。

一、混淆类的工具(如Dotfuscator,但是可以通过ILSpy、Reflector等反编译哦,直接COPY代码也能运行)

二、加密类的工具(如MaxToCode,网上有相应的破解教程)

三、加壳类的工具(如Sixxpack,网上有相应的破解教程)

四、强签名(签名只是防止项目中的某一个DLL被篡改了,不能防止反编译或反射的哦)



说了那么多,难道没有相对靠谱的方式了吗?

最后,我们进入正题

上面那些工具的目的归结出来大约完成两个目的,一是不能看,二是不能调,当然,我们也是实现这两个目的,只是手段不同。

一、不能看:.NET DLL可以包含托管堆代码(可以被反编译的)与非托管堆代码(不能被反编译,要反编译也是更高层次的了,不在讨范围内),我们将核心逻辑代码置于非托堆代码中,由托管堆代码提供接口供外部调用,调用时将非托管代码通过.NET动态编译特性编译后返回执行结果。这样就保证了不能看。

二、不能调:我们在非托管代码中加入验证调用者来源功能,判断调用者的HASH值是不是与在非托管代码中约定的HASH值(发布时需要提前生成相关引用者的HASH值存于非托管代码,最后生成非托管代码的DLL放于安装包中)一致,如一致则通过执行返回结果,不一致则返回空。这样就解决了非合法来源不能调的问题。



注:由此带来的问题

一、性能问题:每次调用都动态编译肯定会影响性能,但是我们可以通过缓存来解决这个问题,第一次调用时就将编译后的对象存于缓存中。

二、平台问题:非托管代码不能生成ANYCPU类型的DLL,所以需要发布时指定两个版本(X86/64)生成相应的版本的DLL,由安装包判断目标平台属性,然后输出对应的DLL。

三、发布问题:每次发布时需要先生成相应项目依赖者的HASH值再存于非托管代码中再生成,放于安装包中,步骤略显复杂,但是为了安全,这个应该可以接受吧。



----------------------------------------------------------------------------

致所有还在为此问题困扰的同学,以上仅提供思路,本人已有上述思路的解决方案。由于耗费了许多心血及精力,如果凭思路还没法解决的同学可以Q我(6458450),我可以提供有偿服务。
分享到:
评论

相关推荐

    PEBundle 程序加壳工具

    **PEBundle程序加壳工具详解** 在IT领域,程序加壳是一种常见的技术,它用于对可执行文件(如.exe或.dll)进行包装,以保护代码、隐藏内部结构或实现特定功能。PEBundle是一款专为此目的设计的高效工具,能够帮助...

    加壳免杀工具RLPack V1.21 Basic Edition 汉化版--安全中国anqn.com

    加壳技术是指在原始可执行文件(如EXE或DLL)外部添加一层包装,这层包装通常包含代码和数据,用于控制程序的加载和执行。加壳后的程序在运行时会先执行壳代码,然后再执行原程序的核心功能。这样做的好处是可以在不...

    ASPack加壳工具

    在IT行业中,"加壳"是一种常见的软件保护技术,它用于在原始可执行程序(如EXE或DLL)外部添加一层包装,以隐藏代码、防止反编译或逆向工程。ASPack是一款知名的免费加壳工具,由Alexander Sotirov开发,以其高效的...

    易语言-内存中运行DLL易语言

    内存中运行DLL技术能够支持加壳后的DLL,意味着即使DLL经过加密或混淆处理,依然能在内存中正确解析和执行,这为保护代码版权和防止逆向工程提供了可能。 四、实现原理 实现内存中运行DLL的关键在于模拟系统的DLL...

    Unpacker ExeCryptor2.x.x脱壳机

    加壳后的文件通常包含多层加密和混淆,使得原始代码难以被直接解析。而Unpacker ExeCryptor2.x.x脱壳机的出现,就是为了应对这一挑战,它能够有效地剥离加壳程序,恢复原文件的未加密状态,从而便于安全研究人员进行...

    PEiD 0.95全插件版--汉化

    - 开发者和逆向工程师可以利用它来学习和理解软件的内部结构,或者找出可能存在的版权保护措施。 7. **注意事项:** - 尽管PEiD功能强大,但它并不能检测出所有的加壳和打包技术,尤其是那些高度定制或新兴的技术...

    PEiD(侦测未知壳加强版)

    "壳"通常是指对可执行文件(.exe或.dll)进行的一层额外封装,它可以是加密、混淆或调试保护机制。PEiD(Portable Executable Identifier)是一款广泛使用的工具,专门用于检测这些外壳,帮助逆向工程师和安全研究...

    PEiD 非常不错的查壳软件

    1. **壳检测**:PEiD能快速准确地检测到加壳程序所使用的壳类型,帮助用户了解程序可能的保护措施。 2. **Packers识别**:除了壳之外,PEiD还可以识别出程序是否经过了各种打包器处理,如ASPack、UPX等,这对于分析...

    PEiD0.95全插件汉化版

    这款软件主要用于识别可执行文件(.exe或.dll)中的编译器标志、加密壳、混淆技术等,帮助用户揭示程序的真实面貌,是反病毒分析、恶意软件检测以及软件保护研究的得力助手。 首先,让我们深入了解PEiD0.95的核心...

    RCFF Team 专用 PEiD 库v 1.0.rar

    3. **功能**:使用 PEiD 可以快速检查文件是否被加壳、加密或混淆,这对于逆向工程和恶意软件分析至关重要。通过揭示文件的真实身份,可以防止误报或漏报,提高安全分析的准确性。 4. **更新与维护**:由于新的打包...

    暗组免杀系列图文教程

    - 加壳可以保护程序不受反编译,同时也能隐藏原始代码结构。 - 脱壳则是在程序运行时去除加壳层,还原程序的原始状态。 - 这两个步骤结合使用可以有效提升程序的隐蔽性和安全性。 #### 3. 给木马添加自己所需要的...

    PEiD-0.95 侦壳工具

    在软件开发中,保护壳是一种技术,用于对可执行文件进行加密或混淆,以防止未经授权的修改、反编译或调试。黑客和恶意软件作者经常使用壳技术来隐藏其代码的真实性质,增加检测和分析的难度。 2. **PEiD-0.95 的...

    360免杀 顶

    常见的壳技术包括PE加壳、加密壳等。 3. **动态加载**:不将恶意代码直接写入内存,而是通过动态链接库(DLL)或自定义加载器,在运行时才加载到内存,以此躲避静态分析。 4. **驱动级免杀**:利用系统驱动程序进行...

    DIE.EXE0.64

    《DIE.EXE0.64:探索PE文件与壳检测的工具详解》 在IT安全领域,了解和分析可执行文件(exe)的结构及其可能存在的保护层(壳)至关重要。DIE.EXE0.64是一款强大的工具,专为开发者、安全研究人员和逆向工程师设计...

    360攻破技术

    - **HEUR/Malware.QVM20.Genıڵ**:同样是一种被识别为潜在恶意行为的程序,可能是经过某种形式的加壳或加密。 - **HEUR/Malware.QVM27.Gen**:表示另一种类型的可疑恶意软件,其具体的威胁类型和行为需要进一步...

    输入表免杀技术总结精装版

    - **加壳技术**: 使用加密壳对程序进行封装,增加破解难度。 - **代码混淆**: 通过对程序代码进行混淆处理,使其难以理解。 - **多态性**: 利用多态性特性,每次生成的恶意代码都不同,避免被特征码检测。 - **自我...

Global site tag (gtag.js) - Google Analytics