vadik111 Опубликовано 19 января, 2018 Поделиться Опубликовано 19 января, 2018 Ребят привет, юзаю C++. Вопрос. У меня есть адрес указателя но если я пишу в него свое значение то пойнтер в СЕ в вопросики превращается и пойнтер тупо не работает больше(надо игру перезапускать) вот что я делаю: int newValue = 353; WriteProcessMemory(handle, (LPVOID)0x001B4E84, &newValue, sizeof(newValue), 0); Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 января, 2018 Поделиться Опубликовано 19 января, 2018 Найди другой указатель, который бы не отваливался. Ссылка на комментарий Поделиться на другие сайты Поделиться
vadik111 Опубликовано 19 января, 2018 Автор Поделиться Опубликовано 19 января, 2018 Ну вот у меня есть в CE пойнтер здоровья, если я там его меняю на здоровье которое я хочу то оно меняется и все вроде норм, но как это в C++ реализовать то ? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 января, 2018 Поделиться Опубликовано 19 января, 2018 читаешь адрес получаешь указатель на значение, пишешь в этот указатель и значение меняется. ReadProcessMemory(handle, (LPVOID)0x001B4E84, &ptrBiffer, sizeof(ptrBiffer), 0); WriteProcessMemory(handle, (LPVOID)ptrBiffer, &newValue, sizeof(newValue), 0); Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 января, 2018 Поделиться Опубликовано 19 января, 2018 4 часа назад, vadik111 сказал: Измена значения Извините не по теме не удержался. ИЗМЕНА - улыбнуло. Ссылка на комментарий Поделиться на другие сайты Поделиться
vadik111 Опубликовано 20 января, 2018 Автор Поделиться Опубликовано 20 января, 2018 Не работает, он вместо здоровья вообще другое значение берет Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 20 января, 2018 Поделиться Опубликовано 20 января, 2018 48 минут назад, vadik111 сказал: Не работает, он вместо здоровья вообще другое значение берет Извини но Цитата Ванга Дата смерти: 11 августа 1996 (85 лет) по этому приложи код и больше информации. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
vadik111 Опубликовано 23 января, 2018 Автор Поделиться Опубликовано 23 января, 2018 (изменено) У меня есть указатель и в C++ он берет непонятную дичь, а в СЕ значение 513. ReadProcessMemory(handle, (LPVOID*)0x010F583C, &readtest, sizeof(readtest), 0); он берет какие-то левые числа, 1014432 и т.д когда в Cheat Engine там значение 513 что делать в данном случае ? Изменено 23 января, 2018 пользователем vadik111 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 23 января, 2018 Поделиться Опубликовано 23 января, 2018 30 минут назад, vadik111 сказал: У меня есть указатель и в C++ он берет непонятную дичь, а в СЕ значение 513. ReadProcessMemory(handle, (LPVOID*)0x010F583C, &readtest, sizeof(readtest), 0); он берет какие-то левые числа, 1014432 и т.д когда в Cheat Engine там значение 513 что делать в данном случае ? Почему не понятную? 1014432 это адрес, в котором и лежит значение 513. Только адрес в десятичной 1014432 - в HEX он будет таким : 000F7AA0. Попробуй теперь записать в него, как тебе написали: В 19.01.2018 в 16:58, kiwipapayamongoose сказал: WriteProcessMemory(handle, (LPVOID)ptrBiffer, &newValue, sizeof(newValue), 0); Цитата WriteProcessMemory(handle, (LPVOID)readtest, &newValue, sizeof(newValue), 0); А лучше ты бы записал видео, что и как делаешь и тебе бы поправили бы ошибку. Потому что мне кажется, что ты не допонял @kiwipapayamongoose. Он тебе написал (Хотя я не знаю С++. но ито это понял): В 19.01.2018 в 16:58, kiwipapayamongoose сказал: читаешь адрес получаешь указатель на значение, пишешь в этот указатель и значение меняется. ReadProcessMemory(handle, (LPVOID)0x001B4E84, &ptrBiffer, sizeof(ptrBiffer), 0); --читаешь адрес получаешь указатель на значение, WriteProcessMemory(handle, (LPVOID)ptrBiffer, &newValue, sizeof(newValue), 0); --пишешь в этот указатель и значение меняется. 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 23 января, 2018 Поделиться Опубликовано 23 января, 2018 2 часа назад, vadik111 сказал: что делать в данном случае ? Правильно все записать. Может поможет это? Видео: Скрытый текст 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
vadik111 Опубликовано 23 января, 2018 Автор Поделиться Опубликовано 23 января, 2018 53 минуты назад, Garik66 сказал: Правильно все записать. Может поможет это? Видео: Скрыть содержимое В C++ так нельзя буквами сделать чтобы туда значение записать Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 23 января, 2018 Поделиться Опубликовано 23 января, 2018 6 минут назад, vadik111 сказал: В C++ так нельзя буквами сделать чтобы туда значение записать Переведи в цифры На видео это видно, спец. оставил адрес, т.е.: writeInteger('[006345d0]+480',1000) Ссылка на комментарий Поделиться на другие сайты Поделиться
vadik111 Опубликовано 5 февраля, 2018 Автор Поделиться Опубликовано 5 февраля, 2018 А как это ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 5 февраля, 2018 Поделиться Опубликовано 5 февраля, 2018 1 час назад, vadik111 сказал: А как это ? Судя по вопросам, мне кажется, рановато ты за это берешься. Сначала нужно освоить, что такое указатели, затем нужно освоить чтение/запись памяти чужих процессов, и только потом пытаться. С наскоку это сделать практически невозможно. Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 5 февраля, 2018 Поделиться Опубликовано 5 февраля, 2018 В 23.01.2018 в 15:11, vadik111 сказал: В C++ так нельзя буквами сделать чтобы туда значение записать в с/с++ есть разыменовывание указателя, обратная получению адреса (&): *ptr тогда можно изменять значение которое в указателе (или просто обращаться к нему для проверки) но т.к. у тебя данные не в своем адресном пространстве, то используются функции записи/чтения в процесс ReadProcessMemory/WriteProcessMemory хотя не очень понятно что ты хочешь Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 5 февраля, 2018 Поделиться Опубликовано 5 февраля, 2018 Пиши Internal cheat, там с этим проблем не бывает (В основном) Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 7 февраля, 2018 Поделиться Опубликовано 7 февраля, 2018 В 05.02.2018 в 20:49, roma91212 сказал: Пиши Internal cheat У человека явные проблемы с простейшими WinAPI функциями и указателями, о чем еще может быть речь? А по теме, скинь свой код, может косякнул где, так же сегодня как домой приду гляну старые проекты, может найду что-то на чтение/запись в сторонний процес. Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 8 февраля, 2018 Поделиться Опубликовано 8 февраля, 2018 Сори, не нашел в своем хламе не чего с работой с памятью быстренько написал код для чтения указателя, если надо, то поясню по строчкам. или запишу видос с пояснением кода. #include <Windows.h> #include <TlHelp32.h> #include <iostream> DWORD PID = NULL; DWORD BaseAddr = NULL; DWORD offs = NULL; char* ProcName = "Tutorial-i386.exe"; int HP; // Портотип bool OpenProc(); int main() { OpenProc(); HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, TRUE, PID); printf("%x \n", hProc); if (hProc != NULL) { // Базовый адрес BaseAddr = 0x400000; printf("0x%x \n", PID); // До тех пор пока не нажмем INSERT while (!GetAsyncKeyState(VK_INSERT)) { if (GetAsyncKeyState(VK_F1) & 1) { printf("Test Memory Read \n"); // Ох... Давно не работал из вне процесса жертвы // Так бы сейчас разименованым указателем жахнул // *(DWORD*) ReadProcessMemory(hProc, (LPVOID*)(BaseAddr + 0x001FD5D0), &offs, 4, NULL); printf("Readed \n Now We need add offset 0x480 to readed Addr 0x%x \n", offs); offs += 0x480; // Ну вот и все, читаем наш оффс ReadProcessMemory(hProc, (LPVOID*)(offs), &HP, 4, NULL); printf("Our HP is %d \n", HP); } } } else { printf("LastError: %x \n", GetLastError()); } system("PAUSE"); return 0; } bool OpenProc() { // Сначала ищем наш процес // как-то так PROCESSENTRY32 pe = { sizeof(PROCESSENTRY32) }; HANDLE hSnapshot; while (!PID) { hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (Process32First(hSnapshot, &pe)) { do { if (!strcmp(pe.szExeFile, ProcName)) { PID = pe.th32ProcessID; printf("We find Process!!! PID: %x \n", PID); break; } } while (Process32Next(hSnapshot, &pe)); } Sleep(1000); } // В любом случае вернем false в PID мы и так все записали раз дошли сюда :) return false; } Как-то так, надеюсь поможет. P.s. для модеров, удалил тег кода, он весь мой код без перехода на след. строку лепит. Не читабельно! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения