как можно анимировать текстуры? например смена цвет градиентом
Решил я, с великого и неповторимого ассемблера, с целью интереса перейти на время на Си
Программа простая
1) Подключаб user32.dll
2) Вызываю оттуда функцию MessageBoxA чтобы вывести на экран сообщение
3) Выделяю виртуальную память в размере 256 байт
4) Создаю указатели типа char, передаю туда байты
5) Использую strcpy с целью заполнения значениями функцию MessageBoxA, чтобы на экране вывело:
Заголовок: ShellCode Works
А текст: test
А далее уже идет сам шеллкод, с ним вроде с норм, основная проблема заключается хер пойми в чем
Сам код:
С:#include <windows.h> #include <stdio.h> int main() { HMODULE hUser32 = LoadLibraryA("user32.dll"); FARPROC pMessageBoxA = GetProcAddress(hUser32, "MessageBoxA"); printf("MessageBoxA address: 0x%p\n", pMessageBoxA); PVOID pMemory = VirtualAlloc(NULL, 256, MEM_COMMIT, PAGE_EXECUTE_READWRITE); char* caption = (char*)pMemory + 100; char* text = (char*)pMemory + 120; strcpy(caption, "Shellcode Works!"); strcpy(text, "test"); unsigned char shellcode[50]; int pos = 0; shellcode[pos++] = 0x6A; shellcode[pos++] = 0x00; shellcode[pos++] = 0x68; memcpy(shellcode + pos, &caption, 4); pos += 4; shellcode[pos++] = 0x68; memcpy(shellcode + pos, &text, 4); pos += 4; shellcode[pos++] = 0x6A; shellcode[pos++] = 0x00; // тут вызываю messagebox shellcode[pos++] = 0xB8; memcpy(shellcode + pos, &pMessageBoxA, 4); pos += 4; // call eax shellcode[pos++] = 0xFF; shellcode[pos++] = 0xD0; // ret shellcode[pos++] = 0xC3; memcpy(pMemory, shellcode, pos); HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)pMemory, NULL, 0, NULL); if (hThread) { WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); printf("Shellcode executed successfully\n"); } VirtualFree(pMemory, 0, MEM_RELEASE); FreeLibrary(hUser32); return 0; }
Ошибка:
Посмотреть вложение 279395
Я пытался через memcpy передать значения для MessageBox, не помогло
Шатал я ваши языки выше асма)
// Перед подключением всех заголовков / инклюдов
#define _CRT_SECURE_NO_WARNINGS
Жески тип, юзай плюсы https://github.com/reo7sp/tgbotcppУ меня есть некие скопированные данные, как сделать так чтобы эти данные отправлялись моему боту в тг по апи его?
Я пытался через winhttp, но чет не работает.
На Си
Тогда уж на curl + openssl писать, как раз под си, но все апи придется самому реализовывать, параллельно читая доку к бот апи тг. Как по мне, легче взять готовое, отработанное решение, чем городить лясопедыМужики все делают на TCP![]()
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
Все инструкции есть в репозитории. Ставь WSL с ubuntu какой-нибудь и на ней собирайПриветствую, пытаюсь собрать загрузчик состоящих из двух частей - серверной и клиентской, с клиентской стороны все нормально клиент лоадер собран, а вот с серверной возникли проблемы, собрал директорию с помощью cmake, далее пытался собрать sln решение, но как мне подсказал интернет оно написано для linux -
Как мне быть? Скачать образ и накатить на виртуальную машину? Или собрать через Windows Subsystem for Linux? Какого формата будет скомпилированный файл и как его запустить на локалке?C++:#include <arpa/inet.h> #include <netdb.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h>
Или я движусь совсем не в том направлении? Типо как мне собрать sln файл на линукс (этого я не понимаю) если там 2к ошибок, что-то не так явно
Сурс (https://github.com/EquiNoxAdv/loader-master)
Хук на WndProcКак проверить, была ли отпущена определённая клавиша? Например: wasKeyReleased(vkeys.VK_RBUTTON)
RakNet::BitStream bs;
bs.ResetWritePointer();
Synchronization::OnfootData onfootData{};
std::memcpy(&onfootData,
&RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData,
sizeof(Synchronization::OnfootData));
onfootData.m_controllerState.m_bPedWalk = 1;
onfootData.m_controllerState.m_value = static_cast<uint8_t>(1024);
bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
onfootData.m_controllerState.m_bPedWalk = 0;
onfootData.m_controllerState.m_value = static_cast<uint8_t>(0);
bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = 0;
input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
input[0].ki.wScan = 0x38;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = 0;
input[1].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
input[1].ki.wScan = 0x38;
SendInput(2, input, sizeof(INPUT));
ратку опять кинь, прожмется алтАльт как прожать? Так не воркает:
А так прожимает только 1 раз + ко всему - костыльС++:RakNet::BitStream bs; bs.ResetWritePointer(); Synchronization::OnfootData onfootData{}; std::memcpy(&onfootData, &RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData, sizeof(Synchronization::OnfootData)); onfootData.m_controllerState.m_bPedWalk = 1; onfootData.m_controllerState.m_value = static_cast<uint8_t>(1024); bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC)); bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData)); rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1); onfootData.m_controllerState.m_bPedWalk = 0; onfootData.m_controllerState.m_value = static_cast<uint8_t>(0); bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC)); bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData)); rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
C++:input[0].type = INPUT_KEYBOARD; input[0].ki.wVk = 0; input[0].ki.dwFlags = KEYEVENTF_SCANCODE; input[0].ki.wScan = 0x38; input[1].type = INPUT_KEYBOARD; input[1].ki.wVk = 0; input[1].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; input[1].ki.wScan = 0x38; SendInput(2, input, sizeof(INPUT));
забыл? тебе в тг написали ты кинул свой твинк и с него типу ратку кинулиКакую ратку?