fix wiki links in CONTRIBUTING.md, add links to Italian translation
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Contributing guidelines
|
# Contributing guidelines
|
||||||
|
|
||||||
**English** | [русский](translations/CONTRIBUTING.ru-RU.md) | [Français](translations/CONTRIBUTING.fr-FR.md) | [Deutsch](translations/CONTRIBUTING.de-DE.md) | [Magyar](translations/CONTRIBUTING.hu-HU.md) | [Portuguese (Brazil)](translations/CONTRIBUTING.pt-BR.md)
|
**English** | [русский](../../wiki/CONTRIBUTING-(русский)) | [Français](../../wiki/CONTRIBUTING-(Français)) | [Deutsch](../../wiki/CONTRIBUTING-(Deutsch)) | [Magyar](../../wiki/CONTRIBUTING-(Magyar)) | [Português Brasileiro](../../wiki/CONTRIBUTING-(Português-Brasileiro)) | [Italiano](../../wiki/CONTRIBUTING-(Italiano))
|
||||||
|
|
||||||
## Reporting an issue [](https://isitmaintained.com/project/zeffy/wufuc)
|
## Reporting an issue [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://isitmaintained.com/project/zeffy/wufuc)
|
# wufuc [](https://ci.appveyor.com/project/zeffy/wufuc) [](https://isitmaintained.com/project/zeffy/wufuc)
|
||||||
|
|
||||||
**English** | [русский](../../wiki/README-(русский)) | [Français](../../wiki/README-(Français)) | [Deutsch](../../wiki/CONTRIBUTING-(Deutsch)) | [Magyar](../../wiki/README-(Magyar)) | [Português Brasileiro](../../wiki/README-(Português-Brasileiro))
|
**English** | [русский](../../wiki/README-(русский)) | [Français](../../wiki/README-(Français)) | [Deutsch](../../wiki/README-(Deutsch)) | [Magyar](../../wiki/README-(Magyar)) | [Português Brasileiro](../../wiki/README-(Português-Brasileiro)) | [Italiano](../../wiki/README-(Italiano))
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
@@ -15,10 +15,10 @@ RTL_VERIFIER_THUNK_DESCRIPTOR g_vfK32ThunkDescriptors[] = {
|
|||||||
RTL_VERIFIER_DLL_DESCRIPTOR g_vfDllDescriptors[] = {
|
RTL_VERIFIER_DLL_DESCRIPTOR g_vfDllDescriptors[] = {
|
||||||
{ L"kernel32.dll", 0, NULL, g_vfK32ThunkDescriptors },
|
{ L"kernel32.dll", 0, NULL, g_vfK32ThunkDescriptors },
|
||||||
{ 0 } };
|
{ 0 } };
|
||||||
RTL_VERIFIER_DLL_DESCRIPTOR g_vfNullDllDescriptor[] = { { 0 } };
|
RTL_VERIFIER_DLL_DESCRIPTOR g_vfNullDllDescriptor = { 0 };
|
||||||
RTL_VERIFIER_PROVIDER_DESCRIPTOR g_vfProviderDescriptor = {
|
RTL_VERIFIER_PROVIDER_DESCRIPTOR g_vfProviderDescriptor = {
|
||||||
sizeof(RTL_VERIFIER_PROVIDER_DESCRIPTOR),
|
sizeof(RTL_VERIFIER_PROVIDER_DESCRIPTOR),
|
||||||
g_vfNullDllDescriptor,
|
&g_vfNullDllDescriptor,
|
||||||
//(RTL_VERIFIER_DLL_LOAD_CALLBACK)&VerifierDllLoadCallback,
|
//(RTL_VERIFIER_DLL_LOAD_CALLBACK)&VerifierDllLoadCallback,
|
||||||
//(RTL_VERIFIER_DLL_UNLOAD_CALLBACK)&VerifierDllUnloadCallback
|
//(RTL_VERIFIER_DLL_UNLOAD_CALLBACK)&VerifierDllUnloadCallback
|
||||||
};
|
};
|
||||||
@@ -47,7 +47,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv
|
|||||||
&QueryTable,
|
&QueryTable,
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
// TODO: check status and maybe fix implementation? idk...
|
// TODO: check status and maybe fix implementation? idk...
|
||||||
if ( !RtlCompareUnicodeString(&NtCurrentPeb()->ProcessParameters->CommandLine, &ImagePath, TRUE) )
|
if ( !RtlCompareUnicodeString(&NtCurrentPeb()->ProcessParameters->CommandLine, &ImagePath, TRUE) )
|
||||||
g_vfProviderDescriptor.ProviderDlls = g_vfDllDescriptors;
|
g_vfProviderDescriptor.ProviderDlls = g_vfDllDescriptors;
|
||||||
|
@@ -11,22 +11,24 @@
|
|||||||
#include <phnt_windows.h>
|
#include <phnt_windows.h>
|
||||||
#include <phnt.h>
|
#include <phnt.h>
|
||||||
|
|
||||||
|
#ifdef _M_AMD64
|
||||||
static const PatchSet X64PatchSet = { "FFF3 4883EC?? 33DB 391D???????? 7508 8B05????????", 0xA, 0x12 };
|
static const PatchSet X64PatchSet = { "FFF3 4883EC?? 33DB 391D???????? 7508 8B05????????", 0xA, 0x12 };
|
||||||
|
#elif defined(_M_IX86)
|
||||||
static const PatchSet Win7X86PatchSet = { "833D????????00 743E E8???????? A3????????", 0x2, 0xF };
|
static const PatchSet Win7X86PatchSet = { "833D????????00 743E E8???????? A3????????", 0x2, 0xF };
|
||||||
static const PatchSet Win81X86PatchSet = { "8BFF 51 833D????????00 7507 A1????????", 0x5, 0xD };
|
static const PatchSet Win81X86PatchSet = { "8BFF 51 833D????????00 7507 A1????????", 0x5, 0xD };
|
||||||
|
#endif
|
||||||
|
|
||||||
bool calculate_pointers(uintptr_t lpfn, const PatchSet *ps, LPBOOL *ppba, LPBOOL *ppbb)
|
bool calculate_pointers(uintptr_t lpfn, const PatchSet *ps, LPBOOL *ppba, LPBOOL *ppbb)
|
||||||
{
|
{
|
||||||
size_t bits = sizeof(uintptr_t) * 8;
|
#ifdef _M_AMD64
|
||||||
if ( bits == 64 ) {
|
*ppba = (LPBOOL)(lpfn + ps->Offset1 + sizeof(uint32_t) + *(uint32_t *)(lpfn + ps->Offset1));
|
||||||
*ppba = (LPBOOL)(lpfn + ps->Offset1 + sizeof(uint32_t) + *(uint32_t *)(lpfn + ps->Offset1));
|
*ppbb = (LPBOOL)(lpfn + ps->Offset2 + sizeof(uint32_t) + *(uint32_t *)(lpfn + ps->Offset2));
|
||||||
*ppbb = (LPBOOL)(lpfn + ps->Offset2 + sizeof(uint32_t) + *(uint32_t *)(lpfn + ps->Offset2));
|
return true;
|
||||||
return true;
|
#elif defined(_M_IX86)
|
||||||
} else if ( bits == 32 ) {
|
*ppba = (LPBOOL)(*(uintptr_t *)(lpfn + ps->Offset1));
|
||||||
*ppba = (LPBOOL)(*(uintptr_t *)(lpfn + ps->Offset1));
|
*ppbb = (LPBOOL)(*(uintptr_t *)(lpfn + ps->Offset2));
|
||||||
*ppbb = (LPBOOL)(*(uintptr_t *)(lpfn + ps->Offset2));
|
return true;
|
||||||
return true;
|
#endif
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,16 +37,14 @@ bool patch_wua(void *lpBaseOfDll, size_t SizeOfImage, wchar_t *fname)
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
const PatchSet *pps;
|
const PatchSet *pps;
|
||||||
size_t bits = sizeof(uintptr_t) * 8;
|
#ifdef _M_AMD64
|
||||||
if ( bits == 64 )
|
pps = &X64PatchSet;
|
||||||
pps = &X64PatchSet;
|
#elif defined(_M_IX86)
|
||||||
else if ( bits == 32 && verify_winver(6, 1, 0, 0, 0, VER_EQUAL, VER_EQUAL, 0, 0, 0) )
|
if ( verify_winver(6, 1, 0, 0, 0, VER_EQUAL, VER_EQUAL, 0, 0, 0) )
|
||||||
pps = &Win7X86PatchSet;
|
pps = &Win7X86PatchSet;
|
||||||
else if ( bits == 32 && verify_winver(6, 3, 0, 0, 0, VER_EQUAL, VER_EQUAL, 0, 0, 0) )
|
else if ( verify_winver(6, 3, 0, 0, 0, VER_EQUAL, VER_EQUAL, 0, 0, 0) )
|
||||||
pps = &Win81X86PatchSet;
|
pps = &Win81X86PatchSet;
|
||||||
else
|
#endif
|
||||||
goto L_ret;
|
|
||||||
|
|
||||||
unsigned char *ptr = patternfind(lpBaseOfDll, SizeOfImage, pps->Pattern);
|
unsigned char *ptr = patternfind(lpBaseOfDll, SizeOfImage, pps->Pattern);
|
||||||
if ( !ptr ) {
|
if ( !ptr ) {
|
||||||
trace(L"No pattern match! (couldn't patch)");
|
trace(L"No pattern match! (couldn't patch)");
|
||||||
@@ -57,7 +57,7 @@ bool patch_wua(void *lpBaseOfDll, size_t SizeOfImage, wchar_t *fname)
|
|||||||
if ( *pba == TRUE ) {
|
if ( *pba == TRUE ) {
|
||||||
if ( VirtualProtect(pba, sizeof(BOOL), PAGE_READWRITE, &flOldProtect) ) {
|
if ( VirtualProtect(pba, sizeof(BOOL), PAGE_READWRITE, &flOldProtect) ) {
|
||||||
*pba = FALSE;
|
*pba = FALSE;
|
||||||
trace(L"Patched boolean A at %ls!%p: %08X", fname, pba, *pba);
|
trace(L"Patched value a at %ls!%p: %08X", fname, pba, *pba);
|
||||||
if ( !VirtualProtect(pba, sizeof(BOOL), flOldProtect, &flOldProtect) )
|
if ( !VirtualProtect(pba, sizeof(BOOL), flOldProtect, &flOldProtect) )
|
||||||
trace(L"Failed to restore memory region permissions at %ls!%p (error code=%08X)", fname, pba, GetLastError());
|
trace(L"Failed to restore memory region permissions at %ls!%p (error code=%08X)", fname, pba, GetLastError());
|
||||||
} else trace(L"Failed to change memory region permissions at %ls!%p (error code=%08X)", fname, pba, GetLastError());
|
} else trace(L"Failed to change memory region permissions at %ls!%p (error code=%08X)", fname, pba, GetLastError());
|
||||||
@@ -65,7 +65,7 @@ bool patch_wua(void *lpBaseOfDll, size_t SizeOfImage, wchar_t *fname)
|
|||||||
if ( *pbb == FALSE ) {
|
if ( *pbb == FALSE ) {
|
||||||
if ( VirtualProtect(pbb, sizeof(BOOL), PAGE_READWRITE, &flOldProtect) ) {
|
if ( VirtualProtect(pbb, sizeof(BOOL), PAGE_READWRITE, &flOldProtect) ) {
|
||||||
*pbb = TRUE;
|
*pbb = TRUE;
|
||||||
trace(L"Patched boolean B at %ls!%p: %08X", fname, pbb, *pbb);
|
trace(L"Patched value b at %ls!%p: %08X", fname, pbb, *pbb);
|
||||||
if ( !VirtualProtect(pbb, sizeof(BOOL), flOldProtect, &flOldProtect) )
|
if ( !VirtualProtect(pbb, sizeof(BOOL), flOldProtect, &flOldProtect) )
|
||||||
trace(L"Failed to restore memory region permissions at %ls!%p: (error code=%08X)", fname, pbb, GetLastError());
|
trace(L"Failed to restore memory region permissions at %ls!%p: (error code=%08X)", fname, pbb, GetLastError());
|
||||||
} else trace(L"Failed to change memory region permissions at %ls!%p (error code=%08X)", fname, pbb, GetLastError());
|
} else trace(L"Failed to change memory region permissions at %ls!%p (error code=%08X)", fname, pbb, GetLastError());
|
||||||
|
Reference in New Issue
Block a user