TimaS Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 ЗАКРЫТО. КОПИЯ ТЕМЫ Доброго времени суток всем! Недавно создавал почти такую тему, но там была другая ошибка, которую я не заметил, и я только сейчас это понял Сделал программу которая ищет значение указанного указателя, но если я укажу "0x07BBD9C" (то есть "007BBD9C") то программу убирает нули и адрес указателя становится другим то есть "7BBD9C" таким и это уже другой указатель, как сделать чтобы программа не срезала нули и искала сразу "007BBD9C" Спойлер #include <windows.h> #include <iostream> #include "MemMan.h" using namespace std; MemMan MemClass; struct variables { DWORD baseAddress = 0x07BBD9C; //LocalPlayer - тут проблема DWORD health_offset = 0x1E0; DWORD offset1 = 0x7C; DWORD offset2 = 0x5D8; DWORD offset3 = 0x100; // offset of recoil DWORD health; DWORD pAddress1; DWORD pAddress2; DWORD pAddress3; DWORD gameModule; DWORD procId; DWORD LocalPlayer; } val; int main() { val.procId = MemClass.getProcess("hl.exe"); if (val.procId == NULL) { cout << "Game Not Found!" << endl; cin.get(); } val.gameModule = MemClass.getModule(val.procId, "hw.dll"); val.LocalPlayer = MemClass.readMem<DWORD>(val.gameModule + val.baseAddress); if (val.LocalPlayer != NULL) { val.health = MemClass.readMem<DWORD>(val.LocalPlayer + val.health_offset); while (true) { cout << val.health << endl; Sleep(200); } } else { } } Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 0x07BBD9C == 0x7BBD9C Это два одинаковых значение. Вывести на экран можно с нулями и без, смотря как ты это делаешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 1 час назад, TimaS сказал: как сделать чтобы программа не срезала нули и искала сразу "007BBD9C" Почитать основы по работе с памятью для интересующего тебя языка. Ссылка на комментарий Поделиться на другие сайты Поделиться
TimaS Опубликовано 15 мая, 2019 Автор Поделиться Опубликовано 15 мая, 2019 6 минут назад, partoftheworlD сказал: Почитать основы по работе с памятью для интересующего тебя языка. язык с++ Поискал в гугле, ничего полезного не нашел, там вставляют адреса как "0xadress", так же и у меня ( но не работают ) 57 минут назад, Hack сказал: 0x07BBD9C == 0x7BBD9C Это два одинаковых значение. У меня 2 таких указателей, один указывает на структуру игрока то есть 007BBD9C, а другая на что-то ещё, 7BBD9C 59 минут назад, Hack сказал: Вывести на экран можно с нулями и без, смотря как ты это делаешь. Хотелось бы узнать это у вас, так как у гугле ничего подобного не нашел, в с++ я ещё новичок Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 printf("%lX\n", value); printf("%08lX\n", value); printf("%p\n", value); Ссылка на комментарий Поделиться на другие сайты Поделиться
TimaS Опубликовано 15 мая, 2019 Автор Поделиться Опубликовано 15 мая, 2019 1 час назад, Hack сказал: 0x07BBD9C == 0x7BBD9C Это два одинаковых значение. Да, понял это, но почему у меня не получается читать и писать в память? может я делаю что-то не так? пожалуйста посмотрите мой код: Спойлер #include <windows.h> #include <iostream> #include "MemMan.h" using namespace std; MemMan MemClass; struct variables { DWORD baseAddress = 0x07BBD9C; //LocalPlayer DWORD money = 0x012B13B4; // Деньги DWORD health_offset = 0x1E0; // Смещение Здоровья DWORD offset1 = 0x7C; // Смещение 1 DWORD offset2 = 0x5D8; // Смещение 2 DWORD offset3 = 0x100; // Смещение отдачи DWORD health; // переменная для здоровья DWORD pAddress1; // переменная для адреса 1 DWORD pAddress2; // переменная для адреса 2 DWORD pAddress3; // переменная для адреса 3 DWORD gameModule; // переменная для модуля DWORD procId; // переменная для процесса DWORD LocalPlayer; // LocalPlayer } val; int main() { val.procId = MemClass.getProcess("hl.exe"); // нахожу игру if (val.procId == NULL) { cout << "Game Not Found!" << endl; // не нашел игру cin.get(); } val.gameModule = MemClass.getModule(val.procId, "hw.dll"); // нахожу модуль игры (где хранятся данные, патроны и т д) val.LocalPlayer = MemClass.readMem<DWORD>(val.gameModule + val.baseAddress); // нахожу указатель на структуру локального игрока val.pAddress1 = MemClass.readMem<DWORD>(val.LocalPlayer + val.offset1); // прибавляю 1 уровень смещения val.pAddress2 = MemClass.readMem<DWORD>(val.pAddress1 + val.offset2); // прибавляю 2 уровень смещения val.pAddress3 = MemClass.readMem<DWORD>(val.pAddress2 + val.offset3); // прибавляю 3 уровень смещения то есть отдача if (val.LocalPlayer != NULL) { while (true) { if (val.procId == NULL) { cout << "Game Not Found!" << endl; cin.get(); break; } MemClass.writeMem<DWORD>(val.pAddress3, 0); // записываю 0 каждые 10 милисекунд, чтобы отдача не увеличевалась Sleep(10); } } else { } } Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 Может так? val.pAddress3 = val.pAddress2 + val.offset3; Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения