【问题标题】:Windows reverse engineering: find a specific Windows structureWindows 逆向工程:找到特定的 Windows 结构
【发布时间】:2014-05-22 09:11:50
【问题描述】:

我正在使用 Windbg 在 Windows (x64) 内核上进行一些反向操作。 我尝试确定由以下字节表示的结构:

0e 00 10 00 00 00 00 00 - 90 db fe db 12 00 00 00

我假设:

  • 90 db fe db 12 00 00 00 是指向字符串的指针

kd> d 12dbfedb90

00000012`dcec7210 63 00 6f 00 75 00 6e - 00 74 00 72 00 79 00 00 c.o.u.n.t.r.y.

  • 0e 00是字符串的大小
  • 10 00 是带有终止空字节的字符串的大小

所以我认为原始结构如下所示:

typedef struct _SSTR {
    WORD   wStringLen;
    WORD   wStringWithNullCharLen; // Must be wStringLen + 1
    DWORD  dwReserved; // Must be 0
    PWSTR  pwString;
} SSTR;
typedef SSTR *PSSTR;

这个结构可能记录在 MSDN 中,但我没有找到任何东西......与这些字节对应的 Windows 结构是什么?

【问题讨论】:

  • 为什么不看看访问它的 API?

标签: c windows assembly reverse-engineering windbg


【解决方案1】:

看起来像

typedef struct _STRING {
  USHORT Length;
  USHORT MaximumLength;
  PCHAR  Buffer;
} STRING, OEM_STRING, *PSTRING;

来自http://msdn.microsoft.com/en-us/library/ms648424(v=vs.85).aspx

您的dwReserved 在其中填充PCHAR Buffer 指针。

或者可以是http://msdn.microsoft.com/en-us/library/windows/hardware/ff564879(v=vs.85).aspx 这很相似

typedef struct _UNICODE_STRING {
  USHORT Length;
  USHORT MaximumLength;
  PWSTR  Buffer;
} UNICODE_STRING, *PUNICODE_STRING;

【讨论】:

  • Dxxn 快!你听说过win32结构吗? S-)
  • 是一个UNICODE_STRING,注意它指向的字符串是一个宽字符串。您可以使用 dS 在 WinDbg 中转储 UNICODE_STRING 结构
猜你喜欢
  • 2017-03-29
  • 2016-09-07
  • 1970-01-01
  • 2010-09-08
  • 2012-10-09
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多