AM4 Chipset のPCにWindows 2000を入れる実験 その6
AM4 Chipset のPCにWindows 2000を入れる実験 その1
AM4 Chipset のPCにWindows 2000を入れる実験 その2
AM4 Chipset のPCにWindows 2000を入れる実験 その3
AM4 Chipset のPCにWindows 2000を入れる実験 その4
AM4 Chipset のPCにWindows 2000を入れる実験 その5
Windows XPで動いてる acpi.sysと storport.sys をWin2000で動くくように関数を削った後
XPでも動作するのを確認した上でWin2000に組み込んでみました
ところが結果は暗転後点滅
ふと、暗転した画面を見ながらこれBSoDも出ずにどこかでフリーズしてるだけじゃね?
って思ったので作ったISOをVMに入れてみることにしました
ほんとにダメでした
ただ、第2パラメータが0でないなら光明アリ!
調べればいいのです(フラグ)
L8001EFD8: push ebp mov ebp,esp sub esp,00000044h mov ecx,[ebp+10h] and byte ptr [L80019F41],00h push ebx mov ebx,[ebp+08h] and byte ptr [ebp-01h],00h push esi push edi push 00000001h pop eax xor edi,edi mov [L80019F40],al mov [ecx],eax cmp [ebx],edi mov [ebp-08h],eax mov [ebp-0Ch],edi mov [ebp-10h],edi jbe L8001F05A mov dword ptr [ebp+10h],L80018E7A mov esi,[ebp+10h] L8001F015: mov eax,[ebp+10h] cmp byte ptr [eax+01h],00h jz L8001F04A movzx edi,[eax] push 00000001h mov ecx,edi pop eax shl eax,cl push eax call jmp_ntoskrnl.exe!KeSetSystemAffinityThread mov eax,FFDFF000h mov esi,[eax+20h] mov ax,[ebx+edi*4+04h] add esi,0000037Ch inc [ebp-0Ch] xor edi,edi mov [esi+04h],ax L8001F04A: inc [ebp-10h] add dword ptr [ebp+10h],00000005h mov eax,[ebp-10h] cmp eax,[ebx] jc L8001F015 jmp L8001F05D L8001F05A: mov esi,[ebp+10h] L8001F05D: cmp [ebp-0Ch],edi jz L8001F067 call jmp_ntoskrnl.exe!KeRevertToUserAffinityThread L8001F067: cmp [esi+04h],di jz L8001F071 mov byte ptr [ebp-01h],01h L8001F071: lea eax,[ebp-44h] push 00000024h push eax call jmp_ntoskrnl.exe!RtlZeroMemory mov cl,[L8001A0C9] xor al,al test cl,cl mov [ebp-44h],al jz L8001F0A4 movzx ecx,cl inc al shl al,cl xor ecx,ecx cmp byte ptr [L80018E68],01h setnz cl mov [ebp-44h],al mov [ebp-43h],cl L8001F0A4: cmp byte ptr [ebp-01h],00h mov dword ptr [ebp-40h],L80016300 movzx eax,al mov [L8001A04C],eax mov [ebp-38h],edi mov dword ptr [ebp-34h],L80017F88 jz L8001F0E3 mov ax,[L8001A0C0] cmp ax,0064h ja L8001F0E3 movzx eax,ax mov [ebp-30h],eax mov dword ptr [ebp-2Ch],L80017FAC mov dword ptr [ebp-08h],00000002h L8001F0E3: mov ax,[L8001A0C2] cmp ax,A000h jc L8001F0F9 add ax,6000h mov [L8001A0C2],ax L8001F0F9: cmp ax,03E8h ja L8001F12B cmp byte ptr [ebp-01h],00h jz L8001F12B cmp [L8001A0A8],edi jz L8001F12B cmp dword ptr [ebp-0Ch],00000001h jnz L8001F12B mov ecx,[ebp-08h] movzx eax,ax shl ecx,03h inc [ebp-08h] mov [ebp+ecx-38h],eax mov dword ptr [ebp+ecx-34h],L8001805C L8001F12B: cmp [L80018FF0],edi mov edi,[ntoskrnl.exe!ZwPowerInformation] jnz L8001F14D mov eax,[ebp-08h] push 00000000h mov [ebp-3Ch],eax push 00000000h lea eax,[ebp-44h] push 00000024h push eax push 00000007h call edi L8001F14D: |
Win2000のHALなんですが
赤字の箇所でクラッシュしてるんですが、XPにはAPIの第1引数未使用で、水色の部分丸ごと処理が無かったりします。ここに0が入ってると2000はクラッシュするわけです
というわけでここが0の時スキップする処理を入れてみました
症状悪化。
余分な処理の部分が別のハンドラで実装されていて、その部分が欠落してるのでしょうね
とりあえず、先が見えないのでUSBボードに続いて、追加でAHCIのボード購入することにしたのですが、検証のための追加ハードウェアの予算が当初よりオーバー
というわけでPayPal(このサイトの左下) / もしくはアマゾンギフト(Twitter DMまたはメール)の寄付は歓迎なのです ((((・ω・))))
Comments