Показать сообщение отдельно
Старый 15.11.2018, 14:33   #15
Местный
 
Аватар для kaganec
 
Регистрация: 16.06.2015
Адрес: Павловский посад
Сообщений: 82
Репутация: 9
По умолчанию

Re: iCCupUnrealMaphack [Исходный код]


Misery, А в какую студию кидать?
Я пробовал пока что на двух студии это было 2008 С# и Visual Studio 2012 и на обоях одна и та же ошибка Project file contains ToolsVersion="12.0"

Скажи пожалуйста подробнее на чём их строить на какой версии..?

Добавлено через 33 минуты
Есть еще один исходник от Abso MicroSrc.cpp короче данный хак пингует мини карту врагов и союзников я бы хотел сделать так что бы моргало только на врагов но не на союзников и еще после смерти врага чтобы не моргал до тех пор пока он не появится на базе.


Пожалуйста помогите доделать исходный код до финала

Код:
#include <windows.h>

HWND FindMyTopMostWindow(); // Находим какое-нибудь окошко 

bool IsGame(void); // Нужно узнать в игре или нет

void CALLBACK PingTimer(HWND,UINT,UINT,DWORD);  // Тут таймер


typedef int (__cdecl *HEROLEVEL)(DWORD HERO);
HEROLEVEL GetHeroLevel = NULL; // Уровень героя, если больше чем 0 значит герой существует.

typedef int(__cdecl *PLAYERINDEX)(DWORD PLAYER);
PLAYERINDEX GetPlayerIndex = NULL; // Возвращает индекс игрока

typedef DWORD(__cdecl *PLAYEROWNER)(DWORD HERO);
PLAYEROWNER OwningPlayer = NULL; // Возвращает игрока которому принадлежит герой 

typedef void  (__cdecl *PINGMM)(float *x, float *y, float *dur, int red, int green, int blue, bool effects);
PINGMM CreatePingMM = NULL;  // Мигает где находятся герои на МиниМапе.


union FLOATANDDWORDp
{
	DWORD DWordvalue;
	float floatvalue;
};

typedef FLOATANDDWORDp (__cdecl *HEROX)(DWORD whichUnit);
HEROX GetHeroX = NULL;
typedef FLOATANDDWORDp(__cdecl *HEROY)(DWORD whichUnit);
HEROY GetHeroY = NULL;


DWORD GameDll = NULL;


BOOL APIENTRY DllMain(HINSTANCE hiDLL, DWORD reason, LPVOID)
{
	switch (reason)
	{
	case DLL_PROCESS_ATTACH:
		{
			GameDll = (DWORD)GetModuleHandle("Game.dll");
			GetHeroLevel = (HEROLEVEL) (GameDll + 0x3C6ED0);
			GetPlayerIndex = (PLAYERINDEX) (GameDll + 0x3C1240);
			OwningPlayer = (PLAYEROWNER) (GameDll + 0x3C8190);
			CreatePingMM = (PINGMM) (GameDll + 0x3B8660);
			GetHeroX = (HEROX) (GameDll + 0x3C5510);
			GetHeroY = (HEROY) (GameDll + 0x3C5550);

			if (!GameDll)
				return 0;
			SetTimer(FindMyTopMostWindow(),
			112,
			1200, // Каждые 1.2 сек пингуем карту.
			(TIMERPROC) PingTimer);
		}
		break;
	case DLL_PROCESS_DETACH:
		{
			KillTimer(FindMyTopMostWindow(), 112);
		}
		break;
	}
	return 1;
}



void CALLBACK PingTimer(
	HWND hwnd,
	UINT message,
	UINT idTimer,
	DWORD dwTime)
{
	if (IsGame())
	for (DWORD i = 0x100000; i < 0x200000; i++) // Знаю что начинается первый юнит с 0x100000 , + ~18 на каждого юнита, 0x200000 достаточно.
	{
		if (GetHeroLevel(i) > 0)
		{
			float x = GetHeroX(i).floatvalue; // получаем координаты
			float y = GetHeroY(i).floatvalue;
			float time = 0.9f; // 0.9 секунды будет длиться пинг
			int playerind = GetPlayerIndex(OwningPlayer(i)); // индекс начинается с 0
			playerind++;

			int red, green, blue;
			if (playerind == 1)
			{
				red = 255; green = 2; blue = 2;
			}
			else if (playerind == 2)
			{
				red = 0; green = 65; blue = 255;
			}
			else if (playerind == 3)
			{
				red = 27; green = 229; blue = 184;
			}
			else if (playerind == 4)
			{
				red = 83; green = 0; blue = 128;
			}
			else if (playerind == 5)
			{
				red = 255; green = 255; blue = 0;
			}
			else if (playerind == 6)
			{
				red = 254; green = 137; blue = 13;
			}
			else if (playerind == 7)
			{
				red = 31; green = 191; blue = 0;
			}
			else if (playerind == 8)
			{
				red = 228; green = 90; blue = 170;
			}
			else if (playerind == 9)
			{
				red = 148; green = 149; blue = 150;
			}
			else if (playerind == 10)
			{
				red = 125; green = 190; blue = 241;
			}
			else if (playerind == 11)
			{
				red = 15; green = 97; blue = 69;
			}
			else
			{
				red = 77; green = 41; blue = 3;
			}

			CreatePingMM(&x, &y, &time, red, green, blue, false);

		}
	}
}





bool IsGame()
{
	return ((*(bool*) (GameDll + 0xACF678)) || ((*(int*) (GameDll + 0xAB5738)==4) && (*(int*) (GameDll + 0xAB573C)==4)));
}








HWND FindMyTopMostWindow()
{
	DWORD dwProcID = GetCurrentProcessId();
	HWND hWnd = GetTopWindow(GetDesktopWindow());
	while (hWnd)
	{
		DWORD dwWndProcID = 0;
		GetWindowThreadProcessId(hWnd, &dwWndProcID);
		if (dwWndProcID == dwProcID)
			return hWnd;
		hWnd = GetNextWindow(hWnd, GW_HWNDNEXT);
	}
	return NULL;
}
__________________
Профиль удалён!

Последний раз редактировалось kaganec; 15.11.2018 в 15:07. Причина: Добавлено сообщение
  Ответить с цитированием Наверх