美文网首页
.net文件结构之托管资源

.net文件结构之托管资源

作者: 四宝日记 | 来源:发表于2020-04-14 11:59 被阅读0次

由于在书里没有找到具体的托管资源数据结构,这个过程主要通过dnlib源码进行分析。

以上是本次研究使用的样本,目的是能够顺利读取到托管数据中的PE文件,即“资源正文”(便于理解)。

源码开始就做了一个4字节的判定,因此在不明含义的时候,先把他当作一个四字节的固定标识来看。

接着是一个checkreader函数:

也就是标识符,后面4个字节(4-8)为numReader,8-12就是readersdSize,后面是resourceReaderFullName和resourceSetFullName两个字符串。

接下来,是三个整型,分别为version,numResources, numUserTypes:

可以看到,版本2,资源数目为2个:

验证一下:

顺便拿来另一个资源数据来看,版本2,资源数目12个。

后面就是基于numUserTypes读取了一波字符串,然后不当人的弄了一个reader的position赋值,~在C#里是按位取反运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0,所以 0000 0111 变成1111 1000:

复习了一下补码反码的知识:

负数 = 负数的绝对值按位取反+1

负数按位取反+1 =负数的绝对值

因此1111 1000值为-8

那也就是说,当前的位置(当前应该指向第0x0111个字节)会变成 (当前偏移+7)& 11111000,为0x0118。

之后基于numResources会连续获取两组整型数,offsets后面对的寻址有用。

获取到dataBaseOffset才算是真正即将开始资源正文,然后获取资源名称,和资源偏移加载资源:

至此,通过dataBase加上resourceOffset就能够准确地找到资源的正文了,前5字节为7bit编码整型数,表示资源类型。算法如下:

之后为正文内容,分析结束。

相关文章

  • .net文件结构之托管资源

    由于在书里没有找到具体的托管资源数据结构,这个过程主要通过dnlib源码进行分析。 以上是本次研究使用的样本,目的...

  • C#中关于非托管资源的释放

    托管资源与非托管资源的区别 资源分为托管资源和非托管资源。 托管资源是指由CLR管理分配和释放的资源,也就是我们直...

  • 2019-08-27

    express框架托管静态文件,以及设置监听端口 文档结构如下(20190827220505.png)

  • C#:如何手工释放资源

    .NET 平台在内存管理方面提供了GC(Garbage Collection),负责自动释放托管资源和内存回收的工...

  • 学习.NET需要掌握哪些方面

    一、C#开发 1、有关.NET体系结构的基本知识 CLR概念?在.NET中,程序编译过程?托管代码的优点?语言互操...

  • CAS 单点登录实现

    1 资源文件 资源下载地址:https://download.csdn.net/download/qq_15769...

  • .net文件结构之元数据流

    书上是这样说的: 数据结构差不多如下: 到此为止,都是可以理解的: 但后面就会让人摸不到头脑,原因就在这里: 这里...

  • 😂Android--详解项目是怎么跑起来的

    一、项目入口文件 对入口文件解析 二、界面布局 三、 资源结构 使用资源 定义资源(文本)image.png 引用...

  • 2019-09-16

    静态资源服务器默认展示页为/usr/local/Cellar/nginx内的html文件 自定义端口托管静态文件 ...

  • C#之托管与非托管资源

    C#中的数据类型 C#中的所有类型都是(直接或间接)从System.Object类型派生的。C#的类型被分成两大类...

网友评论

      本文标题:.net文件结构之托管资源

      本文链接:https://www.haomeiwen.com/subject/ycdnmhtx.html