RegistryOverwriteCentralProcessor
INT64 __fastcall RegistryOverwriteCentralProcessor(){
WCHAR v0;
NTSTATUS v1;
unsigned int v2;
UINT64 i;
WCHAR v4;
WCHAR v5;
wchar_t *Buffer;
int v7;
WCHAR v8;
WCHAR v9;
WCHAR v10;
PVOID Data;
UINT64 DataSizea;
UINT64 DataSizeb;
UINT64 DataSize;
UINT64 ResultLength;
HANDLE Handle;
void *KeyHandle;
struct _UNICODE_STRING ValueName;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
struct _UNICODE_STRING v21;
struct _UNICODE_STRING DestinationString;
struct _UNICODE_STRING v23;
__int128 KeyInformation;
WCHAR SourceString[8];
__int64 v26;
*(_QWORD *)&ObjectAttributes.Length = 48i64;
*(_QWORD *)&ObjectAttributes.Attributes = 576i64;
KeyHandle = 0i64;
LODWORD(ResultLength) = 0;
v26 = 0i64;
Handle = 0i64;
DestinationString = 0i64;
v23 = 0i64;
ValueName = 0i64;
KeyInformation = 0i64;
*(_OWORD *)SourceString = 0i64;
v21 = 0i64;
RtlInitUnicodeString(&DestinationString, L"\\Registry\\Machine\\Hardware\\Description\\System\\CentralProcessor", v0);
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.ObjectName = &DestinationString;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
v1 = ZwOpenKey(&KeyHandle, 8u, &ObjectAttributes);
if( v1 >= 0 )
{
v2 = 0;
for( i = 0i64; ; i = v2 )
{
LODWORD(Data) = 38;
v1 = ZwEnumerateKey(KeyHandle, i, KeyBasicInformation, &KeyInformation, (UINT64)Data, &ResultLength);
if( v1 == -2147483622 )
break;
++v2;
if( v1 >= 0 )
{
SourceString[(unsigned __int64)HIDWORD(KeyInformation) >> 1] = 0;
RtlInitUnicodeString(&v23, SourceString, v10);
ObjectAttributes.RootDirectory = KeyHandle;
ObjectAttributes.Length = 48;
ObjectAttributes.ObjectName = &v23;
ObjectAttributes.Attributes = 576;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
if( ZwOpenKey(&Handle, 0xF003Fu, &ObjectAttributes) >= 0 )
{
RtlInitUnicodeString(&v21, L"Not Available", v4);
RtlInitUnicodeString(&ValueName, L"VendorIdentifier", v5);
Buffer = v21.Buffer;
v7 = v21.Length + 2;
LODWORD(DataSize) = v7;
ZwSetValueKey(Handle, &ValueName, 0i64, 1ui64, v21.Buffer, DataSize);
RtlInitUnicodeString(&ValueName, L"ProcessorNameString", v8);
LODWORD(DataSizea) = v7;
ZwSetValueKey(Handle, &ValueName, 0i64, 1ui64, Buffer, DataSizea);
RtlInitUnicodeString(&ValueName, L"Identifier", v9);
LODWORD(DataSizeb) = v7;
ZwSetValueKey(Handle, &ValueName, 0i64, 1ui64, Buffer, DataSizeb);
ZwClose(Handle);
}
}
}
}
if( KeyHandle )
ZwClose(KeyHandle);
return(unsigned int)v1;
}Referenced by:
StartFirstUserProcess