Gina for Windows XP in SafeMode

不知道现在还有多少人在使用xp,个人感觉像xp之类的系统早就应该退役了。但是相信还有很多人坚守在xp的阵地上,如果是作为一个游戏玩家也会发现很多的游戏已经抛弃了xp了,这里要说的是xp底下的一个小的技巧,说不上什么高深的技术。我提供的也只是这个问题的一个解决方法,当然也可能有别的解决方法,这个也不在本文的探讨范围之内。上面的是正常启动下的windows gina模块,而到了安全模式下不管设不设置这个东西系统都不会调用这个模块来启动自定义认证。

当然了这个东西还是有办法进行处理,让系统来加载自己的gina模块的。有的可能没有想到这个东西该怎么处理,当初这个东西也困扰了我好久,最后才想到既然登录是由winlogon.exe控制的,那干吗不直接从这个东西入手呢。事实证明这个想法是可行的,修改之后的效果:

修改的方法也比较简单,关键代码片段如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.text:01031B1A                 push    edi             ; nSize
.text:01031B1B                 push    esi             ; lpFilename
.text:01031B1C                 call    _WlpInitSideBySide@8 ; WlpInitSideBySide(x,x)
.text:01031B21                 mov     eax, [ebp+lpParameter]
.text:01031B27                 cmp     [eax+30h], ebx
.text:01031B2A                 push    edi             ; nSize
.text:01031B2B                 push    esi             ; lpDst
.text:01031B2C                 jz      short loc_1031B3B; 修改这个跳转.text:01031B2E                 push    offset aSystemrootSyst ; "%SystemRoot%\\system32\\msgina.dll"
.text:01031B33                 call    ds:__imp__ExpandEnvironmentStringsW@12 ; ExpandEnvironmentStringsW(x,x,x)
.text:01031B39                 jmp     short loc_1031B6B
.text:01031B3B ; ---------------------------------------------------------------------------
.text:01031B3B
.text:01031B3B loc_1031B3B:                            ; CODE XREF: WinMain(x,x,x,x)+4B9j
.text:01031B3B                 mov     edi, offset Default ; "msgina.dll"
.text:01031B40                 push    edi             ; lpDefault
.text:01031B41                 push    offset aGinadll ; "GinaDll"
.text:01031B46                 push    offset AppName  ; "WINLOGON"
.text:01031B4B                 call    ds:__imp__GetProfileStringW@20 ; GetProfileStringW(x,x,x,x,x)
.text:01031B51                 cmp     _g_Console, ebx
.text:01031B57                 jnz     short loc_1031B6B 
.text:01031B59                 cmp     _g_fHelpAssistantSession, ebx
.text:01031B5F                 jz      short loc_1031B6B
.text:01031B61                 push    edi             ; Source
.text:01031B62                 push    esi             ; Dest
.text:01031B63                 call    ds:__imp__wcscpy
.text:01031B69                 pop     ecx
.text:01031B6A                 pop     ecx
.text:01031B6B
.text:01031B6B loc_1031B6B:                            ; CODE XREF: WinMain(x,x,x,x)+4C6j
.text:01031B6B                                         ; WinMain(x,x,x,x)+4E4j ...
.text:01031B6B                 mov     edi, [ebp+lpParameter]
.text:01031B71                 push    0Ch
.text:01031B73                 lea     eax, [ebp+var_238]
.text:01031B79                 push    eax
.text:01031B7A                 push    esi
.text:01031B7B                 push    edi
.text:01031B7C                 call    _RtlCheckProcessParameters@16 ; RtlCheckProcessParameters(x,x,x,x)
.text:01031B81                 lea     eax, [ebp+var_21C]
.text:01031B87                 push    eax             ; int
.text:01031B88                 push    esi             ; lpLibFileName
.text:01031B89                 push    edi             ; int
.text:01031B8A                 mov     [ebp+var_21C], ebx
.text:01031B90                 call    _LoadGinaDll@12 ; LoadGinaDll(x,x,x)
.text:01031B95                 test    eax, eax
.text:01031B97                 jnz     short loc_1031BAB
.text:01031B99                 push    402h            ; uExitCode
.text:01031B9E                 call    ds:__imp__GetCurrentProcess@0 ; GetCurrentProcess()
.text:01031BA4                 push    eax             ; hProcess
.text:01031BA5                 call    ds:__imp__TerminateProcess@8 ; TerminateProcess(x,x)

原创文章,转载请注明: 转载自 obaby@mars

本文标题: 《Gina for Windows XP in SafeMode》

本文链接地址: http://www.h4ck.org.cn/2013/05/gina-for-windows-xp-in-safemode/

You may also like

发表评论

电子邮件地址不会被公开。 必填项已用*标注