在 dnSpy 中查看数组类型

逆向工程 二元分析 。网
2021-07-07 05:09:05

我正在调试一个 .NET 应用程序并看到一个本地数组的声明:

$ArrayType$$$BY05PAD $ArrayType$$$BY05PAD;

我中断了使用该 (char*) 数组中的数据的指令:

num9 = <Module>.strtoul(*(ref $ArrayType$$$BY05PAD + 4), null, 10);

在调用 strtoul 之前,我想在十六进制编辑器中显示 *(ref $ArrayType$$$BY05PAD + 4) 的内容,但这不是监视窗口中的有效表达式,它不会显示为本地表达式多变的。如何检查原始场内存?

1个回答

那些被标识为raw locals. 您可以启用转到自己的知名度OptionsDebug菜单。

在此处输入图片说明

之后,您将能够在本地窗口中看到这些元素。

在此处输入图片说明

从那里你可以右键单击它并选择Show in Memory Window->Memory 1

在此处输入图片说明

并分析数据:

在此处输入图片说明

但这并不是我们工作的结束。这些只是指针,所以我们的数组包含这样的地址(小端):

[0x610245D4,0x610245D7,0x610245DA,0x610245DD,0x610245E0]

因此,如果您的示例尝试访问偏移量+4,它将获得第二个地址,如果我们在那里导航,Memory window我们将看到将传递给strtoul方法的字符串

在此处输入图片说明