Задать вопрос
  • Какстомный парсер цвета строки?

    @dominy Автор вопроса
    <span style="color:red">Hello World</span>
  • Как вырезать компоненты windows?

    @dominy Автор вопроса
    Спасибо, никогда не замечал, но теперь обязательно поэкспериментирую)), позвольте вопрос, чем компоненты windows отличаются от драйверов, раньше мне казалось что службы это теже драйвера...
  • Как вырезать компоненты windows?

    @dominy Автор вопроса
    Hemul GM, спасибо, я понимаю вас, однако любопытство не перебороть)) ну вероятно под проверкой на соответствие компонентов версии вы имели виду что-то типа https://docs.microsoft.com/en-us/windows/security/... но к примеру мой любимый уязвимый AsrDrv101.sys до сих пор является легальным драйвером для всех b150 чипсетов от мат.плат Asrock и работает при eac/vac... Я понимаю что создать качественною сборку у меня вряд ли получится, но я просто стремлюсь к знаниям))
  • Как вырезать компоненты windows?

    @dominy Автор вопроса
    Hemul GM, ну интересно же как другие это делают :) — да и стабильность и безопасность не самое важное для начинающего читера :)
  • Как вырезать компоненты windows?

    @dominy Автор вопроса
    Спасибо, но это ведь из-за академического любопытства, нужно с чего-то начинать))
  • Как отключить перерисовку формы чужому приложению?

    @dominy Автор вопроса
    Wataru, я експериментирою с так называемым методом "window hijacking" заставляющим окно рисовать нужною мне графику (gdi можжно заменить на directX/OpenGl/Vulkan и можно будет не использовать hdc)
    Пример
    #include <Windows.h>
    #include <stdio.h>
    #define TRANSPARENCY_COLOR RGB(0, 254, 0)
    #define MAX_PATH 256
    
    using namespace std;
    
    char* concat(char* s1, char* s2) {
    	size_t len1 = strlen(s1);
    	size_t len2 = strlen(s2);
    	char* result = (char*)malloc(len1 + len2 + 1);
    	memcpy(result, s1, len1);
    	memcpy(result + len1, s2, len2 + 1);
    	return result;
    }
    void removeBn(char* str) {
    	size_t ln = strlen(str) - 1;
    	if (*str && str[ln] == '\n')
    		str[ln] = '\0';
    }
    
    int main() {
    	char* targetAppToHijack = new char[MAX_PATH];
    	printf("Enter Target App To Hijack Example-\"notepad.exe\"\n");
    
    	fgets(targetAppToHijack, MAX_PATH, stdin);
    	char* command = concat((char*)"cmd, /c start /min ", targetAppToHijack);
    
    	unsigned char targetWindowState = 0;
    	system(command);
    
    	char* targetWindowToHijack = new char[MAX_PATH];
    	printf("Enter Target Window To Hijack Example-\"Untitled - Notepad\"\n");
    	fgets(targetWindowToHijack, MAX_PATH, stdin);
    	removeBn(targetWindowToHijack);
    
    	HWND hwnd;
    findTargetHwnd:
    	hwnd = FindWindowA(NULL, targetWindowToHijack);
    	if (!hwnd) {
    		Sleep(500);
    		goto findTargetHwnd;
    	}
    
    
    
    	SetMenu(hwnd, NULL);
    	SetWindowLongPtr(hwnd, GWL_STYLE, WS_VISIBLE);
    	SetWindowLongPtr(hwnd, GWL_EXSTYLE, WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
    	SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_HIDEWINDOW);
    	SetLayeredWindowAttributes(hwnd, TRANSPARENCY_COLOR, 0, LWA_COLORKEY);
    
    	DEVMODE devMode;
    	devMode.dmSize = sizeof(devMode);
    	EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode);
    	BITMAPINFO backBufferBmpInfo;
    	backBufferBmpInfo = { 0 };
    	backBufferBmpInfo.bmiHeader.biBitCount = devMode.dmBitsPerPel;
    	backBufferBmpInfo.bmiHeader.biHeight = GetSystemMetrics(SM_CYSCREEN);
    	backBufferBmpInfo.bmiHeader.biWidth = GetSystemMetrics(SM_CXSCREEN);
    	backBufferBmpInfo.bmiHeader.biPlanes = 1;
    	backBufferBmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    
    	void* backBufferPixels = nullptr;
    	POINT res = { GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN) };
    	HBRUSH bgTransparencyColor = CreateSolidBrush(TRANSPARENCY_COLOR);
    	int i = -1;
    
    	HDC hdc = GetDC(hwnd);
    	HDC hdcBackBuffer = CreateCompatibleDC(hdc);
    	SetBkMode(hdcBackBuffer, TRANSPARENT);
    	HBITMAP hbmBackBuffer = CreateDIBSection(hdcBackBuffer, (BITMAPINFO*)&backBufferBmpInfo, DIB_RGB_COLORS, (void**)&backBufferPixels, NULL, 0);
    	DeleteObject(SelectObject(hdcBackBuffer, hbmBackBuffer));
    	DeleteObject(SelectObject(hdcBackBuffer, bgTransparencyColor));
    	while (true) {
    		Sleep(16);
    		i = (i > res.x) ? 0 : ++i;
    
    		Rectangle(hdcBackBuffer, 0, 0, res.x, res.y);
    
    		RECT textPos;
    		textPos.left = i;
    		textPos.right = i;
    		textPos.top = res.y / 2;
    		textPos.bottom = res.y / 2;
    		SetTextColor(hdcBackBuffer, RGB(255, 255, 255));
    		DrawTextExW(hdcBackBuffer, (wchar_t*)L"!Hi!", 4, &textPos, DT_CENTER | DT_NOCLIP | DT_NOPREFIX, NULL);
    
    		if (targetWindowState == 0) {
    			targetWindowState = 1;
    			PostMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
    		}
    		BitBlt(hdc, 0, 0, res.x, res.y, hdcBackBuffer, 0, 0, SRCCOPY);
    
    		backBufferPixels = nullptr;
    	}
    	DeleteDC(hdcBackBuffer);
    	DeleteObject(hbmBackBuffer);
    }

    Но если окно часто перерисововается то начинает мерцать... И я думаю как избавится от мерцаний... (пока не придумал нечего кроме как отключить перерисовку окна) - используя procExp я обнаружил что Suspected процес не перирисовувается и я могу выводить через него нужно графику
    Но оказалось что если целью hijacking-а будет osk.exe то после Suspect-а клавиатура и мишь начинают лагать...
    Также в коде сущевствует мерцание появления
    if (targetWindowState == 0) {
    			targetWindowState = 1;
    			PostMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
    		}
    		BitBlt(hdc, 0, 0, res.x, res.y, hdcBackBuffer, 0, 0, SRCCOPY);

    потому что BitBlt не работает на минифицированом окне... иногда оно не заметно но хотелось бы сделать лучше))
  • Приложение показывающее все открытые окна?

    @dominy Автор вопроса
    NewDevLab, Спасибо, судя по описанию она предоставляется с VisualStudio, но как ее найти (vs2019)
  • Почему function definition not found?

    @dominy Автор вопроса
    jcmvbkbc, Просто хотел бы чтоб калькулятор был 64bit (в образовательных целях) и работал))
  • Почему function definition not found?

    @dominy Автор вопроса
    jcmvbkbc, Спасибо, позвольте спросить, как cделать так чтоб хотя программа компилируется в x64, asm-функция компилилась в x32 и работала в x64бит приложении
  • Почему function definition not found?

    @dominy Автор вопроса
    Спасибо но даже так предупреждение компилятор не убрал...
  • Как рисовать черный пиксель поверх любого приложения без окна?

    @dominy Автор вопроса
    edward_freedom, Но тогда мне прийдется открывать хендл игры что использовать рисковано, я хотел бы просто рисовать поверх всего и чтоб никакое приложение не сделало скрин пикселя...)
  • Как рисовать черный пиксель поверх любого приложения без окна?

    @dominy Автор вопроса
    Василий Банников, Он закрывает слишком много обзора если использовать синюю изоленту)) Хочется чего то по профессиональнее))
  • Как передать в функцию указатель если она принимает ссылку?

    @dominy Автор вопроса
    Спасибо, с массивами ето отлично работает, но
    тогда я не могу сделать так
    uint8_t var;
    	readMyMemory<uint8_t>(0x12345, 1, var);

    А я хотел бы найти универсальный вариант позволяющий читать и массив и просто переменною, эсли такое возможно))
  • Как прочитать масив данных динамической длинны?

    @dominy Автор вопроса
    Спасибо, я изменил функцию ище раз
    template <typename type>
    	static void readMemory(uintptr_t offset, unsigned int length, type& var) {
    		ReadProcessMemory(targetHandle, (LPVOID)offset, &var, length * sizeof(type), 0);
    	}

    и использою в таком виде (работает)
    int val; readMemory<int>(0x18872345, 1, val);
    однако прочитать масив символов в таком же виде не получается
    wchar_t* str = new wchar_t[nameLength]; readMemory<wchar_t*>(0x2834543, 16, str);

    после инициализации str, str ==
    0xcccccccccccccccc <Error reading characters of string.>	wchar_t *

    после чтения в str, str ==
    0x0061007200740073 <Error reading characters of string.>	wchar_t *
  • Как прочитать масив данных динамической длинны?

    @dominy Автор вопроса
    Спасибо, я переписал библиотеку
    template <typename type>
    	static type readMemory(uintptr_t offset, unsigned int length) {
    		type value;
    		isLastSuccessful = ReadProcessMemory(targetHandle, (LPVOID)offset, &value, length * sizeof(type), 0);
    		return value;
    	}


    Но кода я пытаюсь прочитать через
    wchar_t* playerName = new wchar_t[length];
    playerName = readMemory<wchar_t>(adr, nameLength);

    получаю Error C2440 '=': cannot convert from 'type' to 'wchar_t *'
  • Возможно ли автоматическое добавление переменной компилятором в namespace?

    @dominy Автор вопроса
    Mercury13, Спасибо, но адрес, к сожалению, не константа, в общем пока что я решил просто по разному именовать переменные
    uintptr_t adrEntitiesCount = processManager.getModuleBaseAddress((WCHAR*)L"GameAssembly.dll");
    int valEntitiesCount = processManager.readMemory<int>(adrEntitiesCount);

    Но был бы рад если возможно сделать лучше))
  • Возможно ли автоматическое добавление переменной компилятором в namespace?

    @dominy Автор вопроса
    Спасибо, а моги ли я както отделить две переменные с одинаковым названием но разными типами.
    Тоесть у меня есть адрес в uintptr_t - он нужен всегда, но иногда (не всегда) я получаю результат чтения по етому адресу.
    Переменная адреса и результат чтения названы однаково, различается лишь тип и их данные. Как я могу удобно для себя отсортировать их. Пример того что я пытаюсь сделать
    uintptr_t Addresses::entitiesCount = 12943454;
    int entitiesCount = processManager.readMemory<int>(Addresses::entitiesCount);

    Тогда получилось бы что я спокойно могу и достать Addresses::entitiesCount и когда нужно присвоить int entitiesCount - но как такое реализовать правильно
  • Как поставить simpleBar слева?

    @dominy Автор вопроса
    smigles, Спасибо, простите, к примеру я зашел на сайт с примером simpleBar https://grsmto.github.io/simplebar/examples/ и в первом примере в класс col добавил direction: rtl онако скролл по прежнему справа https://cdn1.savepice.ru/uploads/2021/8/4/e217dfef...
  • Как сделать светящийся скролл?

    @dominy Автор вопроса
    Спасибо, я питался найти реализацию скролла в vuetify, но не нашел нечего похожего, у vuetify нет реализации скролла?
  • Как отлаживать css?

    @dominy Автор вопроса
    Хотя теоретичеси метод универсален и если можно js-ом получить размер скролла то то можно и
    --realtime-scroll-width: v-bind(realtimeScrollWidth).

    Я тут подумал, раз я могу поставить значение, как-бы хотелось сюда прикрутить директиву Vue 3, дающею значение в realtime-scroll-width.
    Тоесть раз я могу поставить директиву в template-часть поддерживает ли vue какое либо апи для css (кроме связывания переменных) создаюшее что-то на подобие директив...