wufuc

English | русский | Français | Deutsch | Magyar | [Português Brasileiro](../../wiki/README-(Português Brasileiro))
Disables the "Unsupported Hardware" message in Windows Update, and allows you to continue installing updates on Windows 7 and 8.1 systems with Intel Kaby Lake, AMD Ryzen, or other unsupported processors.
Downloads 
-
Unstable buildsBroken until AppVeyor adds WDK support for Visual Studio 2017 (appveyor/ci#1554)
Preface
The changelog for Windows updates KB4012218 and KB4012219 included the following:
Enabled detection of processor generation and hardware support when PC tries to scan or download updates through Windows Update.
These updates marked the implementation of a policy change they announced some time ago, where Microsoft stated that they would not be supporting Windows 7 or 8.1 on next-gen Intel, AMD and Qualcomm processors. This was essentially a big middle finger to anyone who decides to not "upgrade" to the steaming pile of 💩 known as Windows 10, especially considering the extended support periods for Windows 7 and 8.1 won't be ending until January 4, 2020 and January 10, 2023 respectively.
Some people with older Intel and AMD processors are also affected!
I've received user reports of the following CPUs all being blocked from receiving updates:
- Intel Atom Z530
- Intel Atom D525
- Intel Core i5-M 560
- Intel Core i5-4300M
- Intel Pentium B940
- AMD FX-8350
- AMD Turion 64 Mobile Technology ML-34
Bad Microsoft!
If you are interested, you can read my original write up on discovering the CPU check here.
Features
- Enables Windows Update on PCs with unsupported processors.
- Written in C, the best programming language. 😎
- Completely free (as in freedom) software.
- Does not modify any system files.
- Byte pattern-based patching, which means it will usually keep working even after new updates come out.
- Absolutely zero dependencies.
How it works
Basically, inside a system file called wuaueng.dll
there are two functions responsible for the CPU check: IsDeviceServiceable(void)
and IsCPUSupported(void)
.
IsDeviceServiceable
simply calls IsCPUSupported
once, and then re-uses the result that it receives on subsequent calls.
My patch takes advantage of this behavior by patching a couple of boolean values and basically making Windows Update think that it has already checked your processor, and the result was that it is indeed supported.
- The installer registers wufuc as a custom Application Verifier provider.
- When a
svchost.exe
process starts, the Windows PE loader automatically loads wufuc into its virtual address space. - After that, wufuc will then check the command line of the process it was loaded into, then install some API hooks when appropriate:
LoadLibraryExW
hook will automatically patchwuaueng.dll
as soon as it is loaded.RegQueryValueExW
hook is necessary to provide compatibility with attempts by other third-parties at bypassing the CPU check. (see issue #100)
- If wufuc gets loaded by a
svchost.exe
process that isn't related to Windows Update, it goes into a dormant state and no hooks are applied.
Sponsors
Advanced Installer
The installer packages are created with Advanced Installer using an open source license. Advanced Installer's intuitive and friendly user interface allowed me to quickly create a feature complete installer with minimal effort. Check it out!
Special thanks
- Alex Ionescu (@ionescu007) for his "Hooking Nirvana" presentation at REcon 2015 and its corresponding repository of example code. wufuc v0.8+ could not have been possible without his great work.
- Wen Jia Liu (@wj32) for his awesome program Process Hacker which has been absolutely instrumental in the development of wufuc, and also for his
phnt
headers. - Duncan Ogilvie (@mrexodia) for his
patternfind.cpp
algorithm from x64dbg.