Windows逆向工程:查找特定的Windows结构

时间:2014-05-22 09:11:50

标签: c windows assembly reverse-engineering windbg

我在使用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结构是什么?

1 个答案:

答案 0 :(得分:4)

看起来像

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;