Exemplo n.º 1
0
void GPSSensorUBX::AppendCheckSum(UBXMsg *msg) {
	unsigned char chA;
    unsigned char chB;
    unsigned char *buff = (unsigned char*)(&(msg->hdr));
    int len = (msg->hdr.length)+4;
    //DBG_MEMDUMP("Before CS",(char*)msg,len+2);
    ComputeCheckSum(buff,len,&chA,&chB);
    buff[len] = chA;
    buff[len+1] = chB;
    //DBG_MEMDUMP("AFTER CS",(char*)msg,len+4);
}
Exemplo n.º 2
0
void Header::Init(size_t size, const char* file_name, unsigned int line_num)
{
	m_iSize = size;
	m_sFileName = file_name;
	m_iLineNumber = line_num;

	m_pAddress = (this+1);
	m_pBlockNode = NULL;

	m_iCkeckSum = ComputeCheckSum();
}
Exemplo n.º 3
0
CString ConnectionLimit::WriteConnections(DWORD conns)
{
	PVOID oldValue = NULL;
	TCHAR windir[MAX_PATH];
	GetWindowsDirectory(windir, MAX_PATH);
		
	CString patchedFiles;
	for(int i=0; i<3; ++i)
	{
		CString path(windir);
		switch(i)
		{
			case 0:
				path+=DIR_LOC;
			break;
			case 1:
				path+=DIR_LOC_1;
			break;
			case 2:
				path+=DIR_LOC_2;
			break;
		}
		int id = GetBuildID(path);
		CFile file;
		DWORD dwOffset = 0;
		dwOffset = GetOffset(path);
		bool wasPatched = true;
		if(IsWow64())
		{
			MyWow64DisableWow64FsRedirection(&oldValue);
		}
		if(file.Open(path,CFile::modeReadWrite))
		{
			if(IsWow64())
			{
				MyWow64RevertWow64FsRedirection(oldValue);
			}
			if(dwOffset)
			{
				file.Seek(dwOffset,CFile::begin);
				file.Write(&conns, sizeof(conns));
				file.Close();
				DWORD checkSum = ComputeCheckSum(path);
				patchedFiles+=path;
				patchedFiles+="\n";
			}
		}
		int err = GetLastError();
	}
	
	return patchedFiles;
}
Exemplo n.º 4
0
bool ConnectionLimit::PatchVista()
{

	PVOID oldValue = NULL;
	TCHAR windir[MAX_PATH];
	GetWindowsDirectory(windir, MAX_PATH);
	CString path(windir);
	path+=DIR_LOC;
	int id = GetBuildID(path);
	if(id != 16384)
		return false;
	
	CFile file;
	DWORD dwOffset = 0;
	dwOffset = GetOffset(path);
	if(IsWow64())
	{
		MyWow64DisableWow64FsRedirection(&oldValue);
	}
	if(!file.Open(path,CFile::modeReadWrite))
	{
		//unlock file if not alredy unlocked
		UnlockFile(path);
	}
	else
	{
		file.Close();
	}
	if(file.Open(path,CFile::modeReadWrite))
	{
		if(IsWow64())
		{
			MyWow64RevertWow64FsRedirection(oldValue);
		}
		if(dwOffset)
		{
			file.Seek(dwOffset,CFile::begin);
			TCHAR num = 0x90;
			for(int i = 0; i<6; ++i)
			{
				file.Write(&num,sizeof(num));
			}
			file.Close();
			DWORD checkSum = ComputeCheckSum(path);
			return true;
		}
	}
	return false;
}
Exemplo n.º 5
0
VOID
HalpInitMpInfo (
    IN struct PcMpTable *MpTablePtr
    )

/*++
Routine Description:
    This routine initializes a HAL specific data structure that is
    used by the HAL to simplify access to MP information.

Arguments:
    MpTablePtr: Pointer to the MPS table.

 Return Value:
     Pointer to the HAL MP information table.

*/
{
    PUCHAR TraversePtr;
    UCHAR  CheckSum;

    // Walk the MPS table. The HAL MP information structure has
    // pointers to the first entry for each entry type in the MPS
    // table. Set these pointers.

    TraversePtr = (PUCHAR) MpTablePtr + HEADER_SIZE;

    HalpMpInfoTable.ProcessorEntryPtr = (PPCMPPROCESSOR) TraversePtr;

    HalpMpInfoTable.ApicVersion =
    (ULONG) (HalpMpInfoTable.ProcessorEntryPtr[0].LocalApicVersion & 0xf0);

    while(((PPCMPPROCESSOR)(TraversePtr))->EntryType == ENTRY_PROCESSOR) {
        if(((PPCMPPROCESSOR)(TraversePtr))->CpuFlags & CPU_ENABLED) {
            HalpMpInfoTable.ProcessorCount += 1;
        }
        TraversePtr += sizeof(PCMPPROCESSOR);
    }

    HalpMpInfoTable.BusEntryPtr = (PPCMPBUS) TraversePtr;
    while(((PPCMPBUS)(TraversePtr))->EntryType == ENTRY_BUS) {
        HalpMpInfoTable.BusCount += 1;
        TraversePtr += sizeof(PCMPBUS);
    }

    HalpMpInfoTable.IoApicEntryPtr = (PPCMPIOAPIC) TraversePtr;
    while(((PPCMPIOAPIC)(TraversePtr))->EntryType == ENTRY_IOAPIC) {
        if(((PPCMPIOAPIC)(TraversePtr))->IoApicFlag & IO_APIC_ENABLED) {
            HalpMpInfoTable.IOApicCount += 1;
        }
        TraversePtr += sizeof(PCMPIOAPIC);
    }

    if (UserSpecifiedNoIoApic) {
        HalpMpInfoTable.IOApicCount = 0;
    }

    HalpMpInfoTable.IntiEntryPtr = (PPCMPINTI) TraversePtr;
    while(((PPCMPINTI)(TraversePtr))->EntryType == ENTRY_INTI) {
        HalpMpInfoTable.IntiCount += 1;
        TraversePtr += sizeof(PCMPINTI);
    }

    HalpMpInfoTable.LintiEntryPtr = (PPCMPLINTI) TraversePtr;
    while(((PPCMPLINTI)(TraversePtr))->EntryType == ENTRY_LINTI) {
        HalpMpInfoTable.LintiCount += 1;
        TraversePtr += sizeof(PCMPLINTI);
    }

    //
    // Check for Extension table defined
    //

    if (MpTablePtr->ExtTableLength  &&
        MpTablePtr->TableLength + MpTablePtr->ExtTableLength < 8192) {

        CheckSum = ComputeCheckSum(
                        (PUCHAR) MpTablePtr + MpTablePtr->TableLength,
                        MpTablePtr->ExtTableLength
                        );

        CheckSum += MpTablePtr->ExtTableChecksum;

        if (CheckSum != 0) {
            DBGMSG("HALMPS: InitMpInfo: Extension table checksum error\n");

        } else {
            HalpMpInfoTable.ExtensionTable = (PMPS_EXTENTRY)
                (((PUCHAR) MpTablePtr) + MpTablePtr->TableLength);

            HalpMpInfoTable.EndOfExtensionTable = (PMPS_EXTENTRY)
                (((PUCHAR) MpTablePtr) + MpTablePtr->TableLength +
                                        MpTablePtr->ExtTableLength);
        }
    }

    return;
}
Exemplo n.º 6
0
bool Header::CheckSum() const
{
	return (m_iCkeckSum == ComputeCheckSum());
}