前面介绍了虚拟机预处理层的加密壳核心的实现,今回将在这个基础上介绍另一个目前主流的加密壳核心实现方式--EE、Jit双层加密壳核心
前一回的核心模式解决了反射漏洞的问题,今回将就双层模式介绍两种实现实例。
在今回的双层核心中,就是保留前回的核心部分,并增加核心在 Jit 层的Hook。
阅读全文……
.Net 加密原理,EE,Jit双层加密壳核心的实现(五) [ 2007-09-06 | 原创作品 | rick@博客园 ]
让 .Net 程序 脱离 .net framework框架 运行的方法(补充) [ 2007-09-05 | 原创作品 | rick@博客园 ]
前面介绍了 让 .Net 程序 脱离 .net framework框架 运行的方法 ,
但是有些朋友应用中还是遇到了一些问题,主要时需要自己提取框架程序以及应用的dll问题。
这里介绍一个偷懒提取方式。
我们可以利用 Remotesoft linker的试用版来提取,试用版的获取
阅读全文……
但是有些朋友应用中还是遇到了一些问题,主要时需要自己提取框架程序以及应用的dll问题。
这里介绍一个偷懒提取方式。
我们可以利用 Remotesoft linker的试用版来提取,试用版的获取
阅读全文……
泛型,.Net 加解密中的一个麻烦 [ 2007-09-04 | 原创作品 | rick@博客园 ]
.Net中的泛型和C++中的模版很相似,但在编译行为上有些不同。
之前做DNGuard HVM 时就遇到了加密泛型的麻烦问题,最近又发现了泛型在 ngen 加强保护模式下也有问题,在。Net解密中它同样也是一个麻烦。
C++中的模版在编译时就生成了实例代码,出现代码膨胀。
阅读全文……
之前做DNGuard HVM 时就遇到了加密泛型的麻烦问题,最近又发现了泛型在 ngen 加强保护模式下也有问题,在。Net解密中它同样也是一个麻烦。
C++中的模版在编译时就生成了实例代码,出现代码膨胀。
阅读全文……
.Net 加密原理,虚拟机预处理层加密壳核心的实现(四) [ 2007-09-04 | 原创作品 | rick@博客园 ]
.Net Native Image 加强保护的模式在 ORM、 AOP 中的问题 [ 2007-09-03 | 原创作品 | rick@博客园 ]
前面我们讨论了 ngen 生成的 ni 文件的还原,以及它的加强保护方式阻止还原。
今天我在测试一个 ORM 程序时发现, 用加强保护模式的 ni 文件运行会出现
BadImageFormat 的 异常。
我用ORM程序测试 HVM 核心,顺便也测试了一下加强保护模式的 ni 文件 。
阅读全文……
今天我在测试一个 ORM 程序时发现, 用加强保护模式的 ni 文件运行会出现
BadImageFormat 的 异常。
我用ORM程序测试 HVM 核心,顺便也测试了一下加强保护模式的 ni 文件 。
阅读全文……
.Net 加密原理,EE层加密壳核心的改进(三) [ 2007-09-03 | 原创作品 | rick@博客园 ]
前面介绍了 EE 层加密壳核心的实现,但是那个实现模式存在反射漏洞,
今回介绍针对反射,对核心的增强方法。
方式一、破坏反射
反射是通过调用 MethodInfo 的 GetMethodBody ()来获取 MethodBody 对象。
阅读全文……
今回介绍针对反射,对核心的增强方法。
方式一、破坏反射
反射是通过调用 MethodInfo 的 GetMethodBody ()来获取 MethodBody 对象。
阅读全文……
.Net 加密原理, 纯EE层加密壳内核的实现(二) [ 2007-09-02 | 原创作品 | rick@博客园 ]
在上一回 .Net 加密原理,方法体加密信息对应关系的实现 中介绍了实现加密壳首要解决的基础问题,
今回以第一种实现模式介绍如何实现一个纯EE层(mscorwks.dll)的加密壳内核。
首先确定 “方法体加密对应信息” 直接通过元数据来保存。
这里我们使用最简单的记录方式--记录一个四字节的指针信息。
阅读全文……
今回以第一种实现模式介绍如何实现一个纯EE层(mscorwks.dll)的加密壳内核。
首先确定 “方法体加密对应信息” 直接通过元数据来保存。
这里我们使用最简单的记录方式--记录一个四字节的指针信息。
阅读全文……
.Net 加密原理,方法体加密信息对应关系的实现(一) [ 2007-09-01 | 原创作品 | rick@博客园 ]
在 per method 的dotNet加密中,首要解决的方法体对应关系,即在运行时加密壳如何确定当前要解密的方法体所对应的加密信息。
目前大部分加密壳都直接利用了dotNet的元数据来保存这种对应关系,我们知道在元数据中每个方法都会对应一个RVA值,加密壳可以直接把这个关系记录在RVA的地址处。在框架运行中RVA处的数据会被作为“方法体”在处理流程中直接传递,加密壳通过拦截框架处理流程中的函数,来对“方法体”进行分流处理。即先判断RVA处的数据是否“方法体加密对应信息”,如果是进入加密壳运行库的内部处理,不是则按原框架流程处理。
阅读全文……
目前大部分加密壳都直接利用了dotNet的元数据来保存这种对应关系,我们知道在元数据中每个方法都会对应一个RVA值,加密壳可以直接把这个关系记录在RVA的地址处。在框架运行中RVA处的数据会被作为“方法体”在处理流程中直接传递,加密壳通过拦截框架处理流程中的函数,来对“方法体”进行分流处理。即先判断RVA处的数据是否“方法体加密对应信息”,如果是进入加密壳运行库的内部处理,不是则按原框架流程处理。
阅读全文……
.Net Native Image 还原的原理和加强保护的方法 [ 2007-08-30 | 原创作品 | rick@博客园 ]
在 net 2.0 中 ngen 能生成 native code 的 image,但是它同时会保留原始程序集的 MetaData 和ILCode 。
这就是还原的关键。同样的,知道了还原方法后加强保护也很容易实现。
ni 文件中的元数据和普通元数据相比多包含了一个 NativeHeader。
在 NativeHeader 中第12个入口是 OrgMetaData的 RVA和Size,第13个入口是 OrgILcode的 RVA 和Size。
阅读全文……
这就是还原的关键。同样的,知道了还原方法后加强保护也很容易实现。
ni 文件中的元数据和普通元数据相比多包含了一个 NativeHeader。
在 NativeHeader 中第12个入口是 OrgMetaData的 RVA和Size,第13个入口是 OrgILcode的 RVA 和Size。
阅读全文……
native compile 保护的dotNet本地程序还原成dotNet IL程序集 [ 2007-08-27 | 原创作品 | rick@博客园 ]
前面讨论了 .Net 保护中的 native compile 方式 。
提到了 native compile的两种方式 伪编译 和 ngen 编译。仍然没有像C++那样的完全native的编译。
这里要讨论的就是 ngen编译 生成的 ni 文件。
前面讨论时我们提到了fetion框架中的 fetionvm.srm文件。
阅读全文……
提到了 native compile的两种方式 伪编译 和 ngen 编译。仍然没有像C++那样的完全native的编译。
这里要讨论的就是 ngen编译 生成的 ni 文件。
前面讨论时我们提到了fetion框架中的 fetionvm.srm文件。
阅读全文……