【发布时间】:2020-09-02 10:01:51
【问题描述】:
我目前正在研究一个主题,老实说,我缺乏知识,甚至无法确定它是否可能。
我想知道当我没有源/PDB 时是否可以理解 .NET 应用程序的进程内存。理解我的意思是,如果我找到一些起点,比如已知的字符串值,我是否可以重建一个对象图。
我们希望保护从加密配置文件反序列化的程序配置。它在内存中是未加密的。配置图中的单个值并不是真正的秘密,但图本身是有价值的。
问题是是否可以仅从进程内存中重建图形?
鉴于攻击者知道如何使用 dnSpy 之类的东西来重建程序集(我们也在磁盘上保护)并且我们不想混淆配置程序集(这需要进行大量更改),攻击者可以根据我们进程的原始内存重构或理解实例?
我尝试对此进行研究,但找不到正确的方向/好的关键字。
我知道存在诸如 CheatEngine 之类的工具,或者我可以简单地转储整个内存并尝试理解这一点。
但我想了解是否有 .NET 工具可以自动执行该过程:
- 使用配置类读取反编译的程序集
- 附加到进程并转储内存
- 理解位和字节,并结合反编译的类来重构实例层次结构
我的主要目标是决定是否需要对内存配置图进行额外保护。如果重建图形不容易,那么我认为不需要它。但如果它像反编译 .NET 应用程序的源代码一样简单,我认为需要一些保护。
【问题讨论】:
-
最终,没有办法保护 RAM 中的机密信息不让有权访问机器的人访问。如果垃圾收集器可以跟踪引用,那么严重的攻击者也可以。
-
您在一个问题中提出了许多问题。请专注于询问一个主题,该主题关注 .NET 中的内存管理或在运行应用程序时保护内存数据。