Windows 8.1 SDK と開発キット

Windows 8 - Windows ストア アプリのデバッグ入門
Windows 8.1 用 Windows ソフトウェア開発キット (SDK)

Windows 8.1 開発キットが先日公開されました。というわけで、Debugger Tool を Windows 2000にインストールしてみました。

X86 Debuggers And Tools-x86_en-us.msi

インストール先がデフォルトで %programfiles%\Windows Kits\8.1\Debuggers\x86 になってる模様・ω・
バージョンは、6.3.9600.16384

動作しないのは

plmdebug.exe (Windows 8 ストアアプリのデバッグ用らしい)
Windows 8 アプリのテストを自動化する - Windows 8 アプリ開発者ブログ - Site Home - MSDN Blogs

umdh.exe NT Security Test: UMDH
Umdhtools.exe: Umdh.exe を使用してメモリ リークを検索する方法

後者が動かないのは、ntdll の NtGetNextThread によるものなんだけど 6.2.9200.16384 では動作してたので残念・ω・

 SUB_L00404F36:
          mov    edi,edi
          push    ebp
          mov    ebp,esp
          sub    esp,00000020h
          mov    eax,[L0040B000]
          xor    eax,ebp
          mov    [ebp-04h],eax
          and    dword ptr [ebp-20h],00000000h
          push    esi
          push    edi
          push    00000006h
          pop    ecx
          xor    esi,esi
          push    esi
          xor    eax,eax
          lea    edi,[ebp-1Ch]
          push    00000004h
          rep stosd
          call    [KERNEL32.dll!CreateToolhelp32Snapshot]
          mov    edi,eax
          test    edi,edi
          jnz    L00404F89
          call    [KERNEL32.dll!GetLastError]
          push    eax
          push    SSZ00401970_CreateToolhelp32Snapshot_failed_
          push    000002CCh
          push    SSZ00401928_base_avrf_umdh_gc_cpp
          call    SUB_L004041BE
          add    esp,00000010h
          jmp    L00404FF9
 L00404F89:
          lea    eax,[ebp-20h]
          push    eax
          push    edi
          mov    dword ptr [ebp-20h],0000001Ch
          call    [KERNEL32.dll!Thread32First]
          jmp    L00404FEE
 L00404F9D:
          mov    eax,[ebp+08h]
          cmp    [ebp-14h],eax
          jnz    L00404FE3
          push    [ebp-18h]
          push    00000000h
          push    00000008h
          call    [KERNEL32.dll!OpenThread]
          test    eax,eax
          jnz    L00404FD6
          call    [KERNEL32.dll!GetLastError]
          push    eax
          push    SSZ004019A4_OpenThread_failed_with_error____
          push    000002ECh
          push    SSZ00401928_base_avrf_umdh_gc_cpp
          call    SUB_L004041BE
          add    esp,00000010h
          jmp    L00404FE3
 L00404FD6:
          test    ebx,ebx
          jz     L00404FE2
          cmp    esi,[ebp+0Ch]
          jnc    L00404FE2
          mov    [ebx+esi*4],eax
 L00404FE2:
          inc    esi
 L00404FE3:
          lea    eax,[ebp-20h]
          push    eax
          push    edi
          call    [KERNEL32.dll!Thread32Next]
 L00404FEE:
          test    eax,eax
          jnz    L00404F9D
          push    edi
          call    [KERNEL32.dll!CloseHandle]
 L00404FF9:
          mov    ecx,[ebp-04h]
          pop    edi
          mov    eax,esi
          xor    ecx,ebp
          pop    esi
          call    SUB_L0040A52C
          leave
          retn    0008h

ちなみに従来の処理。

 SUB_L00405CF7:
      
;    mov    edi,edi
          push    ebp
          mov    ebp,esp
          push    ecx
          push    ebx
          push    esi
          push    edi
          lea    eax,[ebp-04h]
          mov    ebx,ecx
          xor    ecx,ecx
          mov    edi,edx
          push    eax
          push    ecx
          push    00000200h
          push    00000008h
          mov    esi,ecx
          mov    [ebp-04h],ecx
          push    ecx
          jmp    L00405D46
 L00405D1A:
          test    edi,edi
          jz     L00405D2B
          cmp    esi,[ebp+08h]
          jnc    L00405D2B
          mov    eax,[ebp-04h]
          mov    [edi+esi*4],eax
          jmp    L00405D37
 L00405D2B:
          push    [ebp-04h]
          call    [KERNEL32.dll!CloseHandle]
          mov    eax,[ebp-04h]
 L00405D37:
          lea    ecx,[ebp-04h]
          inc    esi
          push    ecx
          push    00000000h
          push    00000200h
          push    00000008h
          push    eax
 L00405D46:
          push    ebx
          call    [ntdll.dll!NtGetNextThread]
          test    eax,eax
          jns    L00405D1A
          pop    edi
          mov    eax,esi
          pop    esi
          pop    ebx
          mov    esp,ebp
          pop    ebp
          retn    0004h

要するにカーネル関数に変更したのね・ω・

一方 Orca は 5.0.9600.16384

Orca-x86_en-us.msi
a35cd6c9233b6ba3da66eecaa9190436.cab
fe38b2fd0d440e3c6740b626f51a22fc.cab
インストールに必要なのは個の3つのファイル。

こっちは動いたよ・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です