.net - 访问 clr 的内部字符串列表

标签 .net string clr

我刚刚回答了question我说过,虽然字符串驻留很好,但它可能会成为一个安全问题,因为稍后可以轻松访问字符串值。

虽然我很确定这是真的:-)但我不确定它到底有多容易。我尝试用谷歌搜索这个主题,但没有得到相关结果(谷歌-fu在这方面很弱),所以然后我尝试一下大家。

您知道有什么“简单”的方法来访问应用程序域中感兴趣的字符串列表吗?我必须使用内存转储之类的东西还是有像 AppDomain.GetInteredStringsList() 这样的方法?

与此相关的是:从感兴趣的字符串中获取任何有用的数据真的有多容易。在字符串中存储敏感数据真的是一个安全漏洞吗?

最佳答案

这不是特别容易 - 但它是可行的。

基本上,如果您有任何可以进行内存转储的内容,您可以找到看起来像字符串对象的内存位。 (特别是,它们在开始时都具有相同的“指向类型信息的指针”,因此,如果您有示例字符串,那么您就可以了。)

顺便说一句,这与实习字符串没有什么关系。它不像所有字符串都被保留 - 只有字符串常量和用户显式保留的字符串。

关于.net - 访问 clr 的内部字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/388822/

相关文章:

c# - 执行栈和线程的栈和局部变量列表是否引用不同的栈?

metadata - 如何读取.net 程序集的元数据表

.net - 如何注销 ASP 成员(member)资格

.net - 签名工具错误 : Access is denied

java - 是否有 O(N) 解决方案来获取 List<String> 中出现次数最多的前 k 个字符串?

python - 如何在 python 中使用价格对字符串进行格式化?

python - Pandas 更新对随后修改的附加值的更改

.net - .NET Framework、CLR 和 Visual Studio 版本号如何相互关联?

c# - .NET 应用程序的最佳调度程序?

c# - 使用印度编号系统的逗号分隔符格式化数字字符串