uint8_t MXSConfig::GetSensorType()
{
	pinMode(12, INPUT);
	pinMode(13, INPUT);
	pinMode(14, INPUT);
	pinMode(15, INPUT);
	pinMode(2, INPUT);

	uint8_t tryed=0;
	while (addr[0] != 0x2D && tryed<5)
	{
		SearchAddress(addr);
		tryed++;
	}
	if (tryed==20)
		return 0;

	ds.reset();
	ds.select(addr);
	ds.write(0xF0, 1); // Read Memory
	ds.write(0x00, 1); //Read Offset 0000h
	ds.write(0x00, 1);
	ds.read();
	ds.read();
	return ds.read();
}
Example #2
0
DWORD CAttachMemory::GetCodeAddress(LPBYTE lpData, size_t Length)
{
	if (m_pExeNTHdr == NULL)
		return 0;

	PIMAGE_SECTION_HEADER pTextSect = GetSectionHeader(0);
	DWORD dwTextAddress = m_pExeNTHdr->OptionalHeader.ImageBase + pTextSect->VirtualAddress;

	return SearchAddress(dwTextAddress, pTextSect->Misc.VirtualSize, lpData, Length);
}
Example #3
0
DWORD CAttachMemory::SearchData(LPCTSTR lpTargetString)
{
	if (m_pExeNTHdr == NULL)
		return 0;

	PIMAGE_SECTION_HEADER pDataSect = GetSectionHeader(2);
	DWORD dwDataAddress = m_pExeNTHdr->OptionalHeader.ImageBase + pDataSect->VirtualAddress;
	DWORD dwTargetAddress = SearchAddress(dwDataAddress, pDataSect->Misc.VirtualSize, lpTargetString);

	return dwTargetAddress;
}
Example #4
0
DWORD CAttachMemory::GetCallAddress(DWORD shift)
{
	if (m_pExeNTHdr == NULL)
		return 0;

	BYTE code[5];
	code[0] = 0xE8;
	*reinterpret_cast<DWORD*>(code+1) = shift;

	PIMAGE_SECTION_HEADER pTextSect = GetSectionHeader(0);
	DWORD dwTextAddress = m_pExeNTHdr->OptionalHeader.ImageBase + pTextSect->VirtualAddress;

	return SearchAddress(dwTextAddress, pTextSect->Misc.VirtualSize, code, 0x05) + 0x05 + shift;
}
uint16_t MXSConfig::GetSensorinterval()
{
	if (addr[0] != 0x2D)
	{
		SearchAddress(addr);
		if (addr[0] != 0x2D)
			return 0;
	}
	ds.reset();
	ds.select(addr);
	ds.write(0xF0, 1); // Read Memory
	ds.write(0x00, 1); //Read Offset 0000h
	ds.write(0x00, 1);
	ds.read();
	ds.read();
	ds.read();
	return (uint16_t)ds.read()+(uint16_t)ds.read()*256;
}
int MXSConfig::GetSensorInfo(uint8_t sensortype,uint16_t sensorinterval)
{
	if (addr[0] != 0x2D)
	{
		SearchAddress(addr);
		if (addr[0] != 0x2D)
			return 0;
	}
	ds.reset();
	ds.select(addr);
	ds.write(0xF0, 1); // Read Memory
	ds.write(0x00, 1); //Read Offset 0000h
	ds.write(0x00, 1);
	ds.read();
	ds.read();
	sensortype= ds.read();
	sensorinterval=(uint16_t)ds.read()+(uint16_t)ds.read()*256;
	return 1;
}
Example #7
0
DWORD CAttachMemory::SearchCode(LPBYTE lpData, size_t Length, int shift)
{
	if (m_pExeNTHdr == NULL)
		return 0;

	PIMAGE_SECTION_HEADER pTextSect = GetSectionHeader(0);
	DWORD dwTextAddress = m_pExeNTHdr->OptionalHeader.ImageBase + pTextSect->VirtualAddress;

	DWORD dwAddress = SearchAddress(dwTextAddress, pTextSect->Misc.VirtualSize, lpData, Length) + shift;
	if (dwAddress == 0)
		return 0;

	DWORD dwOldProtect, dwTargetAddress;
	::VirtualProtect(reinterpret_cast<LPVOID>(dwAddress), sizeof(DWORD), PAGE_READWRITE, &dwOldProtect);
	::CopyMemory(&dwTargetAddress, reinterpret_cast<LPCVOID>(dwAddress), sizeof(DWORD));
	::VirtualProtect(reinterpret_cast<LPVOID>(dwAddress), sizeof(DWORD), dwOldProtect, &dwOldProtect);

	return dwTargetAddress;
}
int MXSConfig::ReadAllMem(byte* memdata,byte size)
{
	int i;
	if (addr[0] != 0x2D)
	{
		SearchAddress(addr);
		if (addr[0] != 0x2D)
			return 0;
	}
	ds.reset();
	ds.select(addr);
	ds.write(0xF0, 1); // Read Memory
	ds.write(0x00, 1); //Read Offset 0000h
	ds.write(0x00, 1);

	for (i = 0; i < size; i++) //whole mem is 144
	{
		memdata[i] = ds.read();

	}
	return 1;

}