samp is meme
Активный
- 183
- 63
Ты не правильно перевел даже близко, оно не могло работать(если говоришь "В принципе, он работает", то ты не набрал достаточную скорость чтобы сработала функция падения), почитай что делаетПеределал AntiBikeFall (ремень) internal в external. В принципе, он работает. Однако при столкновении на большой скорости игра крашит.
В чем может быть проблема?
*(BYTE*)0x4BA3B9 = 0xE9;
memset((PVOID)0x4BA3BC, 0x00, 2);
Тебе и не нужно их использовать, ты должен знать что они делают, а ты не знаешь. Вот пример(с мемсет такой же код)Есть такое)
memset использовать не могу:
Посмотреть вложение 55876
BYTE использовать не могу:
Посмотреть вложение 55875
int bufMoney = 444;
WriteProcessMemory(hProcess, (LPVOID)0xB7CE50, &bufMoney, 4 /*sizeof(DWORD)*/, nullptr); //*(*DWORD)0xB7CE50 = 444
#pragma execution_character_set("utf-8")Как сделать чтоб русский текст из imgui::InputText в чат выводился нормальным а не каракулями
Хз поможет ли это но я уже сделал#pragma execution_character_set("utf-8")
Ты снимаешь протекты текущего процесса, а не в том где ты работаешь с памятью.Переделал AntiBikeFall (ремень) internal в external. В принципе, он работает. Однако при столкновении на большой скорости игра крашит.
В чем может быть проблема?
C++:VirtualProtect((PVOID)0x4BA3B9, 6, PAGE_EXECUTE_READWRITE, NULL); VirtualProtect((PVOID)0x4B3296, 3, PAGE_EXECUTE_READWRITE, NULL); DWORD one = 0x4BA3B9; DWORD two = 0x4BA3BA; DWORD three = 0x4BA3BB; DWORD four = 0x4BA3BF; DWORD five = 0x4BA3BC; DWORD six = 0x4B3296; one = 0xE9; two = 0xA7; three = 0x03; ReadProcessMemory(hProcess, (LPVOID)0x4BA3B9, &one, sizeof(one), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BA, &two, sizeof(two), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BB, &three, sizeof(three), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BF, &four, sizeof(four), 0); WriteProcessMemory(hProcess, (PVOID)(five + 0x00 + 2), &five, 3, 0); WriteProcessMemory(hProcess, (LPVOID)(six + 0x90 + 3), (LPVOID)&six, 3, NULL);
Вот такой был интернал:
C++:VirtualProtect((PVOID)0x4BA3B9, 6, PAGE_EXECUTE_READWRITE, NULL); VirtualProtect((PVOID)0x4B3296, 3, PAGE_EXECUTE_READWRITE, NULL); *(BYTE*)0x4BA3B9 = 0xE9; *(BYTE*)0x4BA3BA = 0xA7; *(BYTE*)0x4BA3BB = 0x03; memset((PVOID)0x4BA3BC, 0x00, 2); *(BYTE*)0x4BA3BF + 0x90; memset((PVOID)0x4B3296, 0x90, 3);
Так же как и с дворд у меня в примере, только это 1 байтКак здесь работать с *(BYTE*)?
typedef unsigned char BYTE; |
LPCVOID - это const void*, кастуй.а по поводу memset, разве так надо это записывать?
Он не позволяет туда значение типа int вставлять
Посмотреть вложение 55936
А тут как раз int
Посмотреть вложение 55937
не правильноWriteProcessMemory(hProcess, (LPVOID)0x4B3296, newi, 3, nullptr);
Мдаааа.... Ты опять даже близко не подошел. Все что тебе нужно в моих сообщениях, но ты их не понял и никак не применил(если ваще читал). Код за тебя никто писать не будет, я тебе подсказал все что нужно, а ты продолжаешь пихать отсебятину которая не будет работать даже в теории. Продолжай писать на рандоме и у тебя ничего не получится или попытайся понять что и как работает@DolgorukovGTA @RTD оценку?
C++:DWORD one = 0x4BA3B9; DWORD two = 0x4BA3BA; DWORD three = 0x4BA3BB; DWORD four = 0x4BA3BF; one = 0xE9; two = 0xA7; three = 0x03; ReadProcessMemory(hProcess, (LPVOID)0x4BA3B9, &one, sizeof(one), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BA, &two, sizeof(two), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BB, &three, sizeof(three), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BF, &four, sizeof(four), 0); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3B9, &one, 1 , nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3BA, &two, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3BB, &three, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3BF, &four, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)(0x4BA3BF +0x90), &four, 1, nullptr); const int i = 0x90; const void* newi = &i; WriteProcessMemory(hProcess, (LPVOID)0x4BA3BC, 0x00, 2, nullptr); WriteProcessMemory(hProcess, (LPVOID)0x4B3296, newi, 3, nullptr); }
Ты же указатель передаёшь.@DolgorukovGTA @RTD оценку?
C++:DWORD one = 0x4BA3B9; DWORD two = 0x4BA3BA; DWORD three = 0x4BA3BB; DWORD four = 0x4BA3BF; one = 0xE9; two = 0xA7; three = 0x03; ReadProcessMemory(hProcess, (LPVOID)0x4BA3B9, &one, sizeof(one), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BA, &two, sizeof(two), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BB, &three, sizeof(three), 0); ReadProcessMemory(hProcess, (LPVOID)0x4BA3BF, &four, sizeof(four), 0); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3B9, &one, 1 , nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3BA, &two, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3BB, &three, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)0x4BA3BF, &four, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID) * (BYTE*)(0x4BA3BF +0x90), &four, 1, nullptr); const int i = 0x90; const void* newi = &i; WriteProcessMemory(hProcess, (LPVOID)0x4BA3BC, 0x00, 2, nullptr); WriteProcessMemory(hProcess, (LPVOID)0x4B3296, newi, 3, nullptr); }
Зачем многоуровневый указатель? И у тебя переменная имеет такой же идентификатор (имя), что и указатель на неё. Обычно к переменным-указателям добавляют "ptr" в конец или "p" в начало.😭
C++:const int i = 0x90; const void*i = &i; WriteProcessMemory(hProcess, (LPVOID)0x4BA3BC, 0x00, 2, nullptr); WriteProcessMemory(hProcess, (LPVOID)0x4B3296, &i , 3, nullptr);
Что ты творишь? Я тебе такого не советовал. Передавай в функцию указатель, он берётся при помощи операнда &. Либо же создай переменную-указатель и передавай её.Посмотреть вложение 56066
C++:typedef unsigned char BYTE; BYTE one = 0xE9; BYTE two = 0xA7; BYTE three = 0x03; BYTE four = (0x4BA3BF + 0x90); WriteProcessMemory(hProcess, (LPVOID)0x4BA3B9, &one, 1 , nullptr); WriteProcessMemory(hProcess, (LPVOID)0x4BA3BA, &two, 1, nullptr); WriteProcessMemory(hProcess, (LPVOID)0x4BA3BB, &three, 1, nullptr); const int i = 0x90; const void* iptr = &i; WriteProcessMemory(hProcess, (LPVOID)0x4BA3BC, 0x00, 2, nullptr); WriteProcessMemory(hProcess, (LPVOID)0x4B3296, &i , 3, nullptr); WriteProcessMemory(hProcess, (LPVOID)(0x4BA3BF + 0x90),&four, 1, nullptr);
uint8_t number = 8;
uint8_t* pNumber = &number;
printf("%p\n", pNumber); // выведет адрес переменной, на которую ссылается указатель
printf("%i\n", number); // выведет значение переменной
printf("%i\n", *pNumber); // разыменуем указатель, выведет значение
#include <stdio.h>
#include <stdint.h>
void f(void* param)
{
uint8_t* pNumber = (uint8_t*)param; // типизируем указатель
uint8_t number = *pNumber; // разыменовываем указатель
printf("%i\n", number);
}
int main()
{
uint8_t number = 88;
void* pNumber = (void*)&number; // типизируем указатель
f(pNumber); // вызываем функцию
return 0;
}