Kaby LakeとRyzen をブロックする更新、調べてみたら記事とちょっと違った話
最新CPUのWindows Updateを阻止するMicrosoftの施策を無効化してWindows 7/8.1でも自動更新できるパッチを有志が作成 - GIGAZINE
有志の1人であるZeffy氏は、KB4012218をリバースエンジニアリングしたところ、KB4012218を通じて提供された2017年3月版の wuaueng.dllの中に「IsCPUSupported(void)」と「IsDeviceServiceable(void)」という2つの新規 機能を発見しました。Zeffy氏によると2つの追加機能によってWindows Updateを受けるPCのCPUをチェックしており、これらの関数を「1」に書き換えることで、マシンのCPU情報を「supported CPU」と変更して、CPU検閲による更新プログラム配布のブロックを回避するとのこと。 |
気になってたので調べてみた。
SUB_L500717B5: cmp dword ptr [L50225E38],00000000h jz L500717FC call SUB_L500BCEF9 // <- IsCPUSupported? mov [L50225E3C],eax call SUB_L50195F4E // <- __AreTestKeysAllowed() ? test eax,eax jz L500717F5 push 00000001h push 00000000h push SWC50071804_ForceUnsupportedCPU push SWC50071830_SOFTWARE_Microsoft_Windows_Curre push 80000002h call SUB_L5018FF8A cmp eax,00000001h jnz L500717F5 and dword ptr [L50225E3C],00000000h L500717F5: and dword ptr [L50225E38],00000000h L500717FC: mov eax,[L50225E3C] retn ;------------------------------------------------------------------------------ Align 4 SWC50071804_ForceUnsupportedCPU: unicode 'ForceUnsupportedCPU',0000h Align 8 SWC50071830_SOFTWARE_Microsoft_Windows_Curre: unicode 'SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Test\Scan',0000h |
IsDeviceServiceable.asm ・ GitHub
zeffy 氏のソース見て見ると、 IsDeviceServiceable とか IsCPUSupported と言う関数が存在する訳ではないらしく、 その関数に便宜的に名前を付けたらしい
で、どうやらレジストリで強制的にサポートを有効にするものがあるのだけど、それがUpdate Services\autest.cab にはいっている AreTestKeysAllowed と言う関数によって有効にするかどうか制御されているようだ。
その部分がいじれないので、AreTestKeysAllowed が強制的に1になるように小細工して、レジストリ 'SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Test\Scan の ForceUnsupportedCPU を 1に設定して、強制的に非サポートのCPUとしてふるまわせることも可能にできるらしい。
実際、コードエリアを書き換える必要はなく、X86版の場合は、
L50225E38 を 0、L50225E3C を 1にするだけで、機能するはずなので、コードを書き換えてるわけではなく、コード上の変数領域を書き換えてるだけと言うオチだということが分かる。
最後にまとめ
「IsCPUSupported(void)」と「IsDeviceServiceable(void)」という2つの新規 Zeffy氏によると2つの追加 Updateを受けるPCのCPUをチェックしており、 CPU」と変更して、CPU検閲による更新プログラム配布のブロックを回避するとのこと。 |
修正するとこういう事
Zeffy氏は、「公開した解決策の唯一にして最大の欠点は、wuaueng.dllの内容が更新される度に新しいパッチを適用する必要があることです」
とのことだけど、処理が、シンプルなので、恐らく自動でパッチを当てることもできると予測できるし、DLLインジェクションを行えば、パッチ当てなくても済むんじゃないかなと思います・ω・
wuauengは改ざん防止の対象(今に始まったことではない)なので、
どのみちホットパッチが実践的かと。
wuauengは改ざん防止の対象(今に始まったことではない)なので、
どのみちホットパッチが実践的かと。