LSASS.EXE を Userdump ツールでデバッグしてみたよ
Windows 2000に tspkg.dll を組み込んだところ、イベントログが 5000はいて落ちてることが分かったので、 Userdumpツールで強制的にダンプファイルを吐き出させることにしました。
LsaSrv イベント 5000 認証パッケージを無効にします。
Userdump.exe を使用してダンプ ファイルを確認する方法
Download User Mode Process Dumper Version 8.1 from Official Microsoft Download Center
ツールの設定画面
設定したら再起動
よく分からない STOP: 0x0000CAFF というのが出た・ω・
クラッシュダンプができたのでWindbgで開いてみる。
まず、イベントログ通り 0x073004cで 0xc0000005 アクセスバイオレーションを起こしてるのを確認。
多分、どこかのアドレスから飛ばされてきたと推測できるので、ESP(0x00c5fc08)を見てみる
値は 0x6d826f57
6D826F3B SUB_L6D826F3B: 6D826F3B 8BFF mov edi,edi 6D826F3D 55 push ebp 6D826F3E 8BEC mov ebp,esp 6D826F40 833DC8C4826D01 cmp dword ptr [L6D82C4C8],00000001h 6D826F47 FF7508 push [ebp+08h] 6D826F4A 750F jnz L6D826F5B 6D826F4C A1BCC4826D mov eax,[L6D82C4BC] 6D826F51 FF90C0000000 call [eax+000000C0h] 6D826F57 8BD0 mov edx,eax 6D826F59 EB26 jmp L6D826F81 6D826F5B L6D826F5B: |
call 文で死んでるんだけど、前の eax に代入された 0x6d72c4bc番地を見てみると 0x785AF730が入っていて、そこから +0xc0 のオフセットアドレスを参照している
LMコマンドでモジュール一覧をチェック
lsasrv であることが分かりました。
L785AF730: dd SUB_L785541C2 dd SUB_L78572A0D dd L78552EE9 dd L7857961B dd L7857979E dd SUB_L7854CE0E dd SUB_L7854CDF0 dd SUB_L7854DC36 dd SUB_L78562D7D dd SUB_L7854DC6A dd SUB_L7854DC56 dd SUB_L7856D503 dd L7856D18B dd SUB_L7856D4C5 db 00h; db 00h; db 00h; db 00h; dd SUB_L7856D6C4 dd SUB_L7856D718 dd LsaIRegisterNotification dd LsaICancelNotification dd SUB_L7856DA4C dd SUB_L78569FC5 dd L78573520 dd LsaICallPackage dd LsaIFreeReturnBuffer dd LsaIGetCallInfo dd LsaICallPackageEx dd L7856A400 dd L7856A47A dd L7856A4D9 dd L7856A532 dd SUB_L7856A7A4 dd L7856A96D dd L7856A975 dd L7856A960   ; dd L7856AD8D dd L7856DBE9 dd L7856DC3A dd L7856AE94 dd L7856B0C6 dd LsaIAuditAccountLogon dd LsaICallPackagePassthrough dd 00000000h L785AF7D8: |
0x785AF730は、残念ながら、Windows 2000ではサイズ 0xa4 バイトの構造体だから、 +0xc0参照したら範囲外なんだ ・ω・;
L7DF00088: dd SUB_L7DE89DA1 dd SUB_L7DEB5758 dd L7DE83C18 dd L7DE6DDFA dd L7DEBAB81 dd SUB_L7DE630AB dd SUB_L7DE63086 dd SUB_L7DE69886 dd SUB_L7DEAF18D dd SUB_L7DE698AF dd SUB_L7DE8C7E1 dd LsaIImpersonateClient dd L7DEB21A6 dd SUB_L7DE6E7D2 db 00h; db 00h; db 00h; db 00h; dd SUB_L7DE8D8EB dd SUB_L7DE69547 dd LsaIRegisterNotification dd LsaICancelNotification dd SUB_L7DE6B136 dd SUB_L7DEB0C81 dd SUB_L7DE89A1B dd LsaICallPackage dd LsaIFreeReturnBuffer dd LsaIGetCallInfo dd LsaICallPackageEx dd L7DEB0F06 dd L7DEB0E24 dd L7DEB0E81 dd L7DEB0F87 dd SUB_L7DEB1299 dd L7DEB1484 dd L7DEB1491 dd L7DEB146D dd L7DEB1897 dd L7DEB23B7 dd L7DEB2528 dd L7DEB19A8 dd L7DEB1BCC dd LsaIAuditAccountLogon dd LsaICallPackagePassthrough dd SUB_L7DEA3A2B dd SUB_L7DE6DE5C dd SUB_L7DEA3AF6 dd SUB_L7DE6FEC5 dd SUB_L7DE6FFC7 dd L7DE6E817 dd L7DEB1EF4 dd LsaIAllocateHeapZero dd LsaIFreeHeap dd SUB_L7DE89F03 dd SUB_L7DEA3875 L7DF00158: |
こっちは、Windows XP。構造体サイズは 0xd0あることが分かるね。
+ 0xc0は LsaIAllocateHeapZero であることが分かったね ・ω・
Comments