Перейти к содержанию

temtriss

Пользователи+
  • Постов

    174
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Сообщения, опубликованные temtriss

  1. Ну собственно вот, сильно ногами не бейте, несколько раз оговорился при описании загрузки))(сегодня тяпница все таки))

     

    Ну и собственно код:

    Спойлер
    
    #include <Windows.h>
    #include "resource.h"
    HWND hWnd;
    MSG uMsg;
    LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    
    int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,LPSTR lpCommandLine , int nCmdShow)
    {
    	
    	WNDCLASSEX WndClass = { 0 };
    	WndClass.cbSize = sizeof(WNDCLASSEX);
    	WndClass.hbrBackground = CreatePatternBrush(LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2)));
    	WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    	WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	WndClass.hInstance = hInst;
    	WndClass.lpfnWndProc = WndProc;
    	WndClass.lpszClassName = "Main Window";
    
    	RegisterClassEx(&WndClass);
    
    	hWnd = CreateWindowEx(0,WndClass.lpszClassName, "WndWithCustumBrush", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
    		(GetSystemMetrics(SM_CXSCREEN) - 640) / 2, (GetSystemMetrics(SM_CYSCREEN) - 480) / 2, 640, 480, NULL, NULL, NULL, NULL);
    
    	ShowWindow(hWnd, SW_SHOWDEFAULT);
    	while (GetMessage(&uMsg, hWnd, NULL, NULL))
    	{
    		TranslateMessage(&uMsg);
    		DispatchMessage(&uMsg);
    	}
    	return uMsg.wParam;
    }
    
    LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    	// Обработчик оконных сообщений
    	switch (uMsg)
    	{
    	case WM_CLOSE:
    		ExitProcess(0);
    		break;
    	default:
    		return DefWindowProc(hWnd, uMsg, wParam, lParam);
    	}
    }

     

    P.S. еще раз извеняюсь за оговорки и голос, чуток синий :D

    • Понравилось 1
    • Плюс 1
  2. 33 минуты назад, partoftheworlD сказал:

    Но оно не должно мешать.

    Ну по сути да, просто задался вопросом почему так, 43 строки лишние написал))

    Да и задача решена. 

    36 минут назад, partoftheworlD сказал:

    попробуй описать свой функционал в колбеке

    Так CALLBACK - дефайн __stdcall 

    Так что так и есть. Да и под отладчиком все вроде нормально да и мой нумератор вызывается вместо оригинального.

    44 минуты назад, partoftheworlD сказал:

    ничего необычного в нем нет, ну не считая этого

    Оббил переменную 0 с двух сторон :D

     

    Ладно,  я еще этот вопрос завтра помучаю, сегодня я до функции декода пакетов дорвался,  уже желания с нумератором нету копаться)

  3. Всем прив. Возникла небольшая проблема, не могу разобраться почему.

    Собственно писал обход запрета запуска CE/olly/artmoney и прочего. В игре это устроено циклом.

    Ищет окна по названию(FindWindowA)

    Делает снапшот процессов и прогоняет их(Process32NextW)

    Нумерует окна(EnumWindows)

    Если что-то прокнуло, дисконект от сервера.

    По сути поставленую задачу я решил, хукнул выше указаные функции

    в FindWindowA в любом случае возвращаю NULL, В Process32NextW Проверяю нужно ли прятать приложение, если да, то просто обнуляю LPPROCESSENTRY32W и делаю рекурсивный вызов хукнутой Process32NextW.

    Далее EnumWindows:

    BOOL __stdcall Hooked_EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)
    {
    	// структура для возвращения оригинальной функции и параметров
    	tORGENUMINFO tWinEnumInfo = { lpEnumFunc, lParam };
    
    	// Запускаем наш нумератор и фильтруем то, что не должно видеть приложение :)
    	return oEnumWindows(MyEnumWindowsProc, (LPARAM)&tWinEnumInfo);
    }

    Отрабатывает на ура.

    Вызывается мой нумератор:

    SIZESTR - дефайн sizeof - 1

    static BOOL __stdcall MyEnumWindowsProc(HWND hWnd, LPARAM lParam)
    {
    	if (hWnd)
    	{
    		char WindowTitle[1024];
    		WindowTitle[0] = WindowTitle[SIZESTR(WindowTitle)] = 0;
    		if (GetWindowTextA(hWnd, WindowTitle, SIZESTR(WindowTitle)) > 0) // Я не получаю заголовок окна и возращаю FALSE
                {
            	// Код моего нумератора приводить смысла нету
                }
    	}
    	return(FALSE);
    }

    Но по итогу игра получает FALSE всегда, даже для тех окон которые прятать не нужно. т.к. я не получаю заголовок окна. 

    В принципе работает и ладно, но очень хотелось бы разобратся почему так.

    GetLastError показывает 2 кода

    0x12 или 0x2

     

    Хотя поставленая задача была решена, но, мне очень интересно, почему мне не получить заголовок окна О_о

  4. Эх, допилил бы DarkByte DBVM для 8700к

    На форуме вроде писал, что из-за кол-ва ядер не работает DBVM, и вроде в планах есть, но могу ошибаться.

    Оууу) Заработала DBVM на 8700к :) Урааа!)

  5. В 26.04.2018 в 23:52, X86Jumps сказал:

    у меня уже тут ошибку дает

     

    У меня так же было)) Для устранения #include <array>

    Да у меня тоже студия видила std::array, но ругалась на какую-то хрень :) Подключил array перестала ошибка вылезать))

     

  6. 4 часа назад, srg91 сказал:

    vector<array<vector<int>,2>> r = {{x, y}};

    Хм... интересненькая задача))) Правда у меня студия уже тут начинает матерится, на отсутсвие экземпляра конструктора, для соответствующего списка аргументов. 

    Правда я особо не использовал vector, а чаще обходился обычными массивами. Сейчас попробую покапаться,  может что-то и найду :))

     

    Блин, думал, что разобрался, уже расписал ответ, и уже по нему понял, что нет :(

    Приложу скрин того, как это видит студия, дабы еще больше нас запутать :D

     

    https://drive.google.com/open?id=1OnRtK1surpqcFF_hM7OLqZkwQ4SPGkN3

     

    Судя по скрину студия так же видит. 

    {НашКонтенер{Масив{Элемент масива}}}

     

    Если ответ найдется, отпишите тут, а то мне тоже интересно :)

     

  7. Хотя в памяти оно лежит именно в этом порядке - Текст, Первое оружие, Второе

     Так что может и то) 

    Правильно или не правильно?

    Так то интересная затея :) 

    Было бы побольше итемов в инвентаре :)

    • Плюс 1
  8. В 27.03.2018 в 20:40, ReWanet сказал:

    1. Здесь текст
    2. Здесь первое оружие
    3. Здесь второе оружие
    То или не то?

    Видимо я нашел что-то не то? У меня получилось так:

    Указатель на Итем1

    Указатель на Итем2

    Указатель на указатель в нем текст 

    • Плюс 1
  9. В 13.03.2018 в 21:40, keng сказал:

    обе тулзы попытаются его хукнуть - будет конфликт.

    да, это понятно, по этому вопрос и задал :)))

     

    В 13.03.2018 в 22:42, mrPTyshnik сказал:

    Найти адрес прыжка в эту тулзу

    спасибо, попробую сегодня :)))

  10. Сразу оговорюсь, как найти девайс, хукнуть и прочее я знаю.(даже собственные проекты примитивных менюшек есть)

    Но в данный момент нету компа под рукой, по этому пока не могу попробовать, но вот в чем вопрос.

    Имеется некая игры(GW2 если очень важно название),  к ней имеется некая тулза, которая в свою очередь уже хукает DX функции и использует ImGui интерфейс.

    Естественно исходников тулзы я не имею,  могу ли я как-то реализовать свою тулзу и использовать паралельно с этой(тоже планируется ImGui) ???

    Если есть какие-то ссылки на подобное или гайды(Английские так же устроят) буду очень благодарен :)

  11. 2 минуты назад, pachela сказал:

    Ведь у меня есть поворот тела от 0 до 6.28 и нет отрицательного

    Только что об этом подумал, у меня было от -3.14 до 3.14 двойное в вашем примере аналогично но от нуля до 6.28

  12. 4 минуты назад, pachela сказал:

    ///Объявляем переменные и присваиваем им нулевое значение?

    Да правильно. Инициализировали нулем, что бы не столкнутся с багами(хрен знает что там в памяти)

     

    10 минут назад, pachela сказал:

    ///Почему следующая переменная полный круг double? И что значит M_PI? или мне это не нужно?

    Это полукруг, он не как не используется M_PI - дефайн из math.h 

    M_PI = 3.14 - число Пи

    13 минуты назад, pachela сказал:

    //Это я тоже не знаю зачем. Какое то значение =)

    Это просто вывод в консоль. 

     

    13 минуты назад, pachela сказал:

    cout << "Input X:" << endl; //Это Х по факту?

    Это вывод сообщения на экран с прозьбой ввести X

    14 минуты назад, pachela сказал:

    cin >> X;

    А вот это получение переменной от пользователя. Х по факту. Аналогично с Y

    15 минут назад, pachela сказал:

    cout << "Input needed X:" << endl; //Х конечной точки?

    Вывод сообщения в консоль с прозьбой ввести конечную точку.

    16 минут назад, pachela сказал:

    //Как я понял, мы вызвали функция калькуляции угла и калькуляции окружности и вывели это дело на экран

    Да так и есть. 

    В это части кода был только вывод на экран и получение параметров. Основная функция ниже

     

    17 минут назад, pachela сказал:

    //Почему в этой функции все переменные double? Я же могу их заменить на float?

    Дабл - число с плавающей точкой повышеной точности. Теоретически не возникнет проблем если мы скормим float в эту переменную. А на сколько я помню для правильной работы тригонометрических функций нужен double, но я могу ошибатся, так что не волнуйтесь за типы.

     

    20 минут назад, pachela сказал:

    //В MSDN вижу, что в atan используется double, не возникнет ли конфликта при вычислениях Ydiff и Xdiff

    Вот мои слова выше подтвердились, нужен дабл, но в дабл можно скормить флоат значение. :)

     

    20 минут назад, pachela сказал:

    //ведь X и Y у нас в флоат, да и значение поворота камеры у меня тоже флоат.

    Конфликтов не будет :)

     

    Вроде на все вопросы ответил :))

     

    P.s. Не уверен надо ли что-то тут прятать под сполер, если что прошу понять и простить! :)

     

     

  13. float и до 6.28?

    Так, если я правильно помню, то меняем секцию 1 и 2, а меняем так, 

    Секция один: 

    tmp = 360 - AngleA;

     

    Секция 2:

     

    tmp = 180+ AngleA;

    Теоретически должно отработать, может возникнуть путаница со сторонами, но надеюсь поможет) потести

  14. в первую очередь найди угол обзора. 

    В радианах он или в градусах - пофиг, всегда можно конвертнуть

    я сейчас найду на винте и скину код, калькулятора угла(подбираю с помощью него угол обзора, если все сходится, добавляю расчеты в проект)

    От тебя потребуется узнать в чем у нас измеряет угол обзора игра и мин/макс значение угла, я подскажу как поправить код или если уловишь суть можешь по эксперементировать сам.

     

    Скрытый текст
    
    #include <iostream>
    #include <Windows.h>
    
    #define _USE_MATH_DEFINES
    #include <math.h>
    
    float CalcAngle(float X, float Y, float nX, float nY); // Портотип функции
    float CalcRadians(float angle); // Портотип функции
    
    using namespace std;
    
    int main()
    {
    	float X = 0;
    	float Y = 0;
    	float nX = 0;
    	float nY = 0;
    	double halfcircle = M_PI;
    	// Ввод/Вывод нужной информации
    	cout << "Angel Calculator by Wi11ka" << endl;
    	// Проверяем наши переменные
    	cout << "Math PI: " << M_PI << endl; // not needed :D
    	
    	// Получаем нужные значение от пользователя
    	// и сразу же выводим значение для проверки правильности.
    	cout << "Input X:" << endl;
    	cin  >> X;
    	cout << "X =" << X << endl;
    	cout << "Input Y:" << endl;
    	cin >> Y;
    	cout << "Y =" << Y << endl;
    	cout << "Input needed X:" << endl;
    	cin >> nX;
    	cout << "Needed X = " << nX << endl;
    	cout << "Input needed Y:" << endl;
    	cin >> nY;
    	cout << "Needed Y = " << nY << endl;
    
    	// Вызываем функцию Калькулирующую наш угол и выводим результат.
    	float res = CalcAngle(X, Y, nX, nY);
    	cout << "Result: " << res << endl;
    	float fResult = CalcRadians(res);
    	cout << "Finish Result: " << fResult << endl;
    	system("PAUSE");
    }
    
    float CalcAngle(float X, float Y, float nX, float nY)
    {
    
    	// Различие между нами и целью по оси X и Y
    	double Xdiff;
    	double Ydiff;
    	// Угол 
    	double AngleA;
    
    	// Времянка :D
    	double tmp;
    
    	// Разбиваем работу на 4 секции
    	// Section 1
    	if (nY > Y && nX <= X)
    	{
    		Ydiff = nY - Y;
    		Xdiff = X - nX;
    		// Умножаем на 57.29578 для перевода из радиан в градусы.
    		AngleA = atan(Xdiff / Ydiff) * 57.29578;
    		
    		tmp = 0 - AngleA;
    
    	}
    	// Section 2 
    	if (nY <= Y && nX < X)
    	{
    		Ydiff = Y - nY;
    		Xdiff = X - nX;
    
    		AngleA = atan(Xdiff / Ydiff) * 57.29578;
    		
    		tmp = (180 - AngleA)*-1;
    	
    
    	}
    	// Section 3
    	if (nY < Y && nX >= X)
    	{
    		Ydiff = Y - nY;
    		Xdiff = nX - X;
    
    		AngleA = atan(Xdiff / Ydiff) * 57.29578;
    		
    
    		tmp = 180 - AngleA;
    
    	}
    	// Section 4
    	if (nY >= Y && nX > X)
    	{
    		Ydiff = nY - Y;
    		Xdiff = nX - X;
    
    		AngleA = atan(Xdiff / Ydiff)  * 57.29578;
    		
    
    		tmp = 0 + AngleA;
    
    	}
    	return tmp;
    }
    
    float CalcRadians(float angle)
    {
    	// Возвращаем в радианы
    	angle = angle / 57.29578; 
    
    	return angle;
    }

     

     

     

    Честно не помню под какую игру тут были расчеты, но суть, что в игре угол обзора был от -3.14 до 3.14 

    И в итоге это выглядело вот так

    https://drive.google.com/open?id=12OprCTzivVEVdIUxVnfpJfwh6xsXnbpt

     

    P.S. Извеняюсь, что-то не обратил внимания на C# в заголовке, пример на C++ хотя может тоже поможет. Сори.

     

  15. 3 часа назад, JustStudy сказал:

    Но вот хотелось поглядеть, что тут пишут

    Я тебе аж 2шт кинул. Оба на 100% рабочие) сами функции инжекта пашут, оберни в гуй или юзай консольный вариант

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.