看啥推荐读物
专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

顶级技术:CLR/JIT操纵字符串的内存地址

dotNET跨平台  · 公众号  ·  · 2023-09-06 19:55
1.前言一个字符串的存储基本上是分为前端存储和后端存储两种状态,前端存储即Roslyn编译之后存储在托管DLL里面,后端存储即JIT加载之后,存储在内存里面。如果加密后的字符串则有可能在前端和后端分别被更改和移位。这个时候如果想要找出锁定的字符串,则需要对CLR/JIT进行分析,本篇来看下。2.概述一:例子前端存储意即托管DLL里面的字符串存储位置在托管PE-》.Net目录-》数据流-》#US项里面。如果不加密直接修改#us项即可。如果加密了,这个时候就可能需要解密,或者到后端去进行寻找。这里看下后端JIT寻找,如何寻找呢?可以通过以下环境变量,设置JIT的日志。DOTNET_JItDump=Main这里是Main函数的日志。以下代码为例:static void Main(string[] args){ string str = "abcdefg"; Console.WriteLine(str);}很简单的这段代码,字符串实例str存储一段字符串。这个字符 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照