小编Nef*_*ius的帖子

如何检查Windows用户是否设置了密码?

我不知道这很难解决,但我在这里.

我正在开发一个网络支持客户端,它必须检测当前登录用户是否设置了密码.我与WMI检查试了一下PasswordRequired在房地产Win32_UserAccount类,但它返回false即使我的账户密码保护.我没有想法......

(背景:我需要这个信息告诉用户他必须设置一个,以便我可以通过远程桌面连接到他,如果帐户是"不受保护的",这不是很高兴.如果有办法绕过这个我我也接受不同的解决方案.)

真诚的你的
Nefarius

比我想象的更容易,我使用WinAPI函数管理它,LogonUser并为您提供这个简单的包装代码:

    private bool PasswordRequired
    {
        get
        {
            IntPtr phToken;

            // http://www.pinvoke.net/default.aspx/advapi32/LogonUser.html
            bool loggedIn = LogonUser(Environment.UserName,
                null,
                "",
                (int)LogonType.LOGON32_LOGON_INTERACTIVE,
                (int)LogonProvider.LOGON32_PROVIDER_DEFAULT,
                out phToken);

            int error = Marshal.GetLastWin32Error();

            if (phToken != IntPtr.Zero)
                // http://www.pinvoke.net/default.aspx/kernel32/CloseHandle.html
                CloseHandle(phToken);

            // 1327 = empty password
            if (loggedIn || error == 1327)
                return false;
            else
                return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这正是我所需要的,谢谢大家快速而有能力的答案,我总是可以依靠你!=)

c# wmi

9
推荐指数
1
解决办法
4653
查看次数

使用注入的 DLL 代码干扰 Win32 消息循环 (SetWindowsHookEx)

大家好!

经过几个小时的深入谷歌,我终于到了这里。我将直接切入正题:我将要“刷新”我的 C/C++ 技能并再次获得非托管世界的经验。作为一项“基本”任务,我开发了一个小键盘记录器(仅包含 Windows API 的几行代码),但现在我想使用“隐身”功能对其进行扩展。因此,我将代码放入 Win32 DLL 中,您可以在此处找到它的内容。您会注意到,其中有一个非常有问题的部分:

  MSG msg;
 BOOL bRet;

 while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
 { 
  if (bRet == -1)
  {
   return FALSE;
  }
  else
  {
   TranslateMessage(&msg); 
   DispatchMessage(&msg); 
  }
 }
Run Code Online (Sandbox Code Playgroud)

是的,这是一个普通的消息循环 - 在我的情况下会引起麻烦。我将此 DLL 注入到“受害者”可执行文件(例如 VLC 媒体播放器)中以欺骗 AV/应用程序防火墙,到目前为止它可以正常工作,注入本身完美无缺。现在是大的但是:当然,无尽的 while 循环现在冻结了整个目标应用程序(没有它,我的钩子回调永远不会被执行)这并不是真正的计划......在潜入 MSDN 库的一半并尝试了谷歌给了我很多“解决方案”;我放弃。

甚至有可能评估“受害者”进程的消息循环而不阻塞它自己的业务但提供我的键盘钩子回调来工作?

真诚的,奈法留斯

c c++ dll winapi code-injection

3
推荐指数
1
解决办法
2739
查看次数

标签 统计

c ×1

c# ×1

c++ ×1

code-injection ×1

dll ×1

winapi ×1

wmi ×1