[ros-dev] WinLogon

Alex Ionescu ionucu at videotron.ca
Sat Aug 5 17:51:27 CEST 2006


Hervé Poussineau wrote:
> Hello,
> 
> 
> The goal is to be fully compatible with Windows 2000 WinLogon at the first
> time, and then add Remote Desktop functionality. I've currently managed to
> load Windows XP msgina.dll, but it doesn't work yet. For information, I
> mostly use these links:
> http://www.microsoft.com/technet/prodtechnol/windows2000serv/maintain/securi
> ty/msgina.mspx
> http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs/
> http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/se
> curity/authentication_functions.asp
> http://www.pgina.org/

http://www.microsoft.com/windows2000/docs/msgina.doc is a good
whitepaper as well.

 > I kept GUI-on-demand, but I moved the functionnality from Winlogon to
Gina.
> ReactOS Gina contains 2 User Interfaces: one in graphic mode (in gui.c) and
> the other in text mode (tui.c). By default, the graphical one is used.
> To use the text one, you have to add /CMDCONS parameter to your freeldr.ini.
> I know that Windows uses this parameter for Recovery Console, but we can
> change its name later.

Yeah, a name change would be wise.

> By the way, if I remember right, Windows asks for a
> username/password in text mode when using this switch. (May it be located in
> Windows Gina by chance?)

That's the ERD, which is implemented, believe it or not, as a system
driver! If you look at it with the .PDB you'll see it has a bunch of
functions for talking to ksecdd.sys and reading the password hash from
the registry. Winlogon/user-mode programs have nothign to do with it.

> For information, the second thing changed by
> /CMDCONS is the runned the shell. The shell program is read in
> HKLM\SOFTWARE\ReactOS\Windows NT\Winlogon\ConsoleShell key instead of
> HKLM\SOFTWARE\ReactOS\Windows NT\Winlogon\Shell, and defaults to cmd.exe
> instead of explorer.exe

Awesome!

> 
> I never disagree to beeing paid, even very little ;) By the way, at the
> moment, I'm only working on winlogon/msgina, which means the User Interface
> but not the authentification framework which is behind (lsass/advapi32)

Yes, that was the original plan for the SoC stuff too.

> 
> Now, let's move to the bad part of this email.
> 
> I've still some problems which I'm not sure to be able to solve myself.
> 1) SwitchDestkop seems to be not working. To test, remove the hack I've
> added in winlogon/wlx.c:CreateWindowStationAndDesktops and you will never
> see the shell.

Sadly my Win32K internals only apply to NT... Thomas worked on the
Desktop implementation, he should know.

> 2) The current shutdown procedure is not correct. I directly call
> NtShutdownSystem in Winlogon instead of notifying SMSS. See
> http://www.reactos.org/wiki/index.php/ShutdownProcess for more details about
> the shutdown process.

I know that the shutdown procedure is a bit broken in kernel-mode, but
again, I don't know how our SMSS stuff was designed.

> 3) And the last one, specially for Filip ;) When trying to enter a user name
> which is not Administrator, I get a BSOD in So, I'm asking here for help, if
> anyone can take a look at this.
> 
> Thanks,
> 
> Hervé
> 
> PS 1: Be sure that no new hardware wizard will appear at next boot, and try
> to add /CMDCONS to freeldr.ini. You will boot in text mode.
> PS 2: Try to press SHIFT during boot to prevent autologon and you will be
> able to see some Gina dialogs. Logoff is also supposed to work.
> 

I'll try that when I get the chance, cool!

-- 
Best regards,
Alex Ionescu
Project Lead, TinyKRNL
Kernel-Mode Software Design Engineer, ReactOS


More information about the Ros-dev mailing list