欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
采用Native 引导方式的.Net加密保护 Windows 2003 上使用 Windows Live Writer
未知  .Net程序集的不同加载方式,以及其在内存中格式
[ 发布日期:17年前 (2008-05-15) ]   [ 来自:rick@博客园 ] [分类:原创作品]
.Net程序集除了正常的有框架自动按需载入外,我们还可以通过反射手动载入程序集。

其中反射载入程序集有一种方式就是 以字节流的方式载入程序集。而不是直接从磁盘文件载入。

很多.Net压缩壳,和整体保护壳都采用了这种方式。



这种方式载入的程序集和从磁盘文件载入的程序集,其内存属性是不一样的。

字节流载入的内存属性是 MEM_MAPPED .

文件方式载入的内存属性是  MEM_IMAGE 。

(注:指使用api函数 VirtualQuery 获取的内存信息)



在 .Net 1.1中 这两种内存影像的布局是一样的,都是按照pe header的sections进行了内存映射的。



但是在 .Net 2.0 中这种情况变化了,字节流加载的程序集。在内存中的布局和它原始的字节流一样。没有按照pe header进行section的映射。



如果要进行程序集的整体dump,就需要考虑这两种不同的加载模式。

字节流加载的程序集,在获取Assembly的Location属性时会异常。



加密壳加密后的程序集,如果需要兼容后续使用压缩壳或整体加密壳再次保护,也需要在运行时考虑这种情况。

DNGuard 从2.6起就已经考虑处理了这种情况。
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/227
复制引用地址https://www.rickw.cn/trackback/227/GBK
[ 分类:原创作品  | 查看:4029 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5