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つのファイル。
こっちは動いたよ・ω・
Comments