在 per method 的dotNet加密中,首要解决的方法体对应关系,即在运行时加密壳如何确定当前要解密的方法体所对应的加密信息。
目前大部分加密壳都直接利用了dotNet的元数据来保存这种对应关系,我们知道在元数据中每个方法都会对应一个RVA值,加密壳可以直接把这个关系记录在RVA的地址处。在框架运行中RVA处的数据会被作为“方法体”在处理流程中直接传递,加密壳通过拦截框架处理流程中的函数,来对“方法体”进行分流处理。即先判断RVA处的数据是否“方法体加密对应信息”,如果是进入加密壳运行库的内部处理,不是则按原框架流程处理。
阅读全文……
.Net 加密原理,方法体加密信息对应关系的实现(一) [ 2007-09-01 | 原创作品 | rick@博客园 ]
.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文件。
阅读全文……
.Net 保护中的 native compile 方式 [ 2007-08-25 | 原创作品 | rick@博客园 ]
据宣传,这个功能就是将dotNet程序编译成native的本地代码,有代表性的相关工具有xenocode, themida 和 remotesoft。
他们实际上属于两类:
一、伪编译
就是把磁盘上的 dotNet程序转换成 win32 的程序,但运行后在内存中实际上还是dotNet程序,只是使用了一个win32 loader,把dotNet程序整体打包嵌入到了这个 win32 的loader中。
阅读全文……
他们实际上属于两类:
一、伪编译
就是把磁盘上的 dotNet程序转换成 win32 的程序,但运行后在内存中实际上还是dotNet程序,只是使用了一个win32 loader,把dotNet程序整体打包嵌入到了这个 win32 的loader中。
阅读全文……
DNGuard HVM 2007 更新[20070823] [ 2007-08-23 | 原创作品 | rick@博客园 ]
主程序更新,界面,进度显示,修正对个别非标准。Net程序集加密出错的bug。
运行库更新,修正asp.net 1.1下的个别兼容性问题。
泛型更新,修正之前最大只支持127个泛型参数的问题。
阅读全文……
运行库更新,修正asp.net 1.1下的个别兼容性问题。
泛型更新,修正之前最大只支持127个泛型参数的问题。
阅读全文……
解决Vista下文件名中带Update/Setup不能通过UAC认证的问题 [ 2007-08-21 | 原创作品 | rick@博客园 ]
dotNet MSIL中的一些不常见IL指令 [ 2007-08-21 | 原创作品 | rick@博客园 ]
[转载]Calling printf from C# - The tale of the hidde [ 2007-08-19 | 原创作品 | SSCLI ]
Browsing the SSCLI can be enlighting from time to time (if not all the time). Take a look at the following function implemented in console.cs:
[
HostProtection(UI=true)]
[CLSCompliant(false)]
publicstaticvoid WriteLine(String format, Object arg0, Object arg1, Object arg2,Object arg3, __arglist)
阅读全文……
[
HostProtection(UI=true)]
[CLSCompliant(false)]
publicstaticvoid WriteLine(String format, Object arg0, Object arg1, Object arg2,Object arg3, __arglist)
阅读全文……
让 .Net 程序 脱离 .net framework框架 运行的方法 [ 2007-08-19 | 原创作品 | rick@博客园 ]
.Net 框架目前逐步在普及了,仍然有很多人在寻找如何让.NET程序脱离.NET框架的方法。
现成的工具有 Xenocode 的postbuidle或者vas,还有 Salamander .NET Linker .
另外还有 MaxToCode 作者以前做的 framework linker. 以及一些支持注册表模拟和文件模拟的打包工具molebox,thinstall等.
最后还有某网友(应其要求隐去网名) 兜售的一个实现方法.
阅读全文……
现成的工具有 Xenocode 的postbuidle或者vas,还有 Salamander .NET Linker .
另外还有 MaxToCode 作者以前做的 framework linker. 以及一些支持注册表模拟和文件模拟的打包工具molebox,thinstall等.
最后还有某网友(应其要求隐去网名) 兜售的一个实现方法.
阅读全文……
浅谈.Net脱壳中方法体的局部变量签名还原 [ 2007-08-13 | 原创作品 | rick@博客园 ]