Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
83dcd53a3d | ||
![]() |
2336024cb8 | ||
![]() |
d5d83acef2 | ||
![]() |
83617ac0ea | ||
![]() |
653698943e | ||
![]() |
4e5cf59fb8 | ||
![]() |
abdcf32656 | ||
![]() |
2ee94cd1f7 | ||
![]() |
e958ac9fda | ||
![]() |
5b6d8d64ce | ||
![]() |
9d67915a21 | ||
![]() |
201ecefc97 | ||
![]() |
27d8100820 | ||
![]() |
9f1fd16d1f | ||
![]() |
6ae52846a3 | ||
![]() |
0200470e6b | ||
![]() |
0a18a3e8a7 | ||
![]() |
75c6a2bdfe | ||
![]() |
94af7a602b | ||
![]() |
6ab47c3cc9 | ||
![]() |
0a88d027f8 | ||
![]() |
8b6083915c | ||
![]() |
0930d67c99 | ||
![]() |
c0fc963bf4 | ||
![]() |
4f716a7c20 | ||
![]() |
280f695278 |
22
CONTRIBUTING.de-DE.md
Normal file
22
CONTRIBUTING.de-DE.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Richtlinien für die Fehlermeldung
|
||||||
|
|
||||||
|
[English](CONTRIBUTING.md) | [русский](CONTRIBUTING.ru-RU.md) | [Français](CONTRIBUTING.fr-FR.md) | **Deutsch** | [Magyar](CONTRIBUTING.hu-HU.md) | [Portuguese (Brazil)](CONTRIBUTING.pt-BR.md)
|
||||||
|
|
||||||
|
## Fehler melden [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
#### Bevor du eine Fehlermeldung aufsetzt, beachte bitte die folgenden Punkte:
|
||||||
|
|
||||||
|
- Benutzt du die [neueste stabile Version](../../releases/latest)?
|
||||||
|
- Hast du versucht den Rechner neu zu starten?
|
||||||
|
|
||||||
|
#### Nachdem du das überprüft hast, erstelle ein Fehlerbericht mit folgenden Informationen:
|
||||||
|
|
||||||
|
- Navigiere zum Ordner wo du wufuc installiert hast, und hänge der Fehlermeldung alle `*.log` Files an.
|
||||||
|
- Welche build-version benutzt du? Ein stabiles Release oder instabile AppVeyor builds?
|
||||||
|
- Was ist die File Version und/oder der SHA-1 hash von `C:\Windows\System32\wuaueng.dll`?
|
||||||
|
- Alles was du noch als relevant betrachtest.
|
||||||
|
|
||||||
|
## Richtlinie zur Schließung der Fehlermeldungen
|
||||||
|
|
||||||
|
- Fehlermeldungen die diese Informationen nicht haben (falls zutreffend) werden sofort geschlossen und der Ersteller wir auf diese Richtlinie verwiesen.
|
||||||
|
- Fehlermeldungen nach einer Woche ohne Reaktion vom Ersteller werden nach meinem Ermessen geschlossen.
|
@@ -1,6 +1,6 @@
|
|||||||
# Directives de contribution
|
# Directives de contribution
|
||||||
|
|
||||||
[English](CONTRIBUTING.md) | [русский](CONTRIBUTING.ru-RU.md) | **Français**
|
[English](CONTRIBUTING.md) | [русский](CONTRIBUTING.ru-RU.md) | **Français** | [Deutsch](CONTRIBUTING.de-DE.md) | [Magyar](CONTRIBUTING.hu-HU.md) | [Portuguese (Brazil)](CONTRIBUTING.pt-BR.md)
|
||||||
|
|
||||||
## Reporter un problème [](https://isitmaintained.com/project/zeffy/wufuc)
|
## Reporter un problème [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
23
CONTRIBUTING.hu-HU.md
Normal file
23
CONTRIBUTING.hu-HU.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Hozzájárulási irányelvek
|
||||||
|
|
||||||
|
[English](CONTRIBUTING.md) | [русский](CONTRIBUTING.ru-RU.md) | [Français](CONTRIBUTING.fr-FR.md) | [Deutsch](CONTRIBUTING.de-DE.md) | **Magyar** | [Portuguese (Brazil)](CONTRIBUTING.pt-BR.md)
|
||||||
|
|
||||||
|
## Hiba jelentése [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
#### Mielőtt jeleznél egy hibát, kérem ellenőrizd hogy:
|
||||||
|
|
||||||
|
- A [legújabb stabil verzió](../../releases/latest)t használod?
|
||||||
|
- Megpróbáltad újraindítani a számítógépet?
|
||||||
|
|
||||||
|
#### Miután ezeket ellenőrizted, hozz létre egy hibajelentést ezekkel az információkkal:
|
||||||
|
|
||||||
|
- Csatold a `*.log` fájlokat a könyvtárból, ahova a wufuc-ot telepítetted.
|
||||||
|
- Melyik build-et használtad? Stabil release vagy instabil AppVeyor build?
|
||||||
|
- Mi a `C:\Windows\System32\wuaueng.dll` fájl verziója és/vagy SHA-1 hash kódja?
|
||||||
|
- Bármi más információ amit hasznosnak látsz a hiba elhárításához
|
||||||
|
- Kérlek angolul jelentsed be a hibát.
|
||||||
|
|
||||||
|
## Hibazárási eljárás
|
||||||
|
|
||||||
|
- A hibajelentések amik nem tartalmazzák a fent kért adatokat be lesznek zárva és a hibajelentő figyelmét felhívjuk erre a dokumentumra.
|
||||||
|
- A hibajelentések amikben egy hét után nem reagál a hibajelentő, be lesznek zárva ha ezt így látom megfelelőnek.
|
@@ -1,6 +1,6 @@
|
|||||||
# Contributing guidelines
|
# Contributing guidelines
|
||||||
|
|
||||||
**English** | [русский](CONTRIBUTING.ru-RU.md) | [Français](CONTRIBUTING.fr-FR.md)
|
**English** | [русский](CONTRIBUTING.ru-RU.md) | [Français](CONTRIBUTING.fr-FR.md) | [Deutsch](CONTRIBUTING.de-DE.md) | [Magyar](CONTRIBUTING.de-HU.md) | [Portuguese (Brazil)](CONTRIBUTING.pt-BR.md)
|
||||||
|
|
||||||
## Reporting an issue [](https://isitmaintained.com/project/zeffy/wufuc)
|
## Reporting an issue [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
22
CONTRIBUTING.pt-BR.md
Normal file
22
CONTRIBUTING.pt-BR.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Contributing guidelines
|
||||||
|
|
||||||
|
[English](CONTRIBUTING.md) | [русский](CONTRIBUTING.ru-RU.md) | [Français](CONTRIBUTING.fr-FR.md) | [Deutsch](CONTRIBUTING.de-DE.md) | [Magyar](CONTRIBUTING.de-HU.md) | **Portuguese (Brazil)**
|
||||||
|
|
||||||
|
## Reportando problemas [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
#### Antes de criar um tópico de dúvidas, por favor verifique se:
|
||||||
|
|
||||||
|
- você está utilizando a última versão [latest stable version](../../releases/latest)?
|
||||||
|
- você já tentou reiniciar o seu PC?
|
||||||
|
|
||||||
|
#### Depois de confirmar os dois passos acima, por favor crie um tópico de dúvidas incluindo as seguintes informações:
|
||||||
|
|
||||||
|
- Acesse a pasta onde você instalou o wufuc, e anexe todos os arquivos `*.log` no seu tópico.
|
||||||
|
- Que versão você está utilizando? A versão estável ou instável?
|
||||||
|
- Qual a versão do arquivo e/ou SHA-1 hash do `C:\Windows\System32\wuaueng.dll`?
|
||||||
|
- Qualquer outra informação relevante que você acha que deve incluir.
|
||||||
|
|
||||||
|
## Política de encerramento
|
||||||
|
|
||||||
|
- Os tópicos de dúvidas que não tem as informações requisitadas acima (quando aplicável) será fechado imediatamente e o autor será direcionado para as normas de contribuição.
|
||||||
|
- Os tópicos que ficarem 1 semana sem responsta do autor original, será fechado a meu critério.
|
@@ -1,6 +1,6 @@
|
|||||||
# Инструкция для тех, кто желает помочь, внести вклад
|
# Инструкция для тех, кто желает помочь, внести вклад
|
||||||
|
|
||||||
[English](CONTRIBUTING.md) | **русский** | [Français](CONTRIBUTING.fr-FR.md)
|
[English](CONTRIBUTING.md) | **русский** | [Français](CONTRIBUTING.fr-FR.md) | [Deutsch](CONTRIBUTING.de-DE.md) | [Magyar](CONTRIBUTING.de-HU.md) | [Portuguese (Brazil)](CONTRIBUTING.pt-BR.md)
|
||||||
|
|
||||||
## Сообщайте об ошибках [](https://isitmaintained.com/project/zeffy/wufuc)
|
## Сообщайте об ошибках [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
56
README.de-DE.md
Normal file
56
README.de-DE.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
||||||
|
|
||||||
|
[English](README.md) | [русский](README.ru-RU.md) | [Français](README.fr-FR.md) | **Deutsch** | [Magyar](README.hu-HU.md) | [Portuguese (Brazil)](README.pt-BR.md)
|
||||||
|
|
||||||
|
[](https://pledgie.com/campaigns/34055)
|
||||||
|
|
||||||
|
Das Tool schaltet die "Unsupported Hardware" Nachricht in Windows Update ab, und erlaub dir auf Windows 7 und 8.1 Systemen mit Intel Kaby Lake, AMD Ryzen, oder anderen nicht unterstützten Processoren weiter updates zu installieren.
|
||||||
|
|
||||||
|
## Downloads [](../../releases)
|
||||||
|
|
||||||
|
### Die neueste stabile version kannst du [hier](../../releases/latest) herunterladen!
|
||||||
|
|
||||||
|
Wenn du dich traust, kannst du von [hier](https://ci.appveyor.com/project/zeffy/wufuc) die letzten instabilen builds herunterladen. **Auf eingene Verantwortung!**
|
||||||
|
|
||||||
|
## Sponsoren
|
||||||
|
|
||||||
|
### [Advanced Installer](http://www.advancedinstaller.com/)
|
||||||
|
Die Installer-pakete wurden mit Advanced Installer unter einer open source licenz erstellt. Die intuitive und freundliche benutzeroberfläche von Advanced Installer hat mir erlaubt einenvollwertigen installer mit minimalem Aufwand zu erstellen. [Schaue es dir an!](http://www.advancedinstaller.com/)
|
||||||
|
|
||||||
|
## Fehler melden [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
Siehe [CONTRIBUTING.de-DE.md](CONTRIBUTING.de-DE.md).
|
||||||
|
|
||||||
|
## Vorwort
|
||||||
|
|
||||||
|
Der changelog für die Windows updates KB4012218 und KB4012219 enthielt das folgende:
|
||||||
|
|
||||||
|
> Enabled detection of processor generation and hardware support when PC tries to scan or download updates through Windows Update.
|
||||||
|
|
||||||
|
Damit wurde ein [verfahrenswechel](https://blogs.windows.com/windowsexperience/2016/01/15/windows-10-embracing-silicon-innovation/) eingeleitet, den sie vor einiger Zeit verkündeten. Microsoft hatte verkündet, dass sie Windows 7 oder 8.1 auf next-gen Intel, AMD und Qualcomm processoren nicht mehr unterstützen.
|
||||||
|
|
||||||
|
Wer also nicht auf Window 10 "upgraded" ist gea*****, obwohl der extended support für Windows 7 und 8.1 bis zum 4. Januar 2020, respektive zum 10. Januar 2023 läuft.
|
||||||
|
|
||||||
|
Dies betrifft sogar leute mit älteren Intel und AMD processoren!
|
||||||
|
|
||||||
|
## Böser Microsoft!
|
||||||
|
|
||||||
|
Wenn du interessiert bist, kannst du meinen Artikel lesen wie ich den CPU check gefunden habe -> [hier klicken](../../tree/old-kb4012218-19).
|
||||||
|
|
||||||
|
## Wie funktioniert es?
|
||||||
|
|
||||||
|
Im library file `wuaueng.dll` gibt es zwei funktionen: [`IsDeviceServiceable(void)`](https://gist.github.com/zeffy/e5ec266952932bc905eb0cbc6ed72185) und [`IsCPUSupported(void)`](https://gist.github.com/zeffy/1a8f8984d2bec97ae24af63a76278694). `IsDeviceServiceable(void)` ist ein wrapper um `IsCPUSupported(void)` welche die empfangenen ergebnisse zwischenspeichert und bei neuen aufrufen wiederverwendet.
|
||||||
|
|
||||||
|
Mein patch nutzt dieses Verhalten aus und setzt die "first run" variable auf `FALSE` und den cached result auf `TRUE`.
|
||||||
|
|
||||||
|
- Beim booten wird vom `NT AUTHORITY\SYSTEM` Benutzer ein wufuc scheduled task gestartet.
|
||||||
|
- `wufuc` erkundet in welchem service host group Prozess der Windows Update service läuft (typischerweise `netsvcs`), und injiziert sich in den Prozess.
|
||||||
|
- Jetzt wird ein hook in `LoadLibraryEx` gesetzt, welche `wuaueng.dll` automatisch patcht wenn es geladen wird.
|
||||||
|
- Vorher geladene `wuaueng.dll` instanzen werden auch gepatcht.
|
||||||
|
|
||||||
|
### Diverse verbesserungen seit meiner batchfile Methode:
|
||||||
|
|
||||||
|
- **Es werden keine Systemfiles verändert!**
|
||||||
|
- Heuristisches patchen, wodurch der patch auch nach updates funktionieren sollte.
|
||||||
|
- Es wird C benutzt!
|
||||||
|
- Keine externen Abhängigkeiten.
|
@@ -1,6 +1,6 @@
|
|||||||
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
||||||
|
|
||||||
[English](README.md) | [русский](README.ru-RU.md) | **Français**
|
[English](README.md) | [русский](README.ru-RU.md) | **Français** | [Deutsch](README.de-DE.md) | [Magyar](README.hu-HU.md) | [Portuguese (Brazil)](README.pt-BR.md)
|
||||||
|
|
||||||
[](https://pledgie.com/campaigns/34055)
|
[](https://pledgie.com/campaigns/34055)
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ Ces updates ont marqué l'implémentation d'un [changement de politique](https:/
|
|||||||
|
|
||||||
C'est un majestueux doigt d'honneur à tous ceux qui ont décidé de ne pas "upgrader" vers la bouse connue sous le nom de Windows 10, en particulier en considérant que le support étendu de Windows 7 et Windows 8.1 ne se terminera pas avant le 4 janvier 2020 et 10 janvier 2023 respectivement.
|
C'est un majestueux doigt d'honneur à tous ceux qui ont décidé de ne pas "upgrader" vers la bouse connue sous le nom de Windows 10, en particulier en considérant que le support étendu de Windows 7 et Windows 8.1 ne se terminera pas avant le 4 janvier 2020 et 10 janvier 2023 respectivement.
|
||||||
|
|
||||||
Cela affecte également des gens avec des processeurs Intel et AMD plus vieux ! J'ai reçu des rapports d'utilisateurs pour [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), et [AMD FX-8350](../../issues/32), tous empêchés de recevoir des updates.
|
Cela affecte également des gens avec des processeurs Intel et AMD plus vieux ! J'ai reçu des rapports d'utilisateurs pour [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), [AMD FX-8350](../../issues/32), et [AMD Turion 64 Mobile Technology ML-34](../../issues/80), tous empêchés de recevoir des updates.
|
||||||
|
|
||||||
## Méchant Microsoft !
|
## Méchant Microsoft !
|
||||||
|
|
||||||
|
54
README.hu-HU.md
Normal file
54
README.hu-HU.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
||||||
|
|
||||||
|
[English](README.md) | [русский](README.ru-RU.md) | [Français](README.fr-FR.md) | [Deutsch](README.de-DE.md) | **Magyar** | [Portuguese (Brazil)](README.pt-BR.md)
|
||||||
|
|
||||||
|
[](https://pledgie.com/campaigns/34055)
|
||||||
|
|
||||||
|
Kikapcsolja az "Windows Update Unsupported Hardware/Nem támogatott hardver" jelentését, és lehetővé teszi a frissítések telepítését Intel Kaby Lake, AMD Ryzen, vagy más nem támogatott processzoros Windows 7 és 8.1 rendszereken.
|
||||||
|
|
||||||
|
## Letöltések [](../../releases)
|
||||||
|
|
||||||
|
### A legfrissebb stabil verziót [itt](../../releases/latest) találod!
|
||||||
|
|
||||||
|
Ha bátornak érzed magad, itt próbálhatod ki a legfrissebb build-eket [here](https://ci.appveyor.com/project/zeffy/wufuc). **Saját felelősségre!**
|
||||||
|
|
||||||
|
## Szponzorok
|
||||||
|
|
||||||
|
### [Advanced Installer](http://www.advancedinstaller.com/)
|
||||||
|
A telepítő csomagok Advanced Installerel lettek elkészítve, open source licenc alatt. Az Advanced Installer program intuitív és barátságos UI-jával gyorsan és kényelmesen el tudtam készíteni a telepítőt. [Nézd meg!](http://www.advancedinstaller.com/)
|
||||||
|
|
||||||
|
## Hibajelentés [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
Lásd [CONTRIBUTING.hu-HU.md](CONTRIBUTING.hu-HU.md).
|
||||||
|
|
||||||
|
## Előszó
|
||||||
|
|
||||||
|
Az KB4012218 és KB4012219 kódszámú Windows frissítések leírása ezeket az információkat tartalmazta:
|
||||||
|
|
||||||
|
> Enabled detection of processor generation and hardware support when PC tries to scan or download updates through Windows Update.
|
||||||
|
|
||||||
|
Ez a frissítés lényegében egy [filozófiavĺtást](https://blogs.windows.com/windowsexperience/2016/01/15/windows-10-embracing-silicon-innovation/) jelentett, hogy a Microsoft nem fogja támogatni a Windows 7 vagy 8.1 következő generációs Intel, AMD és Qualcomm processzoron.
|
||||||
|
|
||||||
|
A szerző véleményéről evvel kapcsolatban legjobban az angol verzióból informálódhattok.
|
||||||
|
|
||||||
|
## Rossz Microsoft!
|
||||||
|
|
||||||
|
Ha érdekelnek a részletek, [itt](../../tree/old-kb4012218-19) olvashatsz tovább.
|
||||||
|
|
||||||
|
## Hogy működik?
|
||||||
|
|
||||||
|
A `wuaueng.dll` fájl két függvényt tartalmaz: [`IsDeviceServiceable(void)`](https://gist.github.com/zeffy/e5ec266952932bc905eb0cbc6ed72185) és [`IsCPUSupported(void)`](https://gist.github.com/zeffy/1a8f8984d2bec97ae24af63a76278694). `IsDeviceServiceable(void)` egy egyszerű wrapper a `IsCPUSupported(void)` függvény körül, ami eltárolja amit olvas és új felhíváskor újra felhasználja ezeket.
|
||||||
|
|
||||||
|
A patch ezt a tárolást használja ki, és átállítja a "first run" értéket `FALSE`-ra és a cached result-t `TRUE`-ra.
|
||||||
|
|
||||||
|
- A rendszer bootolásakor a wufuc munkacsomag elindul az `NT AUTHORITY\SYSTEM` felhasználó alatt.
|
||||||
|
- `wufuc` megkeresi melyik service process-ben fut a Windows Update service (tipikusan `netsvcs`), és belekapcsolódik.
|
||||||
|
- Miután ez megtörtént, a `LoadLibraryEx` segítségével automatikusan módosítja a `wuaueng.dll`-t ha az be lesz töltve.
|
||||||
|
- Egy előzőlegesen betöltött `wuaueng.dll` is meg lesz patchelve.
|
||||||
|
|
||||||
|
### Fejlesztések a régi batchfájl módszerhez képest:
|
||||||
|
|
||||||
|
- **Rendszerfájlok nem lesznek módosítva**
|
||||||
|
- Heurisztikusan dolgozó patchelés, ami segítségével a program frissítések után is működik.
|
||||||
|
- C nyelv használata skriptelés helyett!
|
||||||
|
- Nincs külső függőség.
|
@@ -1,6 +1,6 @@
|
|||||||
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
||||||
|
|
||||||
**English** | [русский](README.ru-RU.md) | [Français](README.fr-FR.md)
|
**English** | [русский](README.ru-RU.md) | [Français](README.fr-FR.md) | [Deutsch](README.de-DE.md) | [Magyar](README.hu-HU.md) | [Portuguese (Brazil)](README.pt-BR.md)
|
||||||
|
|
||||||
[](https://pledgie.com/campaigns/34055)
|
[](https://pledgie.com/campaigns/34055)
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ These updates marked the implementation of a [policy change](https://blogs.windo
|
|||||||
|
|
||||||
It is essentially a big middle finger to anyone who decides to not "upgrade" to the steaming pile of :shit: 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.
|
It is essentially a big middle finger to anyone who decides to not "upgrade" to the steaming pile of :shit: 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.
|
||||||
|
|
||||||
This has even affected people with older Intel and AMD processors! I've received user reports of the [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), and [AMD FX-8350](../../issues/32) all being blocked from receiving updates.
|
This has even affected people with older Intel and AMD processors! I've received user reports of the [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), [AMD FX-8350](../../issues/32), and [AMD Turion 64 Mobile Technology ML-34](../../issues/80) all being blocked from receiving updates.
|
||||||
|
|
||||||
## Bad Microsoft!
|
## Bad Microsoft!
|
||||||
|
|
||||||
|
56
README.pt-BR.md
Normal file
56
README.pt-BR.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
||||||
|
|
||||||
|
[English](README.md) | [русский](README.ru-RU.md) | [Français](README.fr-FR.md) | [Deutsch](README.de-DE.md) | [Magyar](README.hu-HU.md) | **Portuguese (Brazil)**
|
||||||
|
|
||||||
|
[](https://pledgie.com/campaigns/34055)
|
||||||
|
|
||||||
|
Desabilita a mensagem “Seu PC utiliza um processador que não é suportado por esta versão do Windows e você não receberá atualizações” do Windows Update, e permite que você continue instalando atualizações nos sistemas Windows 7 and 8.1 com os novos processadores Intel Kaby Lake, AMD Ryzen, ou outros processadores.
|
||||||
|
|
||||||
|
## Downloads [](../../releases)
|
||||||
|
|
||||||
|
### Você pode baixar a última versão estável [aqui](../../releases/latest)!
|
||||||
|
|
||||||
|
Se você é corajoso, você pode testar a último versão instável [aqui](https://ci.appveyor.com/project/zeffy/wufuc). **Utilize-o por risco próprio**
|
||||||
|
|
||||||
|
## Patrocinadores
|
||||||
|
|
||||||
|
### [Advanced Installer](http://www.advancedinstaller.com/)
|
||||||
|
O instalador dos pacotes foram criados com Advanced Installer com a licença de cógido aberto. O Advanced Installer tem uma interface intuitiva e amigável que me permitiu a criar rapidamente um instalador completo com facilidade. [Dê uma olhada nisso](http://www.advancedinstaller.com/)
|
||||||
|
|
||||||
|
## Reportando problemas [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
Leia [CONTRIBUTING.pt-BR.md](CONTRIBUTING.pt-BR.md).
|
||||||
|
|
||||||
|
## Prefácio
|
||||||
|
|
||||||
|
O changelog para atualizações do Windows KB4012218 e KB4012219 incluindo o:
|
||||||
|
|
||||||
|
> Habilita detecção de geração de processador e suporte de hardware quando PC procura ou baixa atualizações pelo Windows Update.
|
||||||
|
|
||||||
|
Essas atualizações marcaram a implementação da [policy change](https://blogs.windows.com/windowsexperience/2016/01/15/windows-10-embracing-silicon-innovation/) que foi anunciado há um tempo atrás, onde a Microsoft declara que não irá fornecer suporte do Windows 7 ou 8.1 on na próxima geração de processadores Intel, AMD and Qualcomm.
|
||||||
|
|
||||||
|
Esse anúncio foi basicamente um foda-se para aqueles que decidiram não fazer upgrade para a grande "merda" conhecida por windows 10, especialmente considerando que o período de suporte para o Windows 7 e 8.1 só irá terminar em 4 de Janeiro de 2020 e 10 de Janeiro de 2023, respectivamente.
|
||||||
|
|
||||||
|
Essa atualização afetou até as pessoas que possuem processadores antigos da Intel e AMD! Alguns usuários já me relataram que tiveram o mesmo problema [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), [AMD FX-8350](../../issues/32), and [AMD Turion 64 Mobile Technology ML-34](../../issues/80) sendo todos bloqueados no Windows Update.
|
||||||
|
|
||||||
|
## Microsoft sacana!
|
||||||
|
|
||||||
|
Se você estiver interessado, você pode ler você pode ler as minhas primeiras anotações de como descrobri o CPU check [aqui](../../tree/old-kb4012218-19).
|
||||||
|
|
||||||
|
## Como funciona
|
||||||
|
|
||||||
|
Basicamente, dentro do arquivo chamado `wuaueng.dll` existem 2 funções: [`IsDeviceServiceable(void)`](https://gist.github.com/zeffy/e5ec266952932bc905eb0cbc6ed72185) and [`IsCPUSupported(void)`](https://gist.github.com/zeffy/1a8f8984d2bec97ae24af63a76278694). `IsDeviceServiceable(void)` é basicamente um desvio `IsCPUSupported(void)` que captura o resultado que ele recebe e a recicla nas próximas chamadas.
|
||||||
|
|
||||||
|
Meu patch altera o resultado do valor da "first run" de `FALSE` e transforma o resultado em `TRUE`.
|
||||||
|
|
||||||
|
- No boot do sistema a tarefa agendada do wufuc roda como usuário `NT AUTHORITY\SYSTEM`.
|
||||||
|
- `wufuc` determina que serviço host group processa o Windows Update roda (normalmente `netsvcs`), e se introduz nele.
|
||||||
|
- Uma vez introduzido, ele aplica o hook para `LoadLibraryEx` que automaticamente roda `wuaueng.dll` quando está carregado.
|
||||||
|
- Qualquer carregamento prévio do `wuaueng.dll` também é rodado.
|
||||||
|
|
||||||
|
### Muitas melhorias no meu método batchfile:
|
||||||
|
|
||||||
|
- **Nenhum arquivo do sistema é alterado!**
|
||||||
|
- Heuristic-based patching, isso significa que ele funcionará mesmo com novas atualizações do Windows.
|
||||||
|
- C é a melhor linguagem!
|
||||||
|
- Não depende de nada externo.
|
@@ -1,6 +1,6 @@
|
|||||||
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://gratipay.com/wufuc/)
|
||||||
|
|
||||||
[English](README.md) | **русский** | [Français](README.fr-FR.md)
|
[English](README.md) | **русский** | [Français](README.fr-FR.md) | [Deutsch](README.de-DE.md) | [Magyar](README.hu-HU.md) | [Portuguese (Brazil)](README.pt-BR.md)
|
||||||
|
|
||||||
[](https://pledgie.com/campaigns/34055)
|
[](https://pledgie.com/campaigns/34055)
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
По существу, это то же, что показать средний палец всем, кто решит не "обновляться" до вонючей кучи :shit: , известной как Windows 10, особенно учитывая то, что расширенный период поддержки для Windows 7 не закончится до 4 января 2020 и для Windows 8.1 - до 10 января 2023.
|
По существу, это то же, что показать средний палец всем, кто решит не "обновляться" до вонючей кучи :shit: , известной как Windows 10, особенно учитывая то, что расширенный период поддержки для Windows 7 не закончится до 4 января 2020 и для Windows 8.1 - до 10 января 2023.
|
||||||
|
|
||||||
Это затронуло даже людей с более старыми процессорами Intel и AMD! Я видел сообщения от пользователей [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), и [AMD FX-8350](../../issues/32) - на всех них было заблокировано получение обновлений.
|
Это затронуло даже людей с более старыми процессорами Intel и AMD! Я видел сообщения от пользователей [Intel Atom Z530](../../issues/7), [Intel Core i5-M 560](../../issues/23), [Intel Core i5-4300M](../../issues/24), [Intel Atom D525](../../issues/34), [Intel Pentium B940](../../issues/63), [AMD FX-8350](../../issues/32), и [AMD Turion 64 Mobile Technology ML-34](../../issues/80) - на всех них было заблокировано получение обновлений.
|
||||||
|
|
||||||
## Плохая Microsoft!
|
## Плохая Microsoft!
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
version: 0.7.0.{build}
|
version: 0.7.1.{build}
|
||||||
skip_commits:
|
skip_commits:
|
||||||
files:
|
files:
|
||||||
- README.md
|
- README.md
|
||||||
@@ -20,7 +20,7 @@ before_build:
|
|||||||
|
|
||||||
after_build:
|
after_build:
|
||||||
- cmd: >-
|
- cmd: >-
|
||||||
copy /Y "wufuc\bin\%CONFIGURATION%\%PLATFORM%\wufuc.dll" "setup-batch\"
|
copy /Y "wufuc\bin\%CONFIGURATION%\%PLATFORM%\wufuc*.dll" "setup-batch\"
|
||||||
|
|
||||||
copy /Y "LICENSE" "setup-batch\COPYING.txt"
|
copy /Y "LICENSE" "setup-batch\COPYING.txt"
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
<ROW Property="AI_CLEAN_RESOURCES_UNINSTALL" Value="1"/>
|
<ROW Property="AI_CLEAN_RESOURCES_UNINSTALL" Value="1"/>
|
||||||
<ROW Property="AI_CLEAN_RESOURCES_USER_PROMPT_BASIC_UI" Value="1"/>
|
<ROW Property="AI_CLEAN_RESOURCES_USER_PROMPT_BASIC_UI" Value="1"/>
|
||||||
<ROW Property="AI_CLEAN_RESOURCES_USER_PROMPT_FULL_UI" Value="1"/>
|
<ROW Property="AI_CLEAN_RESOURCES_USER_PROMPT_FULL_UI" Value="1"/>
|
||||||
<ROW Property="AI_PROPPATH_PERBUILD_wufuc.dll" Value="..\wufuc\bin\Release\x64\wufuc.dll" MultiBuildValue="MsiBuild:..\wufuc\bin\Release\x86\wufuc.dll"/>
|
<ROW Property="AI_PROPPATH_PERBUILD_wufuc.dll" Value="..\wufuc\bin\Release\x64\wufuc64.dll" MultiBuildValue="MsiBuild:..\wufuc\bin\Release\x86\wufuc32.dll"/>
|
||||||
<ROW Property="AI_ThemeStyle" Value="default" MultiBuildValue="DefaultBuild:classic#MsiBuild:classic" MsiKey="AI_ThemeStyle"/>
|
<ROW Property="AI_ThemeStyle" Value="default" MultiBuildValue="DefaultBuild:classic#MsiBuild:classic" MsiKey="AI_ThemeStyle"/>
|
||||||
<ROW Property="ALLUSERS" Value="1"/>
|
<ROW Property="ALLUSERS" Value="1"/>
|
||||||
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
|
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
<ROW Property="ARPURLINFOABOUT" Value="https://github.com/zeffy/wufuc"/>
|
<ROW Property="ARPURLINFOABOUT" Value="https://github.com/zeffy/wufuc"/>
|
||||||
<ROW Property="ARPURLUPDATEINFO" Value="https://github.com/zeffy/wufuc/releases"/>
|
<ROW Property="ARPURLUPDATEINFO" Value="https://github.com/zeffy/wufuc/releases"/>
|
||||||
<ROW Property="Manufacturer" Value="zeffy"/>
|
<ROW Property="Manufacturer" Value="zeffy"/>
|
||||||
<ROW Property="ProductCode" Value="1028:{1E58193D-84E1-46FD-A3BB-B186D78BDAF8} 1033:{5519F45C-05B6-4F5E-8B23-B9DB302AD983} 1036:{015C8B32-B168-4D24-B5FD-A45E08493CE5} 1041:{A758643E-8D91-4544-9893-919B84389151} 1042:{C4892827-C3F8-45CB-B339-40D956CB56D3} 1045:{FF66F24C-AD5A-47BD-B4E2-A870A652EDD0} 1049:{D3884C2E-C9CB-4FB3-86A1-3EF5E71EA46F} 1053:{B8360E70-9388-448A-9B64-A8F55D2D5DA2} 2052:{3B68B92C-1FEC-484E-8294-BAAE1056B302} 3082:{91C15828-55AA-439F-A96F-6D58A4CBE6D3} " Type="16"/>
|
<ROW Property="ProductCode" Value="1028:{B7F26089-5C8E-4DE8-A356-067770635396} 1030:{6028AE21-CE9D-4280-B66C-C3D8A9AB8359} 1031:{D8CE187D-F692-494F-8456-9A3F9D547477} 1033:{8739556C-AC5C-4384-889C-BCB102BA186F} 1035:{BE9A37E3-83BD-4C32-A4DE-9B292FD55596} 1036:{7A3E194D-D7EA-404F-AAE8-B2818AA73492} 1038:{9ABBEAB4-182C-4B3A-8BF7-82C0D39F530B} 1040:{2924EB49-DF9A-4B7D-917A-5547026E91F2} 1041:{D3B280FA-562F-4AD0-A974-E11BD2E4D623} 1042:{BBC862ED-A70C-43FE-B35B-3FD2CEC4604C} 1043:{441DF8E7-B329-4CE9-ADC5-DE4613368B7F} 1045:{93C6F7E2-D92C-42B0-A162-3A972FDCEBF6} 1046:{B8F6F881-5F3F-44EC-8C7A-F23309068F74} 1049:{E20AD331-486C-439D-B061-2DA0D0B8C62F} 1060:{7E4E1C6A-EC43-457E-8517-70219F42F73B} 2052:{EDFDA57E-ADF7-402D-AAE0-AA167FD4322C} 3082:{C874AEC9-CEFE-4534-A160-A9B132011C56} " Type="16"/>
|
||||||
<ROW Property="ProductLanguage" Value="1033"/>
|
<ROW Property="ProductLanguage" Value="1033"/>
|
||||||
<ROW Property="ProductName" Value="wufuc"/>
|
<ROW Property="ProductName" Value="wufuc"/>
|
||||||
<ROW Property="ProductVersion" Value="0.7.0.0" Type="32" TargetFile="wufuc.dll"/>
|
<ROW Property="ProductVersion" Value="0.7.0.62" Type="32" TargetFile="wufuc.dll"/>
|
||||||
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND"/>
|
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND"/>
|
||||||
<ROW Property="SysnativeFolder" Value=" "/>
|
<ROW Property="SysnativeFolder" Value=" "/>
|
||||||
<ROW Property="UpgradeCode" Value="{4C52972C-251E-4D1B-AD09-EAA765719DCC}"/>
|
<ROW Property="UpgradeCode" Value="{4C52972C-251E-4D1B-AD09-EAA765719DCC}"/>
|
||||||
@@ -60,8 +60,8 @@
|
|||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">
|
||||||
<ROW File="LICENSE" Component_="LICENSE" FileName="COPYING.txt" Attributes="0" SourcePath="..\LICENSE" SelfReg="false"/>
|
<ROW File="LICENSE" Component_="LICENSE" FileName="COPYING.txt" Attributes="0" SourcePath="..\LICENSE" SelfReg="false"/>
|
||||||
<ROW File="disable_wufuc.bat" Component_="disable_wufuc.bat" FileName="DISABL~1.BAT|disable_wufuc.bat" Attributes="0" SourcePath="..\setup-batch\Helper Scripts\disable_wufuc.bat" SelfReg="false" NextFile="enable_wufuc.bat"/>
|
<ROW File="disable_wufuc.bat" Component_="disable_wufuc.bat" FileName="DISABL~1.BAT|disable_wufuc.bat" Attributes="0" SourcePath="Helper Scripts\disable_wufuc.bat" SelfReg="false" NextFile="enable_wufuc.bat"/>
|
||||||
<ROW File="enable_wufuc.bat" Component_="enable_wufuc.bat" FileName="ENABLE~1.BAT|enable_wufuc.bat" Attributes="0" SourcePath="..\setup-batch\Helper Scripts\enable_wufuc.bat" SelfReg="false" NextFile="LICENSE"/>
|
<ROW File="enable_wufuc.bat" Component_="enable_wufuc.bat" FileName="ENABLE~1.BAT|enable_wufuc.bat" Attributes="0" SourcePath="Helper Scripts\enable_wufuc.bat" SelfReg="false" NextFile="LICENSE"/>
|
||||||
<ROW File="wufuc.dll" Component_="wufuc.dll" FileName="wufuc.dll" Attributes="512" SourcePath="<AI_APPPATH_PERBUILD_wufuc.dll>" SelfReg="false" NextFile="disable_wufuc.bat"/>
|
<ROW File="wufuc.dll" Component_="wufuc.dll" FileName="wufuc.dll" Attributes="512" SourcePath="<AI_APPPATH_PERBUILD_wufuc.dll>" SelfReg="false" NextFile="disable_wufuc.bat"/>
|
||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
|
||||||
@@ -71,8 +71,8 @@
|
|||||||
<ROW Name="AI_APPPATH_PERBUILD_wufuc.dll" Path="[|AI_PROPPATH_PERBUILD_wufuc.dll]" Type="2" Content="0"/>
|
<ROW Name="AI_APPPATH_PERBUILD_wufuc.dll" Path="[|AI_PROPPATH_PERBUILD_wufuc.dll]" Type="2" Content="0"/>
|
||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
|
||||||
<ROW BuildKey="DefaultBuild" BuildName="x64" BuildOrder="1" BuildType="1" PackageFileName="wufuc_setup_x64" Languages="en;zh;zh_TW;fr;ja;ko;pl;ru;es;sv" LangOpt="1" InstallationType="4" UseLargeSchema="true" MsiPackageType="x64"/>
|
<ROW BuildKey="DefaultBuild" BuildName="x64" BuildOrder="1" BuildType="1" PackageFileName="wufuc_setup_x64" Languages="en;zh;zh_TW;fr;ja;ko;pl;ru;es;it;de;fi;nl;hu;da;sl;pt_BR" LangOpt="1" InstallationType="4" UseLargeSchema="true" MsiPackageType="x64"/>
|
||||||
<ROW BuildKey="MsiBuild" BuildName="x86" BuildOrder="2" BuildType="1" PackageFileName="wufuc_setup_x86" Languages="en;zh;zh_TW;fr;ja;ko;pl;ru" LangOpt="1" InstallationType="4" UseLargeSchema="true"/>
|
<ROW BuildKey="MsiBuild" BuildName="x86" BuildOrder="2" BuildType="1" PackageFileName="wufuc_setup_x86" Languages="en;zh;zh_TW;fr;ja;ko;pl;ru;es;it;de;fi;nl;hu;da;sl;pt_BR" LangOpt="1" InstallationType="4" UseLargeSchema="true"/>
|
||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
|
||||||
<ROW Path="<AI_DICTS>ui.ail"/>
|
<ROW Path="<AI_DICTS>ui.ail"/>
|
||||||
@@ -84,8 +84,15 @@
|
|||||||
<ROW Path="<AI_DICTS>ui_ko.ail"/>
|
<ROW Path="<AI_DICTS>ui_ko.ail"/>
|
||||||
<ROW Path="<AI_DICTS>ui_pl.ail"/>
|
<ROW Path="<AI_DICTS>ui_pl.ail"/>
|
||||||
<ROW Path="<AI_DICTS>ui_ru.ail"/>
|
<ROW Path="<AI_DICTS>ui_ru.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_it.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_nl.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_fi.ail"/>
|
||||||
<ROW Path="<AI_DICTS>ui_es.ail"/>
|
<ROW Path="<AI_DICTS>ui_es.ail"/>
|
||||||
<ROW Path="<AI_DICTS>ui_sv.ail"/>
|
<ROW Path="<AI_DICTS>ui_de.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_hu.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_da.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_sl.ail"/>
|
||||||
|
<ROW Path="<AI_DICTS>ui_pt_BR.ail"/>
|
||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
|
||||||
<ROW Fragment="CommonUI.aip" Path="<AI_FRAGS>CommonUI.aip"/>
|
<ROW Fragment="CommonUI.aip" Path="<AI_FRAGS>CommonUI.aip"/>
|
||||||
@@ -134,13 +141,12 @@
|
|||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCheckBoxComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.MsiCheckBoxComponent">
|
||||||
<ROW Property="AI_CLEAN_RESOURCES_UNINSTALL" Value="1"/>
|
<ROW Property="AI_CLEAN_RESOURCES_UNINSTALL" Value="1"/>
|
||||||
<ROW Property="CHECKBOX_PLEDGIE" Value="CheckBox"/>
|
|
||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
|
||||||
<ROW Dialog_="AdminWelcomeDlg" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="AdminWelcomeDlg#Bitmap"/>
|
<ROW Dialog_="AdminWelcomeDlg" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="AdminWelcomeDlg#Bitmap"/>
|
||||||
<ROW Dialog_="ExitDialog" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="ExitDialog#Bitmap"/>
|
<ROW Dialog_="ExitDialog" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="ExitDialog#Bitmap"/>
|
||||||
<ROW Dialog_="ExitDialog" Control="LaunchProdText" Type="Text" X="148" Y="170" Width="220" Height="20" Attributes="196611" Text="Launch [ProductName]" Order="800" TextLocId="Control.Text.ExitDialog#LaunchProdText" MsiKey="ExitDialog#LaunchProdText"/>
|
<ROW Dialog_="ExitDialog" Control="LaunchProdText" Type="Text" X="148" Y="170" Width="220" Height="20" Attributes="196611" Text="Launch [ProductName]" Order="800" TextLocId="Control.Text.ExitDialog#LaunchProdText" MsiKey="ExitDialog#LaunchProdText"/>
|
||||||
<ROW Dialog_="ExitDialog" Control="DonateCheckBox" Type="CheckBox" X="135" Y="189" Width="233" Height="20" Attributes="3" Property="CHECKBOX_PLEDGIE" Text="Donate to [ProductName] on Pledgie!" TextStyle="DlgFontBold8" Order="1200"/>
|
<ROW Dialog_="ExitDialog" Control="DonateHyperlink" Type="Hyperlink" X="135" Y="198" Width="224" Height="20" Attributes="65539" Property="HYPERLINK_1_PROP" Text="<a href="https://pledgie.com/campaigns/34055">Donate to wufuc on Pledgie!</a>" Order="1200"/>
|
||||||
<ROW Dialog_="FatalError" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="FatalError#Bitmap"/>
|
<ROW Dialog_="FatalError" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="FatalError#Bitmap"/>
|
||||||
<ROW Dialog_="LicenseAgreementDlg" Control="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="120" Attributes="7" Text="LICENSE.rtf" Order="400" TextLocId="-" MsiKey="LicenseAgreementDlg#AgreementText"/>
|
<ROW Dialog_="LicenseAgreementDlg" Control="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="120" Attributes="7" Text="LICENSE.rtf" Order="400" TextLocId="-" MsiKey="LicenseAgreementDlg#AgreementText"/>
|
||||||
<ROW Dialog_="MaintenanceWelcomeDlg" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="MaintenanceWelcomeDlg#Bitmap"/>
|
<ROW Dialog_="MaintenanceWelcomeDlg" Control="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" Attributes="1048577" Text="[DialogBitmap]" Order="300" MsiKey="MaintenanceWelcomeDlg#Bitmap"/>
|
||||||
@@ -177,7 +183,6 @@
|
|||||||
<ROW Dialog_="LicenseAgreementDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
|
<ROW Dialog_="LicenseAgreementDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||||
<ROW Dialog_="LicenseAgreementDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>
|
<ROW Dialog_="LicenseAgreementDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||||
<ROW Dialog_="ExitDialog" Control_="Finish" Event="EndDialog" Argument="Return" Condition="1" Ordering="303" MsiKey="ExitDialog#Finish#EndDialog#Return#1"/>
|
<ROW Dialog_="ExitDialog" Control_="Finish" Event="EndDialog" Argument="Return" Condition="1" Ordering="303" MsiKey="ExitDialog#Finish#EndDialog#Return#1"/>
|
||||||
<ROW Dialog_="ExitDialog" Control_="Finish" Event="DoAction" Argument="OpenPledgieUrl" Condition="AI_RESUME AND ( AI_INSTALL AND CHECKBOX_PLEDGIE )" Ordering="302"/>
|
|
||||||
</COMPONENT>
|
</COMPONENT>
|
||||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
|
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
|
||||||
<ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/>
|
<ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/>
|
||||||
@@ -218,7 +223,6 @@
|
|||||||
<ROW Action="AI_UnpinFromStartScreen" Type="1025" Source="ShortcutFlags.dll" Target="UnpinFromStartScreen" WithoutSeq="true"/>
|
<ROW Action="AI_UnpinFromStartScreen" Type="1025" Source="ShortcutFlags.dll" Target="UnpinFromStartScreen" WithoutSeq="true"/>
|
||||||
<ROW Action="AI_UnpinFromTaskbar" Type="1025" Source="ShortcutFlags.dll" Target="UnpinFromTaskbar" WithoutSeq="true"/>
|
<ROW Action="AI_UnpinFromTaskbar" Type="1025" Source="ShortcutFlags.dll" Target="UnpinFromTaskbar" WithoutSeq="true"/>
|
||||||
<ROW Action="AI_UnpinShortcuts" Type="1" Source="ShortcutFlags.dll" Target="UnpinShortcuts"/>
|
<ROW Action="AI_UnpinShortcuts" Type="1" Source="ShortcutFlags.dll" Target="UnpinShortcuts"/>
|
||||||
<ROW Action="OpenPledgieUrl" Type="66" Source="viewer.exe" Target="https://pledgie.com/campaigns/34055" WithoutSeq="true" Options="1"/>
|
|
||||||
<ROW Action="Pause" Type="1602" Source="viewer.exe" Target="/HideWindow "[SysnativeFolder]timeout" /nobreak /t 3" Options="1"/>
|
<ROW Action="Pause" Type="1602" Source="viewer.exe" Target="/HideWindow "[SysnativeFolder]timeout" /nobreak /t 3" Options="1"/>
|
||||||
<ROW Action="RunSFCScan" Type="3138" Source="viewer.exe" Target="/RunAsAdmin /HideWindow "[SysnativeFolder]sfc.exe" /SCANFILE="[SysnativeFolder]wuaueng.dll"" Options="1"/>
|
<ROW Action="RunSFCScan" Type="3138" Source="viewer.exe" Target="/RunAsAdmin /HideWindow "[SysnativeFolder]sfc.exe" /SCANFILE="[SysnativeFolder]wuaueng.dll"" Options="1"/>
|
||||||
<ROW Action="RunScheduledTask" Type="3650" Source="viewer.exe" Target="/RunAsAdmin /HideWindow "[SysnativeFolder]schtasks.exe" /Run /TN "[wufuc_TaskName]"" Options="1"/>
|
<ROW Action="RunScheduledTask" Type="3650" Source="viewer.exe" Target="/RunAsAdmin /HideWindow "[SysnativeFolder]schtasks.exe" /Run /TN "[wufuc_TaskName]"" Options="1"/>
|
||||||
|
@@ -43,13 +43,14 @@ goto :unsupported_os
|
|||||||
|
|
||||||
:is_x86
|
:is_x86
|
||||||
set "WINDOWS_ARCHITECTURE=x86"
|
set "WINDOWS_ARCHITECTURE=x86"
|
||||||
|
set "wufuc_dll=%~dp0wufuc32.dll"
|
||||||
goto :dll_exists
|
goto :dll_exists
|
||||||
|
|
||||||
:is_x64
|
:is_x64
|
||||||
set "WINDOWS_ARCHITECTURE=x64"
|
set "WINDOWS_ARCHITECTURE=x64"
|
||||||
|
set "wufuc_dll=%~dp0wufuc64.dll"
|
||||||
|
|
||||||
:dll_exists
|
:dll_exists
|
||||||
set "wufuc_dll=%~dp0wufuc.dll"
|
|
||||||
if exist "%wufuc_dll%" (
|
if exist "%wufuc_dll%" (
|
||||||
goto :get_ver
|
goto :get_ver
|
||||||
)
|
)
|
||||||
@@ -68,7 +69,7 @@ echo in which case, you will need to make an exception and restore it.
|
|||||||
goto :die
|
goto :die
|
||||||
|
|
||||||
:get_ver
|
:get_ver
|
||||||
for /f "tokens=*" %%i in ('wmic /output:stdout datafile where "name='%wufuc_dll:\=\\%'" get Version /value ^| find "="') do set "%%i"
|
call :get_filever "%wufuc_dll%"
|
||||||
title wufuc installer - v%Version%
|
title wufuc installer - v%Version%
|
||||||
|
|
||||||
set "wufuc_xml=%~dp0wufuc.xml"
|
set "wufuc_xml=%~dp0wufuc.xml"
|
||||||
@@ -87,15 +88,15 @@ goto :die
|
|||||||
:check_ver
|
:check_ver
|
||||||
ver | findstr " 6\.1\." >nul && (
|
ver | findstr " 6\.1\." >nul && (
|
||||||
set "WINDOWS_VER=6.1"
|
set "WINDOWS_VER=6.1"
|
||||||
set "SUPPORTED_HOTFIXES=KB4022168 KB4022722 KB4022719 KB4019265 KB4019264 KB4015552 KB4015549 KB4015546 KB4012218"
|
set "WUAUENG_DLL_MIN_VER=7.6.7601.23714"
|
||||||
echo Detected supported operating system: Windows 7 %WINDOWS_ARCHITECTURE%
|
echo Detected supported operating system: Windows 7 %WINDOWS_ARCHITECTURE%
|
||||||
goto :check_hotfix
|
goto :check_wuaueng_ver
|
||||||
)
|
)
|
||||||
ver | findstr " 6\.3\." >nul && (
|
ver | findstr " 6\.3\." >nul && (
|
||||||
set "WINDOWS_VER=8.1"
|
set "WINDOWS_VER=8.1"
|
||||||
set "SUPPORTED_HOTFIXES=KB4022720 KB4022726 KB4022717 KB4019217 KB4019215 KB4015553 KB4015550 KB4015547 KB4012219"
|
set "WUAUENG_DLL_MIN_VER=7.9.9600.18621"
|
||||||
echo Detected supported operating system: Windows 8.1 %WINDOWS_ARCHITECTURE%
|
echo Detected supported operating system: Windows 8.1 %WINDOWS_ARCHITECTURE%
|
||||||
goto :check_hotfix
|
goto :check_wuaueng_ver
|
||||||
)
|
)
|
||||||
|
|
||||||
:unsupported_os
|
:unsupported_os
|
||||||
@@ -116,26 +117,16 @@ echo and that this warning is a mistake, you may continue with the patching proc
|
|||||||
echo at your own peril.
|
echo at your own peril.
|
||||||
goto :confirmation
|
goto :confirmation
|
||||||
|
|
||||||
:check_hotfix
|
:check_wuaueng_ver
|
||||||
echo Checking installed updates, please wait...
|
call :get_filever "%systemroot%\System32\wuaueng.dll"
|
||||||
for %%a in (%SUPPORTED_HOTFIXES%) do (
|
call :compareversion "%WUAUENG_DLL_MIN_VER%" "%Version%"
|
||||||
wmic /output:stdout qfe get hotfixid | find "%%a" >nul && (
|
if errorlevel 1 (
|
||||||
set "INSTALLED_HOTFIX=%%a"
|
|
||||||
echo Detected supported installed update: %%a
|
|
||||||
goto :confirmation
|
|
||||||
)
|
|
||||||
)
|
|
||||||
wmic /output:stdout qfe get /value 2>&1 | find "No Instance(s) Available" >nul && (
|
|
||||||
echo WARNING - wmic qfe is broken, can't check installed updates...
|
|
||||||
goto :confirmation
|
|
||||||
)
|
|
||||||
echo.
|
echo.
|
||||||
echo WARNING - Detected that no supported updates are installed.
|
echo ERROR - Detected that wuaueng.dll is below the minimum supported version.
|
||||||
echo.
|
echo.
|
||||||
echo This warning could also mean that a new update came out and the
|
goto :die
|
||||||
echo wufuc installer script's list of updates hasn't been updated yet.
|
)
|
||||||
echo If this is definitely the case and you know which update it is,
|
echo Detected supported Windows Update agent version: %Version%
|
||||||
echo feel free to create an issue. https://github.com/zeffy/wufuc/issues
|
|
||||||
|
|
||||||
:confirmation
|
:confirmation
|
||||||
echo.
|
echo.
|
||||||
@@ -143,17 +134,18 @@ echo wufuc disables the "Unsupported Hardware" message in Windows Update,
|
|||||||
echo and allows you to continue installing updates on Windows 7 and 8.1
|
echo and allows you to continue installing updates on Windows 7 and 8.1
|
||||||
echo systems with Intel Kaby Lake, AMD Ryzen, or other unsupported processors.
|
echo systems with Intel Kaby Lake, AMD Ryzen, or other unsupported processors.
|
||||||
echo.
|
echo.
|
||||||
echo Please be absolutely sure you really need wufuc before continuing.
|
echo Please be absolutely sure you really need wufuc before proceeding.
|
||||||
echo.
|
echo.
|
||||||
set /p CONTINUE=Enter 'Y' if you want to install wufuc:
|
set /p CONTINUE=Enter 'Y' if you want to install wufuc:
|
||||||
if /I not "%CONTINUE%"=="Y" goto :cancel
|
if /I not "%CONTINUE%"=="Y" goto :cancel
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
:install
|
:install
|
||||||
set "wufuc_task=wufuc.{72EEE38B-9997-42BD-85D3-2DD96DA17307}"
|
sfc /SCANFILE="%systemroot%\System32\wuaueng.dll"
|
||||||
net start Schedule
|
net start Schedule
|
||||||
|
set "wufuc_task=wufuc.{72EEE38B-9997-42BD-85D3-2DD96DA17307}"
|
||||||
schtasks /Create /XML "%wufuc_xml%" /TN "%wufuc_task%" /F
|
schtasks /Create /XML "%wufuc_xml%" /TN "%wufuc_task%" /F
|
||||||
schtasks /Change /TN "%wufuc_task%" /TR "'%systemroot%\system32\rundll32.exe' """%wufuc_dll%""",Rundll32Entry"
|
schtasks /Change /TN "%wufuc_task%" /TR "'%systemroot%\System32\rundll32.exe' """%wufuc_dll%""",Rundll32Entry"
|
||||||
schtasks /Change /TN "%wufuc_task%" /ENABLE
|
schtasks /Change /TN "%wufuc_task%" /ENABLE
|
||||||
rundll32 "%wufuc_dll%",Rundll32Unload
|
rundll32 "%wufuc_dll%",Rundll32Unload
|
||||||
net stop wuauserv
|
net stop wuauserv
|
||||||
@@ -179,3 +171,48 @@ echo.
|
|||||||
echo Canceled by user, press any key to exit...
|
echo Canceled by user, press any key to exit...
|
||||||
pause >nul
|
pause >nul
|
||||||
exit
|
exit
|
||||||
|
|
||||||
|
:get_filever file
|
||||||
|
set "file=%~1"
|
||||||
|
for /f "tokens=*" %%i in ('wmic /output:stdout datafile where "name='%file:\=\\%'" get Version /value ^| find "="') do set "%%i"
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:compareversion version1 version2
|
||||||
|
:: https://stackoverflow.com/a/15809139
|
||||||
|
:: Compares two version numbers and returns the result in the ERRORLEVEL
|
||||||
|
::
|
||||||
|
:: Returns 1 if version1 > version2
|
||||||
|
:: 0 if version1 = version2
|
||||||
|
:: -1 if version1 < version2
|
||||||
|
::
|
||||||
|
:: The nodes must be delimited by . or , or -
|
||||||
|
::
|
||||||
|
:: Nodes are normally strictly numeric, without a 0 prefix. A letter suffix
|
||||||
|
:: is treated as a separate node
|
||||||
|
setlocal enableDelayedExpansion
|
||||||
|
set "v1=%~1"
|
||||||
|
set "v2=%~2"
|
||||||
|
call :divideLetters v1
|
||||||
|
call :divideLetters v2
|
||||||
|
:loop
|
||||||
|
call :parseNode "%v1%" n1 v1
|
||||||
|
call :parseNode "%v2%" n2 v2
|
||||||
|
if %n1% gtr %n2% exit /b 1
|
||||||
|
if %n1% lss %n2% exit /b -1
|
||||||
|
if not defined v1 (
|
||||||
|
if not defined v2 ( exit /b 0 )
|
||||||
|
)
|
||||||
|
if not defined v1 ( exit /b -1 )
|
||||||
|
if not defined v2 ( exit /b 1 )
|
||||||
|
goto :loop
|
||||||
|
|
||||||
|
:parseNode version nodeVar remainderVar
|
||||||
|
for /f "tokens=1* delims=.,-" %%A in ("%~1") do (
|
||||||
|
set "%~2=%%A"
|
||||||
|
set "%~3=%%B"
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:divideLetters versionVar
|
||||||
|
for %%C in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set "%~1=!%~1:%%C=.%%C!"
|
||||||
|
exit /b
|
||||||
|
@@ -41,13 +41,14 @@ goto :die
|
|||||||
|
|
||||||
:is_x86
|
:is_x86
|
||||||
set "WINDOWS_ARCHITECTURE=x86"
|
set "WINDOWS_ARCHITECTURE=x86"
|
||||||
|
set "wufuc_dll=%~dp0wufuc32.dll"
|
||||||
goto :get_ver
|
goto :get_ver
|
||||||
|
|
||||||
:is_x64
|
:is_x64
|
||||||
set "WINDOWS_ARCHITECTURE=x64"
|
set "WINDOWS_ARCHITECTURE=x64"
|
||||||
|
set "wufuc_dll=%~dp0wufuc64.dll"
|
||||||
|
|
||||||
:get_ver
|
:get_ver
|
||||||
set "wufuc_dll=%~dp0wufuc.dll"
|
|
||||||
for /f "tokens=*" %%i in ('wmic /output:stdout datafile where "name='%wufuc_dll:\=\\%'" get Version /value ^| find "="') do set "%%i"
|
for /f "tokens=*" %%i in ('wmic /output:stdout datafile where "name='%wufuc_dll:\=\\%'" get Version /value ^| find "="') do set "%%i"
|
||||||
title wufuc uninstaller - v%Version%
|
title wufuc uninstaller - v%Version%
|
||||||
|
|
||||||
|
61
setup-batch/utility scripts/disable_wufuc.bat
Normal file
61
setup-batch/utility scripts/disable_wufuc.bat
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
@echo off
|
||||||
|
title wufuc utility - disable task
|
||||||
|
:: Copyright (C) 2017 zeffy
|
||||||
|
|
||||||
|
:: This program is free software: you can redistribute it and/or modify
|
||||||
|
:: it under the terms of the GNU General Public License as published by
|
||||||
|
:: the Free Software Foundation, either version 3 of the License, or
|
||||||
|
:: (at your option) any later version.
|
||||||
|
|
||||||
|
:: This program is distributed in the hope that it will be useful,
|
||||||
|
:: but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
:: GNU General Public License for more details.
|
||||||
|
|
||||||
|
:: You should have received a copy of the GNU General Public License
|
||||||
|
:: along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
echo Copyright ^(C^) 2017 zeffy
|
||||||
|
echo This program comes with ABSOLUTELY NO WARRANTY.
|
||||||
|
echo This is free software, and you are welcome to redistribute it
|
||||||
|
echo under certain conditions; see COPYING.txt for details.
|
||||||
|
echo.
|
||||||
|
|
||||||
|
fltmc >nul 2>&1 || (
|
||||||
|
echo This batch script requires administrator privileges. Right-click on
|
||||||
|
echo %~nx0 and select "Run as administrator".
|
||||||
|
goto :die
|
||||||
|
)
|
||||||
|
|
||||||
|
if /I "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
|
||||||
|
goto :is_x64
|
||||||
|
) else (
|
||||||
|
if /I "%PROCESSOR_ARCHITEW6432%"=="AMD64" (
|
||||||
|
goto :is_x64
|
||||||
|
)
|
||||||
|
if /I "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||||
|
goto :is_x86
|
||||||
|
)
|
||||||
|
)
|
||||||
|
goto :die
|
||||||
|
|
||||||
|
:is_x86
|
||||||
|
set "wufuc_dll=%~dp0..\wufuc32.dll"
|
||||||
|
goto :disable
|
||||||
|
|
||||||
|
:is_x64
|
||||||
|
set "wufuc_dll=%~dp0..\wufuc64.dll"
|
||||||
|
|
||||||
|
:disable
|
||||||
|
set "wufuc_task=wufuc.{72EEE38B-9997-42BD-85D3-2DD96DA17307}"
|
||||||
|
rundll32 "%wufuc_dll%",Rundll32Unload
|
||||||
|
net start Schedule
|
||||||
|
schtasks /Change /TN "%wufuc_task%" /DISABLE
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Disabled wufuc! You will still be able to check for updates until you restart.
|
||||||
|
|
||||||
|
:die
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
exit
|
@@ -1,5 +1,5 @@
|
|||||||
@echo off
|
@echo off
|
||||||
title wufuc utility - repair wuaueng.dll
|
title wufuc utility - enable task
|
||||||
:: Copyright (C) 2017 zeffy
|
:: Copyright (C) 2017 zeffy
|
||||||
|
|
||||||
:: This program is free software: you can redistribute it and/or modify
|
:: This program is free software: you can redistribute it and/or modify
|
||||||
@@ -27,25 +27,15 @@ fltmc >nul 2>&1 || (
|
|||||||
goto :die
|
goto :die
|
||||||
)
|
)
|
||||||
|
|
||||||
echo You may want to use this script if you previously modified wuaueng.dll
|
set "wufuc_task=wufuc.{72EEE38B-9997-42BD-85D3-2DD96DA17307}"
|
||||||
echo with "aio-wuaueng.dll-patch.bat" or by other means.
|
net start Schedule
|
||||||
echo.
|
schtasks /Change /TN "%wufuc_task%" /ENABLE
|
||||||
echo This will run the sfc utility and it will restore any changes that were made.
|
schtasks /Run /TN "%wufuc_task%"
|
||||||
echo.
|
|
||||||
|
|
||||||
set /p CONTINUE=Enter 'Y' if you want to repair wuaueng.dll:
|
echo.
|
||||||
if /I not "%CONTINUE%"=="Y" goto :cancel
|
echo Enabled and started wufuc!
|
||||||
|
|
||||||
sfc /SCANFILE="%systemroot%\System32\wuaueng.dll"
|
|
||||||
|
|
||||||
:die
|
:die
|
||||||
echo.
|
echo.
|
||||||
echo Press any key to exit...
|
pause
|
||||||
pause >nul
|
|
||||||
exit
|
|
||||||
|
|
||||||
:cancel
|
|
||||||
echo.
|
|
||||||
echo Canceled by user, press any key to exit...
|
|
||||||
pause >nul
|
|
||||||
exit
|
exit
|
23
wufuc/core.c
23
wufuc/core.c
@@ -13,9 +13,9 @@ DWORD WINAPI NewThreadProc(LPVOID lpParam) {
|
|||||||
|
|
||||||
TCHAR lpBinaryPathName[0x8000];
|
TCHAR lpBinaryPathName[0x8000];
|
||||||
get_svcpath(hSCManager, _T("wuauserv"), lpBinaryPathName, _countof(lpBinaryPathName));
|
get_svcpath(hSCManager, _T("wuauserv"), lpBinaryPathName, _countof(lpBinaryPathName));
|
||||||
|
CloseServiceHandle(hSCManager);
|
||||||
|
|
||||||
BOOL result = _tcsicmp(GetCommandLine(), lpBinaryPathName);
|
BOOL result = _tcsicmp(GetCommandLine(), lpBinaryPathName);
|
||||||
CloseServiceHandle(hSCManager);
|
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -44,11 +44,8 @@ DWORD WINAPI NewThreadProc(LPVOID lpParam) {
|
|||||||
DETOUR_IAT(hm, LoadLibraryExA);
|
DETOUR_IAT(hm, LoadLibraryExA);
|
||||||
DETOUR_IAT(hm, LoadLibraryExW);
|
DETOUR_IAT(hm, LoadLibraryExW);
|
||||||
|
|
||||||
TCHAR lpServiceDll[MAX_PATH];
|
HMODULE hwu = GetModuleHandle(get_wuauservdll());
|
||||||
get_svcdll(_T("wuauserv"), lpServiceDll, _countof(lpServiceDll));
|
if (hwu && PatchWU(hwu)) {
|
||||||
|
|
||||||
HMODULE hwu = GetModuleHandle(lpServiceDll);
|
|
||||||
if (hwu && PatchWUAgentHMODULE(hwu)) {
|
|
||||||
dwprintf(L"Patched previously loaded Windows Update module!");
|
dwprintf(L"Patched previously loaded Windows Update module!");
|
||||||
}
|
}
|
||||||
ResumeAndCloseThreads(lphThreads, cb);
|
ResumeAndCloseThreads(lphThreads, cb);
|
||||||
@@ -68,7 +65,7 @@ DWORD WINAPI NewThreadProc(LPVOID lpParam) {
|
|||||||
FreeLibraryAndExitThread(HINST_THISCOMPONENT, 0);
|
FreeLibraryAndExitThread(HINST_THISCOMPONENT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL PatchWUAgentHMODULE(HMODULE hModule) {
|
BOOL PatchWU(HMODULE hModule) {
|
||||||
LPSTR pattern;
|
LPSTR pattern;
|
||||||
SIZE_T offset00, offset01;
|
SIZE_T offset00, offset01;
|
||||||
#ifdef _AMD64_
|
#ifdef _AMD64_
|
||||||
@@ -131,11 +128,7 @@ HMODULE WINAPI _LoadLibraryExA(
|
|||||||
HMODULE result = LoadLibraryExA(lpFileName, hFile, dwFlags);
|
HMODULE result = LoadLibraryExA(lpFileName, hFile, dwFlags);
|
||||||
if (result) {
|
if (result) {
|
||||||
dwprintf(L"Loaded library: %S", lpFileName);
|
dwprintf(L"Loaded library: %S", lpFileName);
|
||||||
CHAR path[MAX_PATH];
|
if (!_stricmp(lpFileName, get_wuauservdllA()) && PatchWU(result)) {
|
||||||
if (!get_svcdllA("wuauserv", path, _countof(path))) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if (!_stricmp(lpFileName, path) && PatchWUAgentHMODULE(result)) {
|
|
||||||
dwprintf(L"Patched Windows Update module!");
|
dwprintf(L"Patched Windows Update module!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -150,11 +143,7 @@ HMODULE WINAPI _LoadLibraryExW(
|
|||||||
HMODULE result = LoadLibraryExW(lpFileName, hFile, dwFlags);
|
HMODULE result = LoadLibraryExW(lpFileName, hFile, dwFlags);
|
||||||
if (result) {
|
if (result) {
|
||||||
dwprintf(L"Loaded library: %s", lpFileName);
|
dwprintf(L"Loaded library: %s", lpFileName);
|
||||||
WCHAR path[MAX_PATH];
|
if (!_wcsicmp(lpFileName, get_wuauservdllW()) && PatchWU(result)) {
|
||||||
if (!get_svcdllW(L"wuauserv", path, _countof(path))) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if (!_wcsicmp(lpFileName, path) && PatchWUAgentHMODULE(result)) {
|
|
||||||
dwprintf(L"Patched Windows Update module!");
|
dwprintf(L"Patched Windows Update module!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
DWORD WINAPI NewThreadProc(LPVOID lpParam);
|
DWORD WINAPI NewThreadProc(LPVOID lpParam);
|
||||||
BOOL PatchWUAgentHMODULE(HMODULE hModule);
|
BOOL PatchWU(HMODULE hModule);
|
||||||
|
|
||||||
HMODULE WINAPI _LoadLibraryExA(
|
HMODULE WINAPI _LoadLibraryExA(
|
||||||
_In_ LPCSTR lpFileName,
|
_In_ LPCSTR lpFileName,
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
x64dbg license (GPL-3.0):
|
x64dbg license (GPL-3.0):
|
||||||
<https://github.com/x64dbg/x64dbg/blob/development/LICENSE> */
|
<https://github.com/x64dbg/x64dbg/blob/development/LICENSE> */
|
||||||
|
|
||||||
int hexchtoint(CHAR c) {
|
static int hexchtoint(CHAR c) {
|
||||||
int result = -1;
|
int result = -1;
|
||||||
if (c >= '0' && c <= '9') {
|
if (c >= '0' && c <= '9') {
|
||||||
result = c - '0';
|
result = c - '0';
|
||||||
@@ -19,7 +19,7 @@ int hexchtoint(CHAR c) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
SIZE_T formathexpattern(LPCSTR patterntext, LPSTR formattext, SIZE_T formattextsize) {
|
static SIZE_T formathexpattern(LPCSTR patterntext, LPSTR formattext, SIZE_T formattextsize) {
|
||||||
SIZE_T len = strlen(patterntext);
|
SIZE_T len = strlen(patterntext);
|
||||||
SIZE_T result = 0;
|
SIZE_T result = 0;
|
||||||
for (SIZE_T i = 0; i < len && (!formattext || result < formattextsize); i++) {
|
for (SIZE_T i = 0; i < len && (!formattext || result < formattextsize); i++) {
|
||||||
|
@@ -5,6 +5,9 @@
|
|||||||
#include "shellapihelper.h"
|
#include "shellapihelper.h"
|
||||||
#include "service.h"
|
#include "service.h"
|
||||||
|
|
||||||
|
static CHAR wuauservdllA[MAX_PATH];
|
||||||
|
static WCHAR wuauservdllW[MAX_PATH];
|
||||||
|
|
||||||
BOOL get_svcdllA(LPCSTR lpServiceName, LPSTR lpServiceDll, DWORD dwSize) {
|
BOOL get_svcdllA(LPCSTR lpServiceName, LPSTR lpServiceDll, DWORD dwSize) {
|
||||||
CHAR lpSubKey[257];
|
CHAR lpSubKey[257];
|
||||||
sprintf_s(lpSubKey, _countof(lpSubKey), "SYSTEM\\CurrentControlSet\\services\\%s\\Parameters", lpServiceName);
|
sprintf_s(lpSubKey, _countof(lpSubKey), "SYSTEM\\CurrentControlSet\\services\\%s\\Parameters", lpServiceName);
|
||||||
@@ -27,6 +30,20 @@ BOOL get_svcdllW(LPCWSTR lpServiceName, LPWSTR lpServiceDll, DWORD dwSize) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LPSTR get_wuauservdllA(void) {
|
||||||
|
if (wuauservdllA[0] == '\0') {
|
||||||
|
get_svcdllA("wuauserv", wuauservdllA, _countof(wuauservdllA));
|
||||||
|
}
|
||||||
|
return wuauservdllA;
|
||||||
|
}
|
||||||
|
|
||||||
|
LPWSTR get_wuauservdllW(void) {
|
||||||
|
if (wuauservdllW[0] == L'\0') {
|
||||||
|
get_svcdllW(L"wuauserv", wuauservdllW, _countof(wuauservdllW));
|
||||||
|
}
|
||||||
|
return wuauservdllW;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL get_svcpid(SC_HANDLE hSCManager, LPCTSTR lpServiceName, DWORD *lpdwProcessId) {
|
BOOL get_svcpid(SC_HANDLE hSCManager, LPCTSTR lpServiceName, DWORD *lpdwProcessId) {
|
||||||
SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_QUERY_STATUS);
|
SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_QUERY_STATUS);
|
||||||
if (!hService) {
|
if (!hService) {
|
||||||
|
@@ -6,9 +6,13 @@ BOOL get_svcpid(SC_HANDLE hSCManager, LPCTSTR lpServiceName, DWORD *lpdwProcessI
|
|||||||
BOOL get_svcgname(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPTSTR lpGroupName, SIZE_T dwSize);
|
BOOL get_svcgname(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPTSTR lpGroupName, SIZE_T dwSize);
|
||||||
BOOL get_svcpath(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPTSTR lpBinaryPathName, SIZE_T dwSize);
|
BOOL get_svcpath(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPTSTR lpBinaryPathName, SIZE_T dwSize);
|
||||||
BOOL get_svcgpid(SC_HANDLE hSCManager, LPTSTR lpServiceGroupName, DWORD *lpdwProcessId);
|
BOOL get_svcgpid(SC_HANDLE hSCManager, LPTSTR lpServiceGroupName, DWORD *lpdwProcessId);
|
||||||
|
LPSTR get_wuauservdllA(void);
|
||||||
|
LPWSTR get_wuauservdllW(void);
|
||||||
|
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
#define get_svcdll get_svcdllW
|
#define get_svcdll get_svcdllW
|
||||||
|
#define get_wuauservdll get_wuauservdllW
|
||||||
#else
|
#else
|
||||||
#define get_svcdll get_svcdllA
|
#define get_svcdll get_svcdllA
|
||||||
|
#define get_wuauservdll get_wuauservdllA
|
||||||
#endif
|
#endif
|
||||||
|
BIN
wufuc/version.rc
BIN
wufuc/version.rc
Binary file not shown.
@@ -74,28 +74,28 @@
|
|||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
||||||
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)$(PlatformArchitecture)</TargetName>
|
||||||
<GenerateManifest>false</GenerateManifest>
|
<GenerateManifest>false</GenerateManifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
||||||
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)$(PlatformArchitecture)</TargetName>
|
||||||
<GenerateManifest>false</GenerateManifest>
|
<GenerateManifest>false</GenerateManifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
||||||
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)$(PlatformArchitecture)</TargetName>
|
||||||
<GenerateManifest>false</GenerateManifest>
|
<GenerateManifest>false</GenerateManifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
<OutDir>$(ProjectDir)bin\$(Configuration)\$(PlatformShortName)\</OutDir>
|
||||||
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
<IntDir>$(ProjectDir)$(BaseIntermediateOutputPath)$(Configuration)\$(PlatformShortName)\</IntDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)$(PlatformArchitecture)</TargetName>
|
||||||
<GenerateManifest>false</GenerateManifest>
|
<GenerateManifest>false</GenerateManifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
Reference in New Issue
Block a user