zoukankan      html  css  js  c++  java
  • DNGuard 一款DotNet内核级加密保护工具

    最近一直学习DotNet相关资料,sscli真是好东西啊:P。

    一边学习一边把知识综合了一下,做了这个小工具。
    保护原理和国人的remotesoft,maxtocode差不多。加密后的程序发布时也需要附带一个运行库,
    不过和那两个不同,附带的运行库不是纯native的dll,而是C++/CLI的混合程序集。

    工具已经有了雏形,整体内核框架完成了。用来加密了一个sample,运行正常。
    有些方面甚至超过了maxtocode。

    1.不依赖微软的ildasm和ilasm程序。
      IL反汇编和IL汇编都程序实现。
     可以加密包含本地代码的程序集。

    2.Anti反编译工具,maxtocode加密的程序集无法用reflector直接查看,但是程序运行后用pedumper,dump后就可以用reflecotr查看结构了,当然还是看不到代码的。
    dnguard加密的程序集比我预期的效果还要好,加密后的程序集无法用reflector查看,dump后的也无法用reflector插件。

    感觉reflector还是有些弱,同类软件Disa#, Xenocode fox 就可以直接打开查看maxtocode和dnguard加密的程序集。
    为此我尝试在dnguard加密的程序集里面增加了结构混淆,有一点效果,就是在Disa#和 fox里面查看结构是会出现一些张冠李戴的混乱,即类A的函数可能会显示到类B中。效果还不是很好,会出现问题的函数每个类只有很少的几个。

    3.Anti .Net 2.0的新特性,不是很强,强度和maxtocode 3.13(内部版)差不多,听说maxtocode出了3.14了,不知道强度是否有增强(看Jason的blog里的回复似乎和3.13是一样的)。max的3.12patch几个字节,反射就可以用了,3.13也差不太多,需要patch的字节数比3.12还要少。

    关于这个方面现在有一个比较好的方案,能够在不影响效率的前提下使强度提高很多。但也不能完全防dump。
    还有一个比较完美的防dump的方案,需要配合另一项保护技术一起才能实现。
    这个方面不打算再深入探讨了,等DNGuard加密壳完成后,会着手另一项保护技术,最后将两项保护合在一起。

    4. Anti dump后用ildasm,ilasm恢复程序集。DNGuard除了anti .net 2.0的新特性防dump外,还增加了anti,我早期做的dumper。另外还利用C++/CLI混合程序集的特性实现了,防dump后ildasm。不过这个强度不大,对小程序集能被很容易修复后实现il汇编。

    现在需要做的工作还有很多,加密算法还没有弄,运行库自身的保护也还没有做。发现纯native的dll可以找到现成的保护工具,就thmida很不错,maxtocode的运行库就有用这个壳,C++/CLI的dll就一直找不到好的方法。看来只能手动加一层保护了,已经开始着手试验了。现在准备加一个简单的加密壳,等这个做完后就把DNGuard放一个demo上来。

    DNGuard加密程序集后用reflector查看:
     


    DNGuard加密程序集dump后用reflector查看:

     



     Maxtocode加密后的程序集用Reflector查看:

     


    Maxtocode加密程序集Dump后用Reflector查看:


     



  • 相关阅读:
    html标签嵌套规则
    关于setTimeout和Promise执行顺序问题
    vue基础
    new操作符具体干了什么
    ["1", "2", "3"].map(parseInt)
    线性表
    树的一些概念和性质
    A*与IDA*
    树上启发式合并
    启发式合并
  • 原文地址:https://www.cnblogs.com/rick/p/566704.html
Copyright © 2011-2022 走看看