摘要:增加了一种加密算法。
对加密数据的保存结构进行了变更。
阅读全文
摘要:前面我们介绍了目前主流的双层加密壳核心实现原理,
以及应对兼容性,同时考虑安全性的前提下对加密壳核心进行简化。
并就加密壳核心的兼容性以及安全性进行了讨论 ,提到了加密壳核心兼容性和安全性共赢的实现模式,纯Jit层核心。
今回我们将介绍这种加密壳核心的实现。
这种核心可以基本保障方法体局部变量签名以及异常处理表的安全,但仍然无法保证IL字节码的安全。
那么它的保护意义何在?
阅读全文
摘要:前面我们介绍了目前主流的双层加密壳核心实现原理,
同时提到了应对兼容性,同时考虑安全性的前提下对加密壳核心进行简化。
今回主要讨论一下安全性、兼容性需要注意哪些因素。
阅读全文
摘要:.Net中的泛型和C++中的模版很相似,但在编译行为上有些不同。
之前做DNGuard HVM 时就遇到了加密泛型的麻烦问题,最近又发现了泛型在 ngen 加强保护模式下也有问题,在.Net解密中它同样也是一个麻烦。
C++中的模版在编译时就生成了实例代码,出现代码膨胀。
.Net的泛型,在编译时只会生成一份MSIL代码
阅读全文
摘要:在上一回 .Net 加密原理,方法体加密信息对应关系的实现 中介绍了实现加密壳首要解决的基础问题,
今回以第一种实现模式介绍如何实现一个纯EE层(mscorwks.dll)的加密壳内核。
加壳运行库的核心代码
DWORD* __fastcall DNGuard_GetILHeader(DWORD_PTR MethodPtr)
{
DWORD* pIL = OrgGetILHeader(MethodPtr);
if(*pIL == gdwMagic)
{
pIL = DecryptMethod(pIL[1]);
}
return pIL;
}
阅读全文
摘要:在 per method 的dotNet加密中,首要解决的方法体对应关系,即在运行时加密壳如何确定当前要解密的方法体所对应的加密信息。
目前大部分加密壳都直接利用了dotNet的元数据来保存这种对应关系,
阅读全文
摘要:前面讨论了 .Net 保护中的 native compile 方式 。
提到了 native compile的两种方式 伪编译 和 ngen 编译。仍然没有像C++那样的完全native的编译。
这里要讨论的就是 ngen编译 生成的 ni 文件。
前面讨论时我们提到了fetion框架中的 fetionvm.srm文件。
注意到它是使用了ngen编译保护模式。
Remotesoft在评论中予以了证实,今回就以 fetionvm.srm这个文件为例,尝试ni文件的还原。
阅读全文
摘要:据宣传,这个功能就是将dotNet程序编译成native的本地代码,有代表性的相关工具有xenocode, themida 和 remotesoft。
他们实际上属于两类:
一、伪编译
就是把磁盘上的 dotNet程序转换成 win32 的程序,但运行后在内存中实际上还是dotNet程序,只是使用了一个win32 loader,把dotNet程序整体打包嵌入到了这个 win32 的loader中。
二、ngen编译
ngen 是 dotNet提供的将IL编译成native的工具。
这种可以算是真实的编译吧。
但是它们有一个共同的特点,依然不能脱离dotNet框架单独运行
阅读全文
摘要:主程序更新,界面,进度显示,修正对个别非标准。Net程序集加密出错的bug。 运行库更新,修正asp.net 1.1下的个别兼容性问题。 泛型更新,修正之前最大只支持127个泛型参数的问题。 试用版开放 混淆相关的功能。 试用版和标准版在内核强度方面做了区分。 下载地址: http://www.redcheek.net/bbs/read.php?tid=5051
阅读全文
摘要:在做HVM伪代码覆盖率检测时,在构造的一些dotNet程序样本中总是缺少一些MSIL指令
,没有覆盖所有的MSIL指令。
如C#中的装箱和取消装箱的IL指令,可能很多人和我最初的想法一样,装箱是 box指令
,取消装箱是unbox指令,实际上这只对了一半。
阅读全文
摘要:Hmm, looks weird isn't it? Using that dark keyword __arglist (it really is a keyword, look at the keyword coloring of VS2005). Not to talk about TypedReference and ArgIterator yet. So, what is it and what does it do?
阅读全文
摘要:在之前介绍Jit层脱壳原理时曾提到两个难点,
1。方法体的局部变量签名。
2。方法体的SEH 异常处理表。
本文主要就第一个问题进行简单探讨,随带也涉及到一些第二个问题。
阅读全文
摘要:Net 内核级的加密保护工具。 采用的是纯虚拟机处理层的内核。 兼容目前所有的32位 .Net 框架版本,Net 1.1, 2.0, 3.0, 3.5 以及其所有子版本(如beta x,CTP,RC,sp x等)。 直接支持强名程序集的加密。提供了强名密钥管理功能,支持snk和pfx的强名文件。能自动使用匹配的强名密钥对加密的程序集进行重新签名。自动名称混淆保护功能。支持泛型类型以及泛型方法的加密...
阅读全文
摘要:应使用者的要求,增加了反制静态编译工具查看程序集完整结构的功能。
当然首当其冲的就是Reflector了。
个人认为,加密最主要的就是加密方法代码,结构啥的并不是重点,
如果是做中间件、类库啥的,结构还非得给用户看不可。
试用版开放了 常规模式的 用户字符串加密 功能。
标准版将会提供名称自动混淆功能。
具体详情可参考软件界面中的即时提示信息。
程序中灰色不可用的选项是标准版或者专业版才提供的功能。
标准版将在这个周末正式发布。
阅读全文
摘要:主程序以及运行库兼容性更新:
修正ASP.Net 的兼容性。
修正anti ildasm2.0 在部分环境下不兼容的问题。
修正个别情况下泛型类型加密错误的问题,DNGuard全面支持泛型类型以及泛型方法加密了。
调整了运行库的壳,增加了兼容性。
试用版开放了数据流加密和托管资源加密功能。
增加对个别非CLS标准格式程序集的直接支持。该类程序集表现为加密时出现 Open MetaData Error 的错误提示。
注意事项:
不能将DNGuard的运行库和其它dotNet加密壳的运行库一起使用。也即不能将不同加密工具加密的程序集放在一起使用。
阅读全文
摘要:运行库兼容性更新。
采用的是纯虚拟机处理层的内核。
兼容目前所有的32位 .Net 框架版本,Net 1.1, 2.0, 3.0, 3.5 以及其所有子版本(如beta x,CTP,RC,sp x等)。
支持泛型方法的加密。
加密保护过程不依赖 ildasm 和 ilasm 。
支持 C++/CLI含本地代码的混合程序集的加密保护。
完全兼容其它纯混淆保护工具,不必担心其它混淆工具对ildasm设限导致无法加密。
加密后的程序集完全兼容其它整体加密或者打包、xbundler等保护方式。
阅读全文
摘要:一款 .Net 内核级的加密保护工具。
采用的是纯虚拟机处理层的内核。
兼容目前所有的32位 .Net 框架版本,Net 1.1, 2.0, 3.0, 3.5 以及其所有子版本(如beta x,CTP,RC,sp x等)。
支持泛型方法的加密。
加密保护过程不依赖 ildasm 和 ilasm 。
支持 C++/CLI含本地代码的混合程序集的加密保护。
完全兼容其它纯混淆保护工具,不必担心其它混淆工具对ildasm设限导致无法加密。
加密后的程序集完全兼容其它整体加密或者打包、xbundler等保护方式。
阅读全文